Watchtower - 自动更新 Docker 镜像与容器
前言
在早前部署Awesome TTRSS
时,作者在docker-compose
里配置了Watchtower
,于是找到 Github 官方项目研究了下,根据官方文档简单整理了一下常用参数以备用.
部署
快速启动
执行以下标准命令启动 Watchtower 容器,并每 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
指定容器更新
如无需自动更新所有稳定运行的容器,可以配置仅更新指定容器,只需要在命令后加上容器名.例如只更新nginx
和redis
.
docker run -d \ --name watchtower \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --cleanup \ nginx redis
配置自动更新频率
Watchtower 默认每 5 分钟轮询一次,可以使用以下参数配置更新的频率.
--interval
,-i
配置更新周期,默认300秒.--schedule
,-s
配置定时更新,使用Cron表达式
,例如"0 0 1 * * *"
.即每天凌晨1点更新.
每小时更新一次
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 * * *"
手动更新
使用手动更新的方式,运行一次Watchtower
容器来更新所需的容器,更新后会自动删除本次运行的Watchtower
容器.只需要加上--rm
和--run-once
参数即可.同时也可以配合以上指定容器
或指定排除容器
的参数来使用.
手动更新所有容器
docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --cleanup \ --run-once
手动更新指定容器
docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --cleanup \ --run-once \ nginx redis
手动运行更新时会出现以下消息,表示正在更新,请耐心等待几分钟.
time="2020-02-18T03:58:24Z" level=info msg="Running a one time update."
随后提示找到更新镜像,停止容器,更新镜像,重启容器并移除旧镜像.至此更新完毕.
time="2020-02-18T04:02:45Z" level=info msg="Found new xxxx/xxxx:latest image (sha256:10383f5b5720d7e1fxxxx137034c69b7f6xxxxxxafcc4e9d508b561af77)" time="2020-02-18T04:02:45Z" level=info msg="Stopping /xxxx (2e9ce1ebe319f3a35d80bxxxxxxxxxx6763ada155da957acb24fe76fc8a8c5) with SIGTERM" time="2020-02-18T04:02:46Z" level=info msg="Creating /xxxx" time="2020-02-18T04:02:46Z" level=info msg="Removing image sha256:ff4ee4caaa237174080c0d545xxxxxxxxxxxxxxx5d740ddc51e7737839cb5"
结语
本站提供免费和付费的技术支持.你可以通过留言,邮件,QQ的方式来进行技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面