玖叶教程网

前端编程开发入门

容器自动更新Watchtower(容器自动更新)

自动清理

docker手动更新容器的流程是:pull更新镜像、stop停止容器、rm删除容器、run重新运行容器(只要运行命令正确,并不会删除本地配置信息)。不过运行的容器多了之后,手动更新就繁琐了。Watchtower就是为了解决这个问题:

Watchtower支持自动更新容器,原理就是检测到本地镜像和远程镜像不同,先把镜像pull下来。然后自动执行容器更新流程(run采用的是容器运行时相同的命令):

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

列表清理

对于个人使用,Watchtower设置自动更新即可。但是在需要稳定提供服务的场景,有的容器可能你长时间并不需要更新,那么你可以采用列表的方式选择需要更新的容器,运行命令如下(列表内是需要更新容器的名称):

docker run -d \
    --name watchtower \
    --restart unless-stopped \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup
    nginx redis
    --interval 3600

这个列表还可以编辑成文件,通过$(cat ~/.watchtower.list)这样的方式进行读取。

周期清理

如果你不想更新过于频繁,还可以像配置crontab一样,在watchtower加入运行周期参数,让容器定期更新(每天或者每月):

docker run -d \
    --name watchtower \
    --restart unless-stopped \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup
    $(cat ~/.watchtower.list)
    --schedule "0 2 * * * *"

运行一次

还有一种模式watchtower本身只运行一次,更新检测完毕后watchtower自删除:

docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower -c \
    --run-once \

Watchtower和Portainer是管理容器必备的两个神器,有必要都了解一下。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言