引言

随着云计算和容器化技术的普及,Docker已成为现代应用开发和部署的热门选择。然而,随之而来的是需要对Docker容器进行频繁的更新和维护。为了简化这一过程,社区推出了许多工具,而其中一个备受欢迎的解决方案就是"Watchtower"。本文将介绍Docker容器自动更新神器Watchtower的特点、优势以及如何使用它来实现容器的自动化更新。

什么是Watchtower?

Watchtower是一个开源的Docker容器自动更新工具,它可以持续监控您的Docker镜像仓库,并在有新版本发布时,自动更新本地运行的容器。Watchtower的目标是让容器的更新变得轻松、自动化,减少管理员的工作量,同时确保您的应用程序始终保持最新状态。

Watchtower的特点与优势

  1. 自动化更新:Watchtower可以定期(您可以配置更新检查的频率)检查您使用的Docker镜像,发现新版本后,自动停止、更新、重新启动容器,无需手动干预。这使得您可以专注于应用开发和其他重要任务,而不用担心容器更新的繁琐问题。
  2. 支持多种镜像源:Watchtower支持多种Docker镜像源,包括Docker Hub、私有镜像仓库以及其他公共镜像仓库。这使得您可以灵活地选择自己喜欢的镜像来源。
  3. 定制化更新策略:Watchtower允许您根据应用的特定需求定制化更新策略。您可以选择只更新特定标签的镜像,或者仅在满足特定条件(例如,依赖项更新或漏洞修复)时才进行更新。
  4. 安全性:Watchtower在更新容器时非常重视安全性。它不会在不安全的网络环境中下载镜像,并且还支持使用私有访问令牌或证书来访问私有镜像仓库,确保您的镜像和数据不会泄露。
  5. 通知与日志:Watchtower可以配置通知机制,让您及时了解容器更新的情况。同时,它还提供详细的日志记录,方便您查看更新过程的细节和可能出现的问题。

项目搭建

方法一:docker-cli安装

1
2
3
4
5
6
7
8
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \ # 删除旧镜像
nextcloud \ # 要更新的容器
mysql \

方法二:docker-compose安装

  1. 创建安装目录
1
mkdir root/docker_data/watchtower
  1. 进入安装目录创建docker-compose.yml文件,写入以下内容
1
2
3
4
5
6
7
8
9
10
11
version: "3"
services:
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: npm-app-1 portainer frps watchtower --cleanup --schedule "0 0 5 * * *"
  • npm-app-1 portainer frps watchtower部分是要监测更新的容器

  • --schedule "0 0 5 * * *" 是每天五点检测一次容器是否更新,可自定义检测的时间