docker妙用 篇七:docker自动更新容器——Watchtower全攻略(含大部分常用参数)

2023-05-23 15:55:26 39点赞 357收藏 21评论

提示:本篇文章约4802字符,阅读大约需要5分钟。

关注专栏不迷路

docker自动更新容器——Watchtower全攻略(含大部分常用参数)

写在前面

在使用docker的过程中,虽然我们知道在容器对应的镜像后面添加latest标签,然后通过手动编辑容器,即可拉取最新镜像,然后达成更新容器的目的。但是,大家是否会感到这种更新容器的方法不够优雅,或者在建立非常多的容器之后,使用手动更新容器将会是一件非常繁琐的事情,那么今天我们就来介绍一款非常优雅的容器更新工具——Watchtower

注:本文适合所有可以安装docker容器的NAS系统食用,不过群晖有更为简单有效的办法,可以期待一下我之后的文章。


威联通(QNAP)TS-466CIntel奔腾N60052.5GbE新旗舰私有云NAS家用网络存储器4599元QNAP 威联通 TS-466 四盘位NAS存储搭载奔腾银牌N6005四核心处理器,基于10nm制程工艺,具备4核心4线程。内置8GB运行内存和2个M.2NVMe PCle Gen3x1插槽,附送M.2 SSD散热片。提供1个USB 2.0和2个USB 3.2 Gen 2(10Gbps)接口,双2.5G网口,以及1个HDMI 2.0接口,支持4K高画质影音内容输出。京东去购买




威联通(QNAP)TS-464C宇宙魔方四核心处理器网络存储服务器内置双M.2插槽NAS私有云(453Dmini升级)3599元家用4盘位旗舰款,四核心处理器,双2.5GbE口,NVMe双M.2插槽。京东去购买




群晖(Synology)DS923+4盘位万兆扩展NAS网络存储服务器文件共享自动备份私有云团队云盘4900元京东去购买


使用 Watchtower 自动更新 Docker 容器

介绍

Watchtower 是一个开源项目,它可以监控你的 Docker 容器,并在容器的基础镜像有更新时自动重启容器。这个工具对于需要持续部署和集成的项目来说非常有用,可以简化管理工作并确保你的应用始终运行最新的镜像。

环境准备

在开始使用 Watchtower 之前,你需要确保你的系统已经安装了 Docker,并已经配置好可以访问 Docker Hub 或其他 Docker 镜像仓库。如果你还没有安装 Docker,可以参考官方文档进行安装和配置。

安装 Watchtower

要在你的系统上安装 Watchtower,你可以使用 Docker 命令从 Docker Hub 下载 Watchtower 镜像,并创建一个新的容器来运行它。下面是一个基本的命令示例:

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

在这个命令中,我们使用 -v 选项将 Docker 的 Unix socket 挂载到 Watchtower 容器中,这样 Watchtower 就可以访问和管理其他 Docker 容器了。

Watchtower 的基本使用

安装完 Watchtower 后,你就可以开始使用它来自动更新你的 Docker 容器了。默认情况下,Watchtower 会每 5 分钟检查一次容器的基础镜像是否有更新。如果有更新,它会自动下载新的镜像,并重启容器。

此外,你还可以查看 Watchtower 的日志,以了解其工作情况:

docker logs watchtower

Watchtower 的高级配置

除了基本的自动更新功能,Watchtower 还支持许多高级配置,以满足不同的需求。例如,你可以设置 Watchtower 只在特定的时间段进行更新,或者配置 Watchtower 忽略某些容器。

如果你希望接收 Watchtower 的更新通知,你还可以配置 Watchtower 发送邮件或其他方式的通知。

更新特定容器

你可以在运行 Watchtower 时,指定它只更新特定的容器。你需要在命令行中添加你希望更新的容器的名称或者 ID。

更新特定容器代码如下:

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

在这个例子中,Watchtower 将只会更新名为 container_to_update_1container_to_update_2 的容器。

下面是一个实际操作的例子:

我在unraid下发现我的qb容器可以更新:

qb可更新qb可更新

容器名称为qbittorrent:

那么实际操作就是:

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

更新命令更新命令

忽略更新某些容器方法1

如果你希望 Watchtower 忽略某些容器,你可以在运行那些容器时添加一个名为 com.centurylinklabs.watchtower.enable 的 label,并将其值设为 false。下面是一个例子:

docker run -d --label=com.centurylinklabs.watchtower.enable=false container_to_update_1

在这个例子中,Watchtower 将不会更新运行 container_to_update_1 镜像的这个容器

忽略更新某些容器方法2

当然,如果你只想让Watchtower更新特定容器,那可以将以上思路进行反向选择:即在Watchtower的命令行参数中使用了--label-enable,那么Watchtower将只更新那些带有标签com.centurylinklabs.watchtower.enable=true的容器。这种情况下,你只需要在你想要Watchtower更新的容器上添加这个标签即可,其他没有这个标签的容器都会被Watchtower忽略。

那么Watchtower建立时的命令行参数应该修改为:

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

自动删除旧的镜像

如果需要Watchtower在自动更新容器时,删除旧的镜像以节约存储空间,请直接在命令结尾添加—cleanup参数即可。

即,部署命令为:

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

立即检查更新

你可以通过发送一个 SIGHUP 信号给 Watchtower 容器来让它立即检查更新。你可以使用 docker kill 命令发送这个信号。以下是完整的命令:

docker kill -s SIGHUP watchtower

立即检查更新立即检查更新

在这个命令中,-s SIGHUP 参数指定了要发送的信号,而 watchtower 是你的 Watchtower 容器的名称。

