本文最后更新于 2020年09月26日
目录
简介
Watchtower可以帮助我们快速的自动的更新容器和镜像,完全自动化不需要人工参与
简单事例
# 自动更新rsshub,并清理老旧镜像
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower --cleanup --interval 600 \
rsshub_service.rsshub_1
在命令结尾处添加你要更新的容器名或ID
–参数:请参照官方文档:https://containrrr.github.io/watchtower/
支持的一些参数
更新nginx和redis容器
$ docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
nginx redis
只更新一次nginx和redis容器
$ docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once \
nginx redis
更新容器后清除老旧镜像,600秒检测一次docker hub是否有新的镜像
$ docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower --cleanup --interval 600 \
nginx redis
更多参数请参照官方文档https://containrrr.github.io/watchtower/arguments/,Watchtower还支持邮件通知等更多功能,甚至可以可以控制其他网络的docker,可谓是十分强大,并且非常轻量
2020.04.01更新
cron表达式更新,watchtower和平常5个字符的cron表达式不一样,需要6个字符,并且第二位不是时
,第三位才是,这个例子是每天早上4点检查更新
https://github.com/containrrr/watchtower/issues/160
$ docker run -d \
--name watchtower \
--restart=always \
-e TZ=Asia/Shanghai \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower --cleanup --schedule "0 0 4 * * *" \
nginx redis
前段时间watchtower终于支持TZ了。
https://github.com/containrrr/watchtower/pull/461
watchtower可以使用TZ参数,默认为UTC 0
2020.04.01更新
原创声明
本文由 NG6 于2019年06月16日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:Docker更新容器镜像神器–Watchtower | sleele的博客
本文由 NG6 于2019年06月16日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:Docker更新容器镜像神器–Watchtower | sleele的博客
不靠谱啊,容器是成功更新了,但是里面的配置全没了
@光光 配置文件请做持久化,例如
-v $PWD/config:/config
@NG6 大神能不能详细说一下怎么用?
$ docker run -d
–name watchtower
–restart=always
-e TZ=Asia/Shanghai
-v /var/run/docker.sock:/var/run/docker.sock
-v $PWD/config:/config
containrrr/watchtower –cleanup –schedule “0 0 4 *”
nginx redis
这样对吗?
@steptochange 不是这个意思的
docker容器被销毁后重新创建,配置文件如果没有被挂载本地文件系统,那么会随着容器一起消失
每个容器的配置文件挂载点不一样,根据镜像的制作者写的文档进行调整,比如说nginx的配置文件在/etc/nginx,那么就把这个位置挂载到本地
watchtower没有配置文件,都是通过命令,所以不需要挂载
@NG6 懂了,也就是说在宿主目录里面建立对应容器的配置文件夹,然后再创建容器的时候把宿主目录里面创建的配置文件夹映射为容器的配置目录,这样更新容器就不会丢失配置了是吧
@steptochange 是的
@NG6 多谢
有简单点的教程吗?群晖上怎么部署呢?谢谢!
@海淘 https://sleele.com/2020/03/02/群晖nas下自动更新docker镜像
watchtower不是5个,是6个字符
如果想用cron式,可以用这个参数
–schedule “0 0 4 * * *”
docker run -d \
–name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower –cleanup –schedule * 45 3 * * * \
rsshub_service.rsshub_1
这个写法有啥问题吗?自动退出,不知啥原因
@匿名 参数不对,就用我示例的–interval 600