Watchtower 自动更新 Docker 容器

目录

Watchtower 的主要功能:

1. 安装docker

2. 拉取镜像

3. 启动 Watchtower

4. 只更新特定容器

5. 设置更新间隔

6. 启用删除旧镜像

7. 禁用容器重启

8. 监控多个 Docker 守护进程

9. 设置 Watchtower 通知

10. 只检查不更新

11. 延迟更新

Watchtower 的关键参数总结表格


Watchtower 是一个开源的 Docker 容器管理工具,用于自动更新运行中的容器。它通过定期检查已启动容器的镜像版本,如果发现有新版本可用,就会自动拉取新镜像并重新启动容器,从而保证你的应用始终运行在最新版本上。

Watchtower 的主要功能:

  1. 自动更新:定期检查容器镜像的更新,并在发现新版本时自动更新并重启容器。
  2. 易于配置:可以通过环境变量和命令行参数轻松配置 Watchtower 的行为。
  3. 支持多种更新策略:可以配置 Watchtower 仅更新特定的容器,或者在更新前后执行特定的操作。
  4. 简单集成:通过挂载 Docker 的 Unix 套接字文件,Watchtower 可以管理 Docker 宿主机上运行的所有容器。

1. 安装docker

安装并配置加速器

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
 
# Step 5:配置加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
        "https://docker.rainbond.cc" ,
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://pilvpemn.mirror.aliyuncs.com",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
   ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2. 拉取镜像

[root@localhost ~]# docker pull containrrr/watchtower

docker hub地址:https://hub.docker.com/r/containrrr/watchtower/tags

3. 启动 Watchtower

使用以下命令启动 Watchtower,自动检查和更新所有正在运行的容器:

docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower

4. 只更新特定容器

如果你只想更新特定的容器,可以在启动 Watchtower 时指定容器名称:

docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower nginxWebUI myapp

5. 设置更新间隔

你可以使用 --interval 参数设置 Watchtower 检查更新的时间间隔(以秒为单位),例如每 5 分钟检查一次:

docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower --interval 300

6. 启用删除旧镜像

默认情况下,Watchtower 不会删除旧镜像。可以使用 --cleanup 参数在更新容器后自动删除旧的 Docker 镜像:

docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower --cleanup

7. 禁用容器重启

如果你不想让 Watchtower 更新容器后自动重启,可以使用 --no-restart 参数:

docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower --no-restart

8. 监控多个 Docker 守护进程

如果你有多个 Docker 守护进程,可以通过挂载多个 Docker 套接字来让 Watchtower 监控它们:

docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /path/to/another/docker.sock:/path/to/another/docker.sock \
  containrrr/watchtower

9. 设置 Watchtower 通知

你可以设置 Watchtower 在更新容器时发送通知。Watchtower 支持多种通知方式,包括 Slack、Email、Webhook 等。

例如,配置 Slack 通知:

docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL="https://hooks.slack.com/services/your/slack/hook" \
  containrrr/watchtower

10. 只检查不更新

如果你只想检查镜像是否有更新,而不自动更新,可以使用 --monitor-only 参数:

docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower --monitor-only

11. 延迟更新

使用 --delay-update 参数可以在更新容器前延迟一定时间:

docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower --delay-update 30s

这会在发现更新后等待 30 秒再执行更新。

Watchtower 的关键参数总结表格

参数说明
–rm运行结束后自动删除容器。
-v /var/run/docker.sock:/var/run/docker.sock挂载 Docker 的 Unix 套接字,允许 Watchtower 管理其他容器。
your_service_name指定要检查和更新的服务容器名称。
–run-once只执行一次检查和更新,然后退出并停止 Watchtower。
–interval设置 Watchtower 检查更新的时间间隔(默认 300 秒)。
–cleanup更新后自动删除旧的 Docker 镜像。
–no-restart禁止更新容器后自动重启。
–monitor-only仅监控镜像更新,不执行更新操作。
–delay-update更新前延迟指定时间,例如 30s 或 1m。
-e WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL设置通知,例如 Slack 的 Webhook URL。
-e WATCHTOWER_NOTIFICATION_EMAIL_FROM设置发件人邮箱地址,用于邮件通知。
-e WATCHTOWER_NOTIFICATION_EMAIL_TO设置收件人邮箱地址,用于邮件通知。
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER设置邮件服务器的地址。
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT设置邮件服务器的端口。
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER设置邮件服务器的用户名。
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD设置邮件服务器的密码。
-e WATCHTOWER_NOTIFICATION_WEBHOOK_URL设置 Webhook URL,用于发送 HTTP POST 请求通知。
-e WATCHTOWER_NOTIFICATION_TG_BOT_TOKEN设置 Telegram 机器人的 Token,用于发送 Telegram 消息。
-e WATCHTOWER_NOTIFICATION_TG_CHAT_ID设置 Telegram 聊天 ID,用于发送 Telegram 消息。
-e WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL设置 Slack 的 Webhook URL,用于发送 Slack 消息。
-e WATCHTOWER_NOTIFICATION_ROCKET_CHAT_URL设置 Rocket.Chat 的 Webhook URL,用于发送 Rocket.Chat 消息。
-e WATCHTOWER_NOTIFICATION_ROCKET_CHAT_CHANNEL设置 Rocket.Chat 的频道名称。
-e WATCHTOWER_NOTIFICATION_ROCKET_CHAT_USERNAME设置 Rocket.Chat 的用户名。
-e WATCHTOWER_NOTIFICATION_ROCKET_CHAT_ICON_URL设置 Rocket.Chat 的图标 URL。
-e WATCHTOWER_NOTIFICATION_GENERIC_WEBHOOK_URL设置 Generic Webhook 的 URL,用于发送自定义 Webhook 消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZDICT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值