介绍
借助Watchtower ,只需将新映像推送到 Docker Hub 自己的映像注册表即可更新容器化应用程序的运行版本。Watchtower 将拉取的新映像,正常关闭现有容器,并使用最初部署时使用的相同选项重新启动它。
docker run
1 2 3 4
| $ docker run -d \ --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower
|
docker-compose.yml
1 2 3 4 5 6
| version: "3" services: watchtower: image: containrrr/watchtower volumes: - /var/run/docker.sock:/var/run/docker.sock
|
容器选择
完全排除更新
如果需要排除某些容器,请将com. centurylinklabs.watchtower.enable标签设置为false。为了清楚起见,应该在您希望忽略的容器上设置此值,而不是在了Watchtower上设置此值。
示例
dockerfile
1
| LABEL com.centurylinklabs.watchtower.enable="false"
|
docker run
1
| docker run -d --label=com.centurylinklabs.watchtower.enable=false someimage
|
docker-compose
1 2 3 4 5 6
| version: "3" services: someimage: container_name: someimage labels: - "com.centurylinklabs.watchtower.enable=false"
|
启用更新
相反,如果您只想包含带有启用标签的容器,请在启动时传递--label-enable标志或WATCHTOWER_LABEL_ENABLE环境变量给瞭望塔,并在要监视的容器上设置com. centurylinklabs.watchtower.enable标签,其值为。true
示例
dockerfile
1
| LABEL com.centurylinklabs.watchtower.enable="true"
|
docker run
1
| docker run -d --label=com.centurylinklabs.watchtower.enable=true someimage
|
docker-compose
1 2 3 4 5 6
| version: "3" services: someimage: container_name: someimage labels: - "com.centurylinklabs.watchtower.enable=true"
|
Watchtower 通过根据每个配置的标准进行测试来过滤正在运行的容器。如果满足所有标准,则对容器进行监控。例如: - 如果容器的名称在监控名称列表中(非空--name参数)但未启用(centurylinklabs.watchtower.enable=false),则不会被监控;- 如果容器的名称不在监控名称列表中(非空--name参数),即使启用(centurnlinklabs.watchtower.enable=true且--label-enable设置了flag),也不会被监控;
仅监控
单个容器可以标记为仅受监视(而不更新)。
为此,请在该容器上设置com. centurylinklabs.watchtower.monitor-only标签true。
1
| LABEL com.centurylinklabs.watchtower.monitor-only="true"
|
或者,可以将其指定为docker run命令行的一部分:
1
| docker run -d --label=com.centurylinklabs.watchtower.monitor-only=true someimage
|
当在容器上指定标签时,了望塔会将该容器视为与已设置的标签完全相同WATCHTOWER_MONITOR_ONLY,但效果仅限于单个容器。