首页 >>  正文

always+enable

来源:baiyundou.net   日期:2024-09-09

作者:冥冰薇

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

关注专栏不迷路

写在前面

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

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





使用 Watchtower 自动更新 Docker 容器

介绍

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

环境准备

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

安装 Watchtower

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

docker run -d \r\n--name=watchtower \r\n-v /var/run/docker.sock:/var/run/docker.sock \r\ncontainrrr/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 \r\n-v /var/run/docker.sock:/var/run/docker.sock \r\ncontainrrr/watchtower container_to_update_1 container_to_update_2

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

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

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

容器名称为qbittorrent:

那么实际操作就是:

docker run -d --name watchtower \r\n-v /var/run/docker.sock:/var/run/docker.sock \r\ncontainrrr/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 \r\n-v /var/run/docker.sock:/var/run/docker.sock \r\n--restart=always \r\ncontainrrr/watchtower --label-enable --cleanup

自动删除旧的镜像

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

即,部署命令为:

docker run -d --name=watchtower \r\n-v /var/run/docker.sock:/var/run/docker.sock \r\n--restart=always \r\ncontainrrr/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容器。

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

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

阅读更多NAS存储精彩内容,可前往什么值得买查看

","gnid":"951c2a44f3ade9d59","img_data":[{"flag":2,"img":[{"desc":"","height":"239","title":"","url":"https://p0.ssl.img.360kuai.com/t011ce8861b2638f945.jpg","width":"600"},{"desc":"","height":"179","title":"","url":"https://p0.ssl.img.360kuai.com/t0104b0c34fde75e159.jpg","width":"600"},{"desc":"","height":"597","title":"","url":"https://p0.ssl.img.360kuai.com/t0152446a85fc6ce50d.jpg","width":"600"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1684829467000,"pure":"","rawurl":"http://zm.news.so.com/eaa2e5b85a0520107eefd772ad54994a","redirect":0,"rptid":"f62e10784b24289f","rss_ext":[],"s":"t","src":"什么值得买","tag":[],"title":"docker妙用 篇七:docker自动更新容器——Watchtower全攻略(含大部分常用参数)

严菲狮2527技嘉B85 hd3远程开机 -
池尹盾15514175016 ______ 可以远程开机,PXE为无盘启动,即远程工作站模式,具体可百度.在BIOS界面设置CSM Support 为Always,LAN PXE Boot Option ROM 为Enable时可实现该功能.此时Ipv4 PXE Support 应为Enable,若在Ipv6环境下,须设置Ipv6 PXE Support 为Enable.

严菲狮2527用光盘重装系统 求进BIOS详细的解答 -
池尹盾15514175016 ______ 首先,确定你的光驱是第一启动顺序并支持从光驱启动. 要从光盘安装,要把BIOS进行设置,使系统能够从光盘启动.其方法如下: (1)启动计算机,当屏幕上显示 Press Del to Enter BIOS Setup提示信息时,按下键盘上的Del 键,进放主板...

严菲狮2527verilog 寄存器变量 -
池尹盾15514175016 ______ 时钟和触发,这样说有点不合理吧 enable==1相当于高电平触发

严菲狮2527BIOS设置问题 -
池尹盾15514175016 ______ 1.从S5状态中使用网络唤醒, 2.这个选项是是否要支持PCI设备能唤醒系统. stay off 是符合条件也不开机 power on 是符合条件则开机 3.通过局域网从服务器下载映像,并由此支持来自网络的操作系统的启动.4.

严菲狮2527为何我的这个if - else 总是进入else里面 即使enable1的值为“0”还是进入else里面 -
池尹盾15514175016 ______ 简单的说就是它是一个String类型的,也就是一个引用类型. 而在java类中“==”是比较两个引用类型是否相等,要比较两个引用类型的值的话可以使用: string.equals("value"); 那么你的写法应该是: if (enable1.equals("0")) { sql = "update Yj_User set User_Enable=1 where User_Id='" + id + "'"; } else { sql = "update Yj_User set User_Enable=0 where User_Id='" + id + "'"; }

严菲狮2527我家有台老机器BIOS设置问题 -
池尹盾15514175016 ______ win9x内核的系统安全模式是没有光驱的如果是那个时候的机器一定有软驱的而且大多数的设置是软驱 硬盘 光驱你找一张启动盘试试看能不能启动至于主板的设置不同的主板是不一样的这方面就没...

严菲狮2527高中英语作文好句及解析高中作文的好句,常用句(不是句型,要实例).及此句的语法点,解析. -
池尹盾15514175016 ______[答案] a一、~~~ the + ~ est + 名词 + (that) + 主词 + haveever + seen (known/heard/had/read, etc) ~~~ the most + 形容词 + 名词 ... 我们书读愈多,我们愈有学问. 十二、By +Ving, ~~ can ~~ (借着...,..能够..) 例句: By taking exercise, we can always stay...

严菲狮2527英语作文短语高中英语作文常用句型,越多越好,不怕复制,越多越好,要经典的,还有高中语文问答题答题模式!求给力啊,特别是英语的, -
池尹盾15514175016 ______[答案] 一、根据衔接词本身在文章中起到的作用,主要分为以下四类,即“起”、“承”、“转”、“合”. (一)表示“起”的... By taking exercise,we can always stay healthy. 借着做运动,我们能够始终保持健康. 十三、~~~ enable + Object(受词)+ ...

严菲狮2527BIOS这个该怎么读啊bios怎么读呢
池尹盾15514175016 ______ BIOS的读法是:拜欧思,[bai o s] 与此相关的CMOS:西母思,[c mo s] 总的原则是:BIOS是“Basic Input/Output System”的缩写,CMOS 是“ Complementary Metal Oxide Semiconductor”的缩写,都取首个单词的英文字母拼读就是!

严菲狮2527高二外研社英语选修六有可能考什么类型的作文有可能考什么类型的作文,每种类型给篇范文,范文最好有点高级词汇和短语还有长难句,最后附上翻译,好... -
池尹盾15514175016 ______[答案] 英语作文万能开头结尾1. 结尾万能公式一:如此结论 说完了,毕竟要归纳一番,相信各位都有这样的经历,领导长篇大论... we can always stay healthy. 借着做运动,我们能够始终保持健康. 十三、~~~ enable + Object(受词)+ to + V (..使..能够..) ...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024