BeTrfo

BeTrfo

love

使用 WatchTower 使容器自动化更新(简单用法)

随着 Docker 的普及,基本上 90% 的项目都会提供 Docker 来部署应用并且隔离。部署之前有一些基础经验还好,还能预先设定之后怎么进行更新、数据怎么进行保存。但是有一些对 Docker 几乎不了解的用户来说,可能只能跟着用户文档复制粘贴运行,后续更新相当茫然,只能重新部署一次。
偶然在 Github 发现了 WatchTower 这个项目,我想这可能就是容器更新的最佳解决方案了。

简单介绍#

Watchtower 是一个容器管理工具,推荐的安装方式也是使用 Docker。它能够监视 Docker 中的容器,并在其所依赖的镜像更新之后自动更新容器并恢复数据。

一些优点#

  1. 自动更新,不需要人工进行干预,更新时候会保存所有的数据信息。
  2. 简单易用,默认运行方式也是直接 Docker 运行,不需要其他多余配置。
  3. 自定义程度高,支持配置时间点、更新镜像策略、更新容器策略等。
  4. 轻量级且和现有的服务无缝集成,不需要其他多余的配置

简单上手#

WatchTower 默认只需要执行下以下 Docker 命令就可以运行起来。默认为五分钟去检查一次,启动之后日志里面也会包含每次运行的时间、预计下次运行时间。

docker run -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

这里我们启动时还可以加上一些其他的设置。

  • 设置下默认时区,这里我只直接设置为东八区。
  • 后台运行。
  • 设置重启策略,即使 docker 重启了也还会继续运行。
# -d 后台运行
# -e TZ="Asia/Shanghai" 设置时区为东八区。
# -v /var/run/docker.sock:/var/run/docker.sock 让 WatchTower 可以查询到容器信息。
docker run -d \
           --name watchtower \
           -e TZ="Asia/Shanghai" \
           --restart=always \
           -v /var/run/docker.sock:/var/run/docker.sock \
           containrrr/watchtower

扩展设置#

除了基础的应用,列出了一些比较常用的扩展配置:

  • --run-once 只执行一次。
  • --cleanup 执行完成之后清理未使用的镜像。
  • --include-stopped 停止的容器也去检查下。
  • --schedule 使用 cron 定时策略执行。
  • --interval 使用间隔时间去执行,和 --schedule 这个配置选择一个。

结合以上,可以整理出来一些常用的方式

  1. 手动执行一次对容器镜像的更新,更新的时候包含已停止的容器,并且更新完之后执行一次清理。
docker run --rm \
           --name watchtower \
           -e TZ="Asia/Shanghai" \
           -v /var/run/docker.sock:/var/run/docker.sock \
           containrrr/watchtower \
           --run-once \
           --cleanup \
           --include-stopped

image

  1. 后台运行,每天早上五点执行一次检查(需要注意这里使用的 cron 是六位的,和 linux 系统默认支持的有所不同)。
docker run -d \
           --name watchtower \
           -e TZ="Asia/Shanghai" \
           -v /var/run/docker.sock:/var/run/docker.sock \
           containrrr/watchtower \
           --cleanup \
           --include-stopped \
           --schedule "0 0 5 * * *"

image

  1. 后台运行,每小时执行一次检查(这里的单位是 s,所以一小时设置为 3600)。
docker run -d \
           --name watchtower \
           -e TZ="Asia/Shanghai" \
           -v /var/run/docker.sock:/var/run/docker.sock \
           containrrr/watchtower \
           --cleanup \
           --include-stopped \
           --interval 3600

image

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。