介绍

借助Watchtower ,只需将新映像推送到 Docker Hub 自己的映像注册表即可更新容器化应用程序的运行版本。Watchtower 将拉取的新映像,正常关闭现有容器,并使用最初部署时使用的相同选项重新启动它。

docker run
$ docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
docker-compose.yml
version: "3"
services:
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock

容器选择

完全排除更新

如果需要排除某些容器,请将com. centurylinklabs.watchtower.enable标签设置为false。为了清楚起见,应该在您希望忽略的容器上设置此值,而不是在了Watchtower上设置此值。

示例

dockerfile
LABEL com.centurylinklabs.watchtower.enable="false"
docker run
docker run -d --label=com.centurylinklabs.watchtower.enable=false someimage
docker-compose
version: "3"
services:
someimage:
container_name: someimage
labels:
- "com.centurylinklabs.watchtower.enable=false"

启用更新

相反,如果您只想包含带有启用标签的容器,请在启动时传递--label-enable标志或WATCHTOWER_LABEL_ENABLE环境变量给瞭望塔,并在要监视的容器上设置com. centurylinklabs.watchtower.enable标签,其值为。true

示例

dockerfile
LABEL com.centurylinklabs.watchtower.enable="true"
docker run
docker run -d --label=com.centurylinklabs.watchtower.enable=true someimage
docker-compose
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

LABEL com.centurylinklabs.watchtower.monitor-only="true"

或者,可以将其指定为docker run命令行的一部分:

docker run -d --label=com.centurylinklabs.watchtower.monitor-only=true someimage

当在容器上指定标签时,了望塔会将该容器视为与已设置的标签完全相同WATCHTOWER_MONITOR_ONLY,但效果仅限于单个容器。