Watchtower 自动更新Docker镜像和容器 作者: Hogwarts 发布于: 2023-04-04 更新于: 2023-04-07 分类: 默认分类 运行Docker容器习惯于 docker run 命令。Docker容器不能自动更新,每次遇到软件更新都得停止容器,再启动容器。时间一长就稍感麻烦,并且还需注意镜像的体积。Watchtower 可以自动更新 Docker 镜像与容器,并自动删除旧镜像。 #一、运行命令 docker run -d --name watchtower --restart unless-stopped -p 127.0.0.1:8080:8080 -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -c --schedule "0 0 2 * * *" #二、部分参数详解 ##2.1 自动更新 containrrr/watchtower -c 官方给出的默认启动命令在长期使用后会堆积非常多的标签为 none 的旧镜像,如果放任不管会占用大量的磁盘空间。要避免这种情况可以加入 --cleanup 选项,这样每次更新都会把旧的镜像清理掉。--cleanup 简写为 -c ##2.2 手动更新 docker ps -as #查看容器 docker stop 容器名 #停止容器 docker rm 容器名 #删除容器 docker images #查看镜像 docker rmi 镜像名 #删除镜像 ##2.3 选择性自动更新 假设我们只想更新 `nginx、redis` 这两个容器,我们可以把容器名称追加到启动命令的最后面。 containrrr/watchtower -c nginx redis ##2.4 设置定时更新时间 --schedule "0 0 2 * * *" --schedule, -s 默认情况下 Watchtower 每 5 分钟会轮询一次,格式为 6 字段 Cron 表达式,而非传统的 5 字段,即第一位是秒。比如每天凌晨 2 点检查一次更新。 --interval 3600 --interval, -i 更新检测时间间隔默认单位为秒。比如每隔 1 个小时检查一次更新。interval和schedule,二者只能选择其一,本例选的为 --schedule。 #三、抄录地址 [Watchtower - 自动更新 Docker 镜像与容器](https://p3terx.com/archives/docker-watchtower.html "Watchtower - 自动更新 Docker 镜像与容器") [watchtower 官网](https://containrrr.dev/watchtower/ "watchtower 官网") 标签: docker, watchtower