Watchtower 是一个非常实用的工具,它自动监视你的 Docker 容器并在发现基础镜像被更新时自动重启容器,使用最新的镜像。这对于确保你的应用程序始终运行最新版本的镜像是非常有帮助的,尤其是在安全更新的情况下。
如何使用 Docker 搭建 Watchtower
首先,你需要在你的系统上安装 Docker。一旦安装好 Docker,你可以通过 Docker 命令行工具来运行 Watchtower 容器。
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
这段命令基本上就是启动了一个 Watchtower 容器,让它能够访问 Docker 守护程序的 UNIX 套接字,从而管理其他容器。
Watchtower 参数详解
--interval <seconds>
: 设置 Watchtower 轮询检查更新的时间间隔,默认是 300 秒。--schedule "0 0 4 * * *"
: 使用 cron 表达式来代替轮询间隔,定义更具体的执行时间。--no-pull
: 禁止 Watchtower 拉取新的镜像。--no-restart
: 禁止 Watchtower 重启容器。--cleanup
: 删除旧版本的镜像。--tlsverify
: 使用 TLS 并验证 Docker 守护程序的 SSL 证书(如果你的 Docker 配置了 TLS)。--label-enable
: 通过标签过滤容器,只更新添加了com.centurylinklabs.watchtower.enable=true
标签的容器。-v /var/run/docker.sock:/var/run/docker.sock
: 允许 Watchtower 访问 Docker 守护进程。
监视特定的容器
如果你只想监视特定的容器(比如 nginx),你可以在运行容器时添加一个标签,然后让 Watchtower 仅监视带有该标签的容器。
- 运行 nginx 容器时添加标签:
docker run -d --name nginx-container --label=com.centurylinklabs.watchtower.enable=true nginx
- 运行 Watchtower 并启用标签过滤:
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--label-enable
忽略特定的容器
如果你想让 Watchtower 忽略特定的容器(比如 drawio),可以通过给该容器添加一个特定的标签来实现:
- 运行 drawio 容器时添加标签以告诉 Watchtower 忽略它:
docker run -d --name drawio-container --label=com.centurylinklabs.watchtower.enable=false drawio
- 确保 Watchtower 在标签模式下运行(如上所述,使用
--label-enable
)。