Watchtower搭建:让 Docker 容器镜像自动更新
Watchtower 的作用
Watchtower 会自动监控 Docker Hub 或私有仓库中镜像的更新,当发现新版本时,它会停止、拉取新镜像并重新创建容器,保持服务始终运行在最新版本。结合上述参数,可实现按需、定时、自动清理的更新策略。让 Docker 容器镜像保持自动更新
方案一:使用 docker-compose.yml 文件部署
这种方式更适合长期管理和版本控制。创建一个 docker-compose.yml 文件(以下二选一),内容如下:
version: '3'
services:
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
- WATCHTOWER_NO_STARTUP_MESSAGE=true #WATCHTOWER_NO_STARTUP_MESSAGE:用于禁止 Watchtower 启动时在日志中输出欢迎信息,使日志更简洁。(不赋值表示 true)
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 3600 --cleanup --label-enable
#--interval 3600:设置检查更新的时间间隔为 3600 秒(即 1 小时)
#--cleanup:更新容器后,自动删除旧版本的镜像,释放磁盘空间。
#--label-enable:启用基于标签的更新控制。只有那些设置了 com.centurylinklabs.watchtower.enable=true 标签的容器才会被 Watchtower 监控和更新,避免更新所有容器。services:
watchtower:
container_name: watchtower
image: containrrr/watchtower:latest # 使用最新镜像
restart: always # #设置容器在异常退出或系统重启后自动重启,增强服务可用性
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- '/etc/localtime:/etc/localtime:ro' #让容器与宿主机保持相同的时间设置,确保日志时间准确(可用可不用)
environment:
- WATCHTOWER_CLEANUP=true # 更新后自动删除旧映像
- WATCHTOWER_ROLLING_RESTART=true # 容器启动模式
- WATCHTOWER_POLL_INTERVAL=86400 # 每 24 小时检查一次更新
- WATCHTOWER_NO_STARTUP_MESSAGE=true # 禁止在 Watchtower 启动时发送启动消息需要自动更新的容器在对应的docker-compose.yml加入以下代码
labels:
com.centurylinklabs.watchtower.enable: 'true' # 启用watchtower自动更新方案二:使用 docker run 命令快速部署
docker run -d \
--name watchtower \
--restart=unless-stopped \
-e TZ=Asia/Shanghai \
-e WATCHTOWER_NO_STARTUP_MESSAGE=true \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--interval 3600 --cleanup --label-enable方案三:docker管理软件部署
拉取containrrr/watchtower:latest,创建容器更具以下环境变量所需的情况部署
需要自动更新的容器在对应的容器加入以下环境变量
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明出处。
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果