网站权重值,个人简历自我评价,做网站的收入,外贸网站faq本文首发于只抄博客#xff0c;欢迎点击原文链接了解更多内容。 前言
大部分 VPS 和 NAS 用户或多或少都有用 Docker 来部署一些 Self-hosting 的服务#xff0c;其中大部分项目都是开源项目#xff0c;更新频率非常高#xff0c;特别是一些版本 0.x 的项目#xff0c;及… 本文首发于只抄博客欢迎点击原文链接了解更多内容。 前言
大部分 VPS 和 NAS 用户或多或少都有用 Docker 来部署一些 Self-hosting 的服务其中大部分项目都是开源项目更新频率非常高特别是一些版本 0.x 的项目及时的将 Docker 容器更新到最新版本不仅可以体验到新特性还能减少 BUG。
但是一旦部署的容器多起来就不知道到底哪一个项目更新了哪一个项目没有更新即便是有类似 Portainer、Dockge 之类的可视化工具更新 Docker 容器还是一件麻烦事。
而今天介绍的 Watchtower 可以帮助我们解决这个烦恼启动 Watchtower 后它将监控正在运行的 Docker 容器以及这些容器最初启动时所用的镜像是否发生变化。如果检测到镜像发生更改Watchtower 会拉取新的镜像然后正常关闭现有容器再使用最初部署时的相同选项重新启动它。
简单用法
Watchtower 本身也是一个 Docker 容器你可以直接通过 docker run 来启动它所有的容器都会自动更新 谨慎运行以下代码所有的容器都会更新更多的配置请继续往后面看 docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \containrrr/watchtower配置项
由于默认情况下的 Watchtower 会更新的所有的容器我们可以通过配置项来进行设置Watchtower 提供的配置项非常的多可以参考官方文档下面只介绍最常用的几个配置项。
更新指定容器
如果不希望更新所有的容器只需要将要自动更新的容器名作为参数写在启动命令中例如下面的命令只会更新 nginx 和 redis
docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \containrrr/watchtower \nginx redis忽略指定容器
如果你不希望某个容器不更新可以通过 --disable-containers 参数简写为 -x将其忽略
清理旧镜像
如果你希望在容器更新完成后自动清理旧的镜像可以添加上 --cleanup 参数简写为 -c
运行频率
默认情况下Watchtower 会一直运行以 86400s 的频率轮询检测 Docker 容器是否有更新你可以通过 --interval 参数简写为 -i修改其运行频率单位为秒也可以通过 --schedule 参数简写为 -s来让他定时运行参数为 6 字段的 Cron 表达式两个参数只能选择其中一个
手动运行
默认情况下Watchtower 是轮询检测 Docker 容器更新的你也可以通过 --run-once 参数简写为 -R来让它只运行一次每次运行完毕后 Watchtower 都会自动退出并删除自身
完整用法
上面的这些配置项看的一头雾水没关系下面给出完整的 Docker Compose 包含常用的一些配置项每天的凌晨 4 点会自动更新所有的 Docker 容器并且将旧镜像移除。如果需要更新指定容器或者忽略指定容器只需要在 command 后面加上对应的容器名即可
services:watchtower:image: containrrr/watchtowercontainer_name: watchtowernetwork_mode: hostvolumes:- /var/run/docker.sock:/var/run/docker.sock- /etc/localtime:/etc/localtime:rocommand: --cleanup --schedule 0 0 4 * * *