Featured image of post Docker 部署 Watchtower 容器自动更新工具 🔄

Docker 部署 Watchtower 容器自动更新工具 🔄

Docker 部署 Watchtower 容器自动更新工具 🔄 📋 目录导航 🎯 项目

Docker 部署 Watchtower 容器自动更新工具 🔄


📋 目录导航


🎯 项目简介

Watchtower 是一款轻量级的 Docker 容器自动更新工具,能够监控运行中的容器并在检测到基础镜像更新时自动拉取新镜像、重启容器。结合 Docker 部署,您可以在任何支持 Docker 的平台(Linux、Windows、macOS、NAS 等)上轻松实现容器化应用的自动维护,确保服务始终运行在最新版本。


🛠️ 核心特性

特性类别 功能描述 优势
🔄 自动检测 定期检查容器镜像更新 无需手动干预,自动发现新版本
⚡ 无缝更新 拉取新镜像并重启容器 服务更新过程平滑,减少停机时间
🗑️ 资源清理 可选清理旧镜像功能 避免磁盘空间被无用镜像占用
⏰ 灵活调度 支持自定义检查计划 根据需求设置更新频率和时间
🎯 精确控制 支持容器筛选更新 可更新所有容器或仅更新指定容器
🛡️ 安全可靠 保持原有配置不变 更新后容器配置与更新前完全一致
📊 状态监控 提供详细更新日志 清晰掌握容器更新历史

🐳 一、Docker 部署 Watchtower

根据您的需求,我们提供两种部署方案:更新所有容器或仅更新指定容器。

方案一:更新所有容器 🌐

此方案将监控并更新宿主机上所有运行的 Docker 容器(除非特别排除)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 创建部署目录和 docker-compose.yml 文件
mkdir -p /mnt/mydisk/home/watchtower && cd $_ && \
cat > docker-compose.yml <<'EOF'
services:
  watchtower:
    container_name: watchtower
    image: containrrr/watchtower:latest
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Shanghai                # 设置时区
      - WATCHTOWER_CLEANUP=true         # 更新后清理旧镜像
      - WATCHTOWER_SCHEDULE=0 0 2 * * * # 每天凌晨2点执行检查
      - WATCHTOWER_DEBUG=false          # 关闭调试模式
EOF

# 启动容器
docker-compose up -d

此配置的作用:

  1. 监控范围:默认监控宿主机上所有正在运行的 Docker 容器
  2. 工作频率每天北京时间凌晨 2:00:00 执行检查
  3. 工作内容
    • 检查每个容器对应的镜像是否有新版本
    • 发现更新时自动拉取新镜像并重启容器
    • 清理旧镜像释放磁盘空间

方案二:更新指定容器 🎯

此方案仅监控并更新您明确指定的容器,其他容器将被忽略。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 创建部署目录和 docker-compose.yml 文件
mkdir -p /mnt/mydisk/home/watchtower && cd $_ && \
cat > docker-compose.yml <<'EOF'
services:
   watchtower:
      image: containrrr/watchtower
      container_name: watchtower
      network_mode: bridge
      restart: always
      environment:
         - TZ=Asia/Shanghai
      volumes:
         - /var/run/docker.sock:/var/run/docker.sock
      command: -s "0 0 2 * * *" --cleanup speedtest halo metube md openlist sun-panel sun-panel-helper xiaomusic 1panel
EOF

# 启动容器
docker-compose up -d

此配置的作用:

  1. 监控范围:仅监控指定的9个容器:speedtest, halo, metube, md, openlist, sun-panel, sun-panel-helper, xiaomusic, 1panel
  2. 工作频率每天北京时间凌晨 2:00:00 执行检查
  3. 工作内容
    • 检查指定容器的镜像是否有新版本
    • 发现更新时自动拉取新镜像并重启容器
    • 清理旧镜像释放磁盘空间

选择建议:

  • 如果您希望自动化更新所有容器,请选择方案一
  • 如果您只想更新特定容器,避免其他容器意外更新,请选择方案二

🚀 二、使用 Watchtower

1. 查看运行状态 📊

Watchtower 主要通过日志输出提供信息,可通过以下命令查看运行状态:

1
2
3
4
5
6
7
8
# 查看日志
docker logs watchtower

# 实时跟踪日志
docker logs -f watchtower

# 查看最后100行日志
docker logs --tail 100 watchtower

2. 容器筛选策略 🔍

除了在命令行指定容器外,Watchtower 还支持通过标签筛选容器:

1
2
3
4
5
6
7
# 在其他容器的配置中添加以下标签可排除该容器不被Watchtower更新
labels:
  - "com.centurylinklabs.watchtower.enable=false"

# 或者明确指定需要更新的容器
labels:
  - "com.centurylinklabs.watchtower.enable=true"

🔧 三、容器维护命令

1. Docker Compose 命令 🐳

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 进入项目目录
cd /mnt/mydisk/home/watchtower

# 停止并删除容器
docker-compose down

# 拉取最新镜像并重启容器
docker-compose pull && docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看服务日志
docker-compose logs

# 完整升级流程
docker-compose down && \
docker-compose pull && \
docker-compose up -d && \
docker image prune -f

2. Docker 容器命令 📦

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 查看运行中容器
docker ps

# 停止/启动/重启容器(请替换 <container_name> 为实际容器名)
docker stop <container_name>      # 停止容器
docker start <container_name>     # 启动容器  
docker restart <container_name>   # 重启容器

# 进入容器Shell
docker exec -it <container_name> sh

# 查看容器详情
docker inspect <container_name>

# 查看容器资源使用情况
docker stats <container_name>

3. Docker 镜像管理 📀

1
2
3
4
docker images                  # 列出所有镜像
docker rmi <image_name:tag>    # 删除指定镜像
docker image prune -f          # 清理悬空镜像
docker image prune -a -f       # 清理所有未使用镜像

🌟 启航自动化,维护无限

通过本文档,你已经成功使用 Docker 部署了 Watchtower 容器自动更新工具。现在,你可以:

🔄 自动更新 无需手动干预,自动检测并更新容器至最新版本
定时维护 根据预设计划智能执行更新任务,确保服务持续稳定
🎯 精确控制 可选择更新所有容器或仅更新指定容器,灵活满足不同需求
🛡️ 安全可靠 更新过程保持原有配置不变,保障业务连续性

维护之路,是一场与技术进步同行的自动化旅程。愿 Watchtower 成为你可靠的运维助手,陪伴你在每一次容器更新和维护的关键时刻。

从现在开始,自动化运维,省心省力——构建你高效稳定的容器环境吧!🚀


📌 持续迭代:建议关注 Watchtower 官方更新 ,及时获取新功能与优化。
🐛 反馈与互助:使用中如有疑问或建议,可前往 GitHub Issues 提出。

祝你运维愉快,更新无忧!🎉

最后更新于 2025-09-28