前言
在 Docker Swarm 环境中, 因服务更新, 迁移, 重启等操作, 我们会产生大量无用镜像与容器
如果不及时清理的话, 镜像会快速增长, 导致占满磁盘空间
理论上我们可以在每个节点配置一个清理的定时任务, 但是新增节点及更新定时任务配置的时候会不太方便
此时我们可以使用 Docker Swarm 的 global mode 为所有的 Docker 节点启动一个清理服务副本, 实现新节点加入时自动启动与配置更新时自动同步到所有节点
服务配置
docker-compose.yml
创建 docker-compose.yml 文件, 内容如下
1 | # docker-compose 文件版本, 需与 docker engine 兼容, 否则启动失败 |
其中会用到两个脚本, 需与 docker-compose.yml 在同一文件夹中
docker-entrypoint.sh
1 |
|
run.sh
1 |
|
命令
启动
1 | docker stack deploy --compose-file docker-compose.yml docker-prune |
停止
1 | docker stack rm docker-prune |
更新/重启
1 | 先停止, 再启动, 因为使用到了 docker config, 无法直接更新 |