Watchtower 官网: https://github.com/containrrr/watchtower
Watchtower 可以用于自动更新 Docker 镜像与容器。Watchtower 会监视正在运行的容器以及相关的镜像,当检测到 Registry 中的镜像与本地的镜像有差异时,会拉取最新镜像并使用最初部署时相同的参数重新启动相应的容器。
1. 安装运行
Watchtower 本身被打包为 Docker 镜像,因此可以像运行其他容器一样运行它:
1 | docker run -d \ |
运行 Watchtower 后,所有容器都会自动更新,也包括 Watchtower 本身。
默认情况下 Watchtower 每 5 分钟会轮询一次,可以使用--interval
参数指定(单位秒)。
查看帮助文档:
1 | docker run --rm containrrr/watchtower -h |
2. 手动更新
前面的使用方式是让 Watchtower 以 detached(后台)模式在运行并自动更新容器,而 Watchtower 也支持以 foreground(前台)模式来使用,即运行一次退出并删掉容器,来实现手动更新容器。这对于偶尔更新一次那些不在自动更新列表中的容器非常有用。
对于 foreground 模式,需要加上 --run-once
(--run-once
可以简写为 -R
)这个专用的选项。下面的例子 Docker 会运行一次 Watchtower 并检查 aria2-pro 容器的基础镜像更新,最后删掉本次运行创建的 Watchtower 容器。
1 | docker run --rm \ |
3. 更新私有镜像
如果是从私有 Docker 仓库获取镜像,则需提供身份验证凭据和环境变量 REPO_USER 和 REPO_PASS,或者通过将宿主机的 docker 配置文件挂载到容器的根目录下。
通过添加环境变量的方式:
1 | docker run -d \ |
通过挂载宿主机 docker 配置文件的方式:
1 | docker run -d \ |