如何每天自动清理(修剪)docker 镜像

注意:这只会移除没有标签的 docker 镜像,而不是所有未关联到运行或停止容器的镜像。如果这不是期望的行为,请参见我们关于如何每天自动清理(修剪)docker 镜像的文章。 docker image prune 提供了一种简单的方法从系统中移除"未使用"(即未标记)的 docker 镜像,因此修复或显著延迟了 docker 占用所有磁盘空间的问题。

我使用 TechOverflow 的简单 systemd 计时器生成器创建了基于 systemd-timer 的每日修剪例程。

使用以下命令快速安装

install_cleanup_docker.sh
wget -qO- https://techoverflow.net/scripts/install-cleanup-docker.sh | sudo bash

这是自动创建和安装两个 systemd 配置文件的脚本。

install-cleanup-docker.sh
#!/bin/sh
# 此脚本通过 "docker image prune" 安装自动 docker 清理
# 到基于 systemd 的系统上。
# 它要求 docker 已正确安装

cat >/etc/systemd/system/PruneDocker.service <<EOF
[Unit]
Description=PruneDocker

[Service]
Type=oneshot
ExecStart=/usr/bin/docker image prune -f
WorkingDirectory=/tmp
EOF

cat >/etc/systemd/system/PruneDocker.timer <<EOF
[Unit]
Description=PruneDocker

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target
EOF

# 启用并启动服务
systemctl enable PruneDocker.timer && sudo systemctl start PruneDocker.timer

要查看日志,使用

view_prune_logs.sh
journalctl -xfu PruneDocker.service

要查看状态,使用

view_prune_status.sh
sudo systemctl status PruneDocker.timer

要立即清理你的 docker 镜像,使用

start_prune_manual.sh
sudo systemctl start PruneDocker.service

Check out similar posts by category: Container, Docker