Docker容器技术
Docker基础概念
Docker安装配置
通过docker registry搭建私有仓库
Dockerfile编写学习
数据卷管理
Docker 镜像
Docker容器管理
daemon.json配置示例
Dcocker网络互联
Docker部署nextcloud网盘
Watchtower-容器的自动升级
想要轻松上手Docker?Portainer帮你实现零基础快速部署!
Nextcloud搭建
Docker搭建Mrdoc
Mrdoc迁移记录
Docker部署wordpress博客
Docker部署个人密码管理平台bitwarden
Docker-compose安装配置
Docker-compose搭建小说阅读器
Docker搭建青龙面板
Docker搭建自己的导航页dashy
uptime-kuma监控面板部署
容器搭建Nas-tool及相关套件
本文档使用 MrDoc 发布
-
+
首页
Watchtower-容器的自动升级
# Watchtower介绍 之前我们讲了Docker的部署,当前一般通过docker hub上拉取镜像进行部署,但是如果docker hub上镜像版本变更了,容器不会自动升级镜像版本,保持在旧版本,如果我们想要升级只能重新拉取最新的latest版本,然后重新部署容器,还要保证创建的命令与之前的旧容器一致,这些步骤会比较繁琐。 Watchtower 是一个可以实现自动化更新 Docker 基础镜像与容器的实用工具。它监视正在运行的容器以及相关的镜像,当检测到 registry 中的镜像与本地的镜像有差异时,它会拉取最新镜像并使用最初部署时相同的参数重新启动相应的容器。 官网链接:https://containrrr.dev/watchtower/ Watchtower本身作为一个镜像可以像其他容器一样运行:将docker的进程映射到容器内进行监控。 ```docker # 官方运行参数参考,然后会检测所有容器和镜像的更新,包括watchtower本身 docker run -d \ --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower ``` ## 选项 ### 自动清除旧镜像 默认情况下旧版本镜像会保存在磁盘中成为孤立的镜像,watchtower提供了自动清除旧版本的功能,可以在docker run 时添加参数自动清除旧的镜像。 ```docker docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --cleanup ``` 或者简写`-c` ```docker docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c ``` ### 选择性更新 有时候我们不需要全部镜像自动升级,由此产生一些故障和bug,可以选择性进行更新,在docker run时添加需要更新的指定容器名称可以设置只有指定的容器会自动更新,用于一些不适合经常更新升级的情况。 ```docker # 指定更新nginx和redis容器名称 docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ nginx redis ``` ### 设置更新频率 默认watchtower会每5分钟检查更新一次,可以通过--interval, -i或者--schedule, -s设置更新间隔。 --interval, -i - 设置更新检测时间间隔,单位为秒。比如每隔 1 个小时检查一次更新: ```docker docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --interval 3600 ``` --schedule, -s - 设置定时检测更新时间。格式为 6 字段 Cron 表达式,而非传统的 5 字段,即第一位是秒。比如每天凌晨 2 点检查一次更新: ```docker docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --schedule "0 0 2 * * *" ``` ### 手动更新 可以手动运行一次更新,相当于单独更新部分容器一次,然后删除watchtower,主要不用名称冲突即可。 ```docker docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --run-once \ aria2-pro # docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -cR \ aria2-pro ``` 通过watchtower可以实现容器镜像版本的自动更新了,不过要考虑好那些服务需要更新,哪些不需要更新。
Chuck
2023年12月6日 11:53
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码