如何自动更新正在运行的 Docker 容器

岗楼 是一个免费的开源应用程序,可让您监控正在运行的 Docker 容器,并在发现其基础映像有任何更改时自动更新它们。 当 watchtower 发现一个正在运行的容器需要更新时,它会通过发送一个 SIGTERM 信号优雅地停止正在运行的容器。 然后它将下载新镜像,最后使用最初部署时使用的相同选项重新启动容器。 一切都将在后台自动完成,因此不需要用户干预。 在本指南中,我们将了解如何在类 Unix 操作系统中使用 Watchtower 自动更新正在运行的 Docker 容器。

我在 CentOS 7 最小版中测试了本指南,但是所有 Linux 发行版的过程都是相同的。

Watchtower – 自动更新正在运行的 Docker 容器

安装瞭望塔

Watchtower 本身可以作为 Docker 镜像使用。 因此,部署它并不是什么大问题。 在您的 Linux 机器上安装 Docker,并立即开始运行 Watchtower 以监控 Docker 容器。

请参阅以下指南在基于 YUM 和基于 DEB 的系统上安装 Docker。

  • 如何在 CentOS 中安装 Docker
  • 如何在 Ubuntu 中安装 Docker

安装 Docker 后,您可以使用以下命令部署 Watchtower 容器: 用户:

# docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower

该命令将拉取最新的瞭望塔镜像,并启动瞭望塔容器。

样本输出:

Unable to find image 'v2tec/watchtower:latest' locally
latest: Pulling from v2tec/watchtower
a3ed95caeb02: Pull complete 
802d894958a2: Pull complete 
9916c27d2815: Pull complete 
Digest: sha256:d89ea18b6332cc83639771fda274ebfd76f7042856d8f4997e99c7925ad02ae9
Status: Downloaded newer image for v2tec/watchtower:latest
e85c923f2e4dd22a62c12b038ea9694ba9245dcd835f210e1a1f902ee311e004

推荐下载免费电子书:“Docker Containerization Cookbook”

用法

Watchtower 现在已经开始使用您系统上的其他正在运行的容器。 您可以使用以下命令查看正在运行的 Docker 容器列表:

# docker ps

样本输出:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e85c923f2e4d v2tec/watchtower "/watchtower" 3 minutes ago Up 3 minutes watchtower
58543e6ed18a centos:latest "/bin/bash" 5 minutes ago Up 5 minutes ostechnix

正如您在上面的输出中看到的,Watchtower 容器与另一个名为“ostechnix”的容器一起运行。 从现在开始,守望台每隔几分钟就会开始监视这个容器。 如果在此容器的基础镜像中发现任何更改,它将正常关闭“ostechnix”容器,并使用与最初启动时使用的选项相同的新镜像重新启动它。 同样,它会每隔几分钟自动检查所有正在运行的容器的更新,并自动更新它们。

默认情况下,Watchtower 将监控在它所指向的 Docker 守护进程中运行的所有 Docker 容器。 但是,您可以通过指定容器的名称来限制 watchtower 监控特定的 Docker 容器,如下所示。

# docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower ostechnix

在上述 example,watchtower 只会监控名为“ostechnix”的容器是否有更新,其他正在运行的容器会被忽略。 如果不指定任何参数,watchtower 将照常监控所有正在运行的 Docker 容器。

  • 开始使用 Docker
  • ctop – Linux 容器的命令行监控工具
  • Dockly – 从终端管理 Docker 容器
  • Portainer – 管理 Docker 的最简单方法
  • PiCluster – 一个简单的、基于 Web 的 Docker 管理应用程序

在监控多个链接容器时,Watchtower 足够聪明。 假设您正在运行两个名为“Nginx”的容器和链接到“Nginx”容器的“wordpress”容器。 如果 Watchtower 发现“Nginx”容器有更新,它将首先关闭链接的容器,即“wordpress”,然后停止 Nginx 容器。 然后,它将以正确的顺序重新启动两个容器,以便应用程序正确恢复。 在我们的例子中,将首先启动 Nginx 容器,然后是 wordpress 容器,以确保链接继续工作。 有关更多详细信息,请参阅本指南末尾提供的 Watchtower GitHub 页面链接。

就这样。 如果您觉得我们的指南有用,请在您的社交、专业网络上分享并支持 OSTechNix。 更多好东西即将到来。 敬请关注!

干杯!

资源:

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!