
一、Watchtower介绍
1.1 Watchtower简介
Watchtower可以自动执行 Docker 容器基础映像更新的过程。Watchtower 将拉下您的新映像,优雅地关闭现有容器,然后使用最初部署时使用的相同选项重新启动它。
1.2 Watchtower使用注意
-
Watchtower 旨在用于家庭实验室、媒体中心、本地开发环境等,请不要使用在生产环境。
1.3 Watchtower使用场景
Watchtower主要用于个人环境下自动更新家庭个人服务器中的容器应用。但在生产环境中不适合使用该工具,而是应该使用像Kubernetes这样的容器管理工具。Kubernetes提供了自动更新容器的功能,通过设置滚动更新策略,可以在容器更新时保证应用的高可用性。因此,在生产环境中应考虑使用Kubernetes来进行容器管理和自动更新的功能。
1.4 Docker容器介绍
Docker容器是一种轻量级的虚拟化技术,用于将应用程序和其依赖项打包在一个可移植的容器中。容器通过隔离应用程序的运行环境,使其可以在不同的操作系统和硬件平台上运行。与传统的虚拟机相比,Docker容器更加轻量级和可移植。Docker容器共享主机操作系统的内核,因此可以在同一个主机上同时运行多个容器,而不像虚拟机需要为每个虚拟机分配一定的资源和独立的操作系统。这使得容器在资源利用和性能方面更加高效。Docker容器提供了一个灵活且可控的环境,可以在任何地方运行应用程序,并且能够快速部署和扩展应用程序。它可以帮助开发人员简化应用程序的交付和部署,并提供了更高效的资源利用和更好的可移植性。
二、本次实践介绍
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为centos7.6。
hostname | IP地址 | 操作系统版本 | Docker版本 |
---|---|---|---|
jeven | 192.168.3.166 | centos 7.6 | 2 20.10.17 |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;2.在Docker环境下使用Docker容器自动更新工具Watchtower。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
[root@jeven ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2023-12-19 13:51:24 CST; 23h ago Docs: https://docs.docker.com Main PID: 11579 (dockerd) Tasks: 23 Memory: 605.0M CGroup: /system.slice/docker.service
3.2 检查Docker版本
检查Docker版本
[root@jeven ~]# docker -v Docker version 20.10.17, build 100c701
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
[root@jeven ~]# docker compose version Docker Compose version v2.6.0
四、下载Watchtower镜像
从docker hub拉取Watchtower镜像
[root@jeven ~]# docker pull containrrr/watchtower Using default tag: latest latest: Pulling from containrrr/watchtower e0c7a3e4c313: Pull complete db1b75c6d82b: Pull complete 5bdc0dfc1598: Pull complete Digest: sha256:3283e0b5be326d77ff4f4e8b7a91d46aaa1d511c74877b5a32f161548812d00c Status: Downloaded newer image for containrrr/watchtower:latest docker.io/containrrr/watchtower:latest
五、Watchtower的基本使用
5.1更新宿主机的所有容器
使用以下命令,更新宿主机的所有容器,也包括 Watchtower 本身。
docker run -d --name watchtower --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
5.2 指定某个容器进行监视
如果指向监视某一个容器进行自定更新,则在上述命令后面加上容器名即可。
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower miniboard

5.3 指定容器的更新频率
Watchtower 默认情况下 24 小时会检查一次镜像更新。设置–interval 选项更新时间,默认单位秒。
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --interval 6

可以使用–schedule选项, 设定定时更新任务,定时任务为6 字段来表示执行时间,第一个字段表示秒。
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --schedule "0 30 20 * * 5"
表示每周五晚上8点半点检查一次。

5.4 自定清理旧镜像
可以使用–cleanup 选项,这样每次更新都会把旧的镜像清理掉。
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup
用于清理无用的Docker卷。它会删除所有没有关联到任何容器的卷,以释放磁盘空间。
docker volume prune
原文始发于微信公众号(运维江湖客):【Docker管理工具】安装Docker容器自动更新工具Watchtower
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/225027.html