Watchtower - 自动更新 Docker 镜像与容器

部署

手动创建 dock 配置文件, 以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘(泪的教训):

/etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}

然后重启 Docker 服务:

systemctl restart docker

每天凌晨 1 点更新(北京时间)(推荐)

docker run -d \
    --name watchtower \
    --restart always \
    -e TZ=Asia/Shanghai \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup \
    -s "0 0 1 * * *"

快速启动

执行以下标准命令启动 Watch­tower 容器, 并每 5 分钟一次检查所有容器的镜像是否为最新版, 如发现镜像更新将会自动 停止容器 , 删除容器 , 拉取最新镜像 , 在以之前启动容器的命令 启动容器.

docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower

清理旧镜像

镜像在更新后旧镜像标签会变为 none, 长期自动更新会导致过多的none 镜像占用空间, 加入 --cleanup 参数可以在每次更新后自动删除 none 镜像.

docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup

指定容器更新

如无需自动更新所有稳定运行的容器, 可以配置仅更新指定容器, 只需要在命令后加上容器名. 例如 只更新 nginxredis.

docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
nginx redis

注意指定容器需填写 容器名 , 并非镜像名. 由于部分容器启动时可能没有定义 --name 参数, 请执行 docker ps 查询核对容器名.

配置自动更新频率

Watch­tower 默认每 5 分钟轮询一次, 可以使用以下参数配置更新的频率.

  • --interval,-i 配置更新周期, 默认 300 秒.
  • --schedule,-s 配置定时更新, 使用Cron 表达式, 例如"0 0 1 * * *". 即每天凌晨 1 点更新.

注意:当使用 -s 参数来配置定时更新时, 由于容器内默认为 UTC 时间, 上述设置的 凌晨 1 点  实际上是北京时间  早上 9 点 . 可以通过加上 -e TZ=Asia/Shanghai 环境变量来定义时区, 此时配置的时间则为北京时间.

每小时更新一次

docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
-i 3600

 

每天凌晨 1 点更新(北京时间)(推荐)

docker run -d \
    --name watchtower \
    --restart always \
    -e TZ=Asia/Shanghai \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup \
    -s "0 0 1 * * *"

正文完
 
admin
版权声明:本文于2023-02-23转载自p3terx,共计1655字。
转载提示:此文章非本站原创文章,若需转载请联系原作者获得转载授权。