3.5 KiB
3.5 KiB
本文作者:丁辉
Docker部署Watchtower管理容器更新
介绍
Watchtower 是一个开源的容器监控和自动更新工具,设计用于Docker容器环境。它可以监控正在运行的容器及其使用的镜像,当发现镜像有更新时,自动拉取新镜像并重新启动容器。这种自动化管理方式有助于确保部署的应用保持最新状态,从而减少安全风险和改进功能。
快速开始
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
所有容器都会自动更新,也包括 Watchtower 本身。
其他启动参数
-
自动清除旧镜像
docker run -d \ --name watchtower \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --cleanup
--cleanup
选项可以简写为-c
docker run -d \ --name watchtower \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c
-
选择性自动更新
docker run -d \ --name watchtower \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ nginx redis
-
配置容器更新列表
vi ~/.watchtower.list
内容如下
nginx reidis
启动 Watchtower 容器
docker run -d \ --name watchtower \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ $(cat ~/.watchtower.list)
-
设置单个容器自动更新标签
docker run -d \ --name nginx \ --restart always \ --label com.centurylinklabs.watchtower.enable=true \ nginx:latest
启动 Watchtower 容器
docker run -d \ --name watchtower \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --label-enable
--label-enable
可以简写为-e
docker run -d \ --name watchtower \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -ce
-
设置自动更新检查频率
-
--interval
设置更新检测时间间隔单位为秒。docker run -d \ --name watchtower \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --interval 3600
-
--schedule
设置定时检测更新时间。格式为 6 字段 Cron 表达式,而非传统的 5 字段,第一位是秒。比如每天凌晨 2 点检查一次更新
docker run -d \ --name watchtower \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --schedule "0 0 2 * * *"
-
-
手动更新
检查 nginx 是否需要更新
docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --run-once \ nginx
--run-once
可以简写为-R
docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -cR \ nginx
当容器设置过
com.centurylinklabs.watchtower.enable=false
参数则不会更新