这个命令会让 Watchtower 立即开始检查并更新容器,而不是等到下一个计划的检查时间。注意,这个命令不会停止或重启 Watchtower 容器,只是触发它进行一次额外的检查。

故障排除

如果你在使用 Watchtower 时遇到问题,你可以参考官方文档的“故障排除”部分,或在社区论坛寻求帮助。另外,记住,始终查看 Watchtower 的日志是解决问题的好方法。

以下是一份Watchtower的日志示例:

日志示例日志示例

  • time=”2023-05-23T02:37:45Z” level=info msg=”Watchtower 1.5.3”`:这个消息告诉你正在运行的Watchtower的版本是1.5.3。

  • time="2023-05-23T02:37:45Z" level=info msg="Using no notifications":这个消息告诉你Watchtower没有配置任何通知。这意味着如果容器被更新或出现错误,你将不会收到通知。

  • time="2023-05-23T02:37:45Z" level=info msg="Only checking containers which name matches "qbittorrent"":这个消息告诉你Watchtower只会检查名字匹配”qbittorrent”的容器是否有更新。

  • time="2023-05-23T02:37:45Z" level=info msg="Scheduling first run: 2023-05-24 02:37:45 +0000 UTC":这个消息告诉你Watchtower将在UTC时间2023-05-24 02:37:45进行第一次检查。

  • time="2023-05-23T02:37:45Z" level=info msg="Note that the first check will be performed in 23 hours, 59 minutes, 59 seconds":这个消息告诉你距离第一次检查还有大约24小时。

这些信息都是Watchtower启动时的常规日志,可以帮助你理解Watchtower的运行状态和计划。

总结

Watchtower 是一个强大的工具,可以帮助你简化 Docker 容器的管理,并确保你的应用始终运行最新的镜像。然而,像所有工具一样,它也有其局限性,例如,它不能更新使用了“latest”标签的镜像。因此,在

下期预告:如何定时自动启动和停止docker容器。

这就是本期的全部内容了,如果这篇文章对您有帮助的话,欢迎您在评论区多多讨论,也欢迎关注、点赞、打赏一键三连,您的支持对我非常重要。

我是冥冰薇,点个关注不迷路,我们下期再见。

docker自动更新容器——Watchtower全攻略(含大部分常用参数)

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

威联通(QNAP)TS-466CIntel奔腾N60052.5GbE新旗舰私有云NAS家用网络存储器

威联通(QNAP)TS-466CIntel奔腾N60052.5GbE新旗舰私有云NAS家用网络存储器

暂无报价

威联通(QNAP)TS-464C宇宙魔方四核心处理器网络存储服务器内置双M.2插槽NAS私有云(453Dmini升级)

威联通(QNAP)TS-464C宇宙魔方四核心处理器网络存储服务器内置双M.2插槽NAS私有云(453Dmini升级)

暂无报价 去购买

群晖(Synology)DS923+4盘位万兆扩展NAS网络存储服务器文件共享自动备份私有云团队云盘

群晖(Synology)DS923+4盘位万兆扩展NAS网络存储服务器文件共享自动备份私有云团队云盘

暂无报价 去购买

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2599元起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2849元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3299元起

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

2190.84元起

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

2179元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1999元起

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

4099元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

1199元起

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

2000元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1899元起

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

2699元起

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

8899元起

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

1899元起

Synology 群晖 DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

Synology 群晖 DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

1549元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1699元起

Synology 群晖 DS923+ NAS网络存储服务器 标准无硬盘

Synology 群晖 DS923+ NAS网络存储服务器 标准无硬盘

4899元起

文中相关商品

21评论

  • 精彩
  • 最新
  • 注册查询失败,这都三天了

    校验提示文案

    提交
    docker compose的域名没有被污染,可以用compose部署

    校验提示文案

    提交
    域名被墙了, 需要换源 或者有🪜

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 现在docker hub被墙了,群晖7.2还能检查更新吗

    校验提示文案

    提交
    ssh命令测试没问题,watchtower是通过命令行操作,应该问题不大

    校验提示文案

    提交
    收起所有回复
  • 过来人的忠告,docker包括各种开源项目,只要能用,或者没有出现影响使用的bug,能不更就不更,特别是自动更新更是能关就关,因为谁也不知道下一个新版本会不会有新bug,会不会变配置文件和路径,。上游会不会删库等等,一旦出问题又要折腾半天,真得不偿失

    校验提示文案

    提交
    删库跑路,你旧版也照样用不了

    校验提示文案

    提交
    删库和用不了有什么必然联系吗,又不是所有项目都需要接入云端,纯本地项目和删库有啥关系

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 收藏起来!

    校验提示文案

    提交
  • 喜欢就可以多写点关于这个方面的内容,期待下次分享

    校验提示文案

    提交
  • 7.2貌似容器能自动更新了,这个快没用了

    校验提示文案

    提交
    怎么自动更新?我就是 7.2

    校验提示文案

    提交
    看介绍是说,镜像版本是latest,会自动更新。不过最近dockerhub有问题,几个镜像也没试

    校验提示文案

    提交
    收起所有回复
  • 群晖直接进 ssh 里面去拉,一样的,只是看不到 ui

    校验提示文案

    提交
  • 7.2只要是latest标签的在镜像里会有更新提示,点一下就一键更新了,想更新哪个点哪个就行了,降级可以用portainer,感觉都比这种方式方便

    校验提示文案

    提交
  • 没有开的容器,不会升级。

    校验提示文案

    提交
  • 亲测docker kill -s SIGHUP watchtower这个命令并不会手动更新,反而是关闭了watchtower容器

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
357
扫一下,分享更方便,购买更轻松