如何自动清理你的 docker registry 实例

快速安装

如果你使用 docker-compose 运行 docker registry 镜像且 docker-compose.yml 中的 service 称为 registry,此快速安装脚本有效。我建议使用我们关于如何为 Gitlab 安装 docker registry 的示例(尚未提供)。

docker-compose.yml 所在的目录中运行此命令!

install-registry-autocleanup.sh
wget -qO- https://techoverflow.net/scripts/install-registry-autocleanup.sh | sudo bash

需要解释(或不使用 docker-compose)?

Docker registry 实例会存储你推送的每个镜像的每个版本,因此特别是在持续集成环境中,你可能需要定期清理删除所有没有标签的镜像。

执行此操作的命令是

registry-garbage-collect.sh
registry garbage-collect /etc/docker/registry/config.yml -m

你可以使用类似这样的 systemd 服务

registry-gc.service
[Unit]
Description=registry-gc

[Service]
Type=oneshot
ExecStart=/usr/local/bin/docker-compose exec -T registry bin/registry garbage-collect /etc/docker/registry/config.yml -m
WorkingDirectory=/opt/my-registry

和类似这样的定时器

registry-gc.timer
[Unit]
Description=registry-gc

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

每日运行命令。你需要调整 WorkingDirectory 和确切的 docker-compose exec 命令以适合你的需求。

将两个文件复制到 /etc/systemd/system 并使用以下命令启用定时器

enable-registry-gc.sh
sudo systemctl enable registry-gc.timer

你可以随时使用以下命令手动运行它

start-registry-gc.sh
sudo systemctl start registry-gc.service

Check out similar posts by category: Docker