【Docker管理工具】安装Docker容器自动更新工具Watchtower

简介: 【2月更文挑战第8天】安装Docker容器自动更新工具Watchtower

在这里插入图片描述

一、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更新宿主机的所有容器

使用以下命令,更新宿主机的所有容器,也包括 Watch­tower 本身。

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

五、官方参考文档

更多Watchtower详细使用说明,可以参考官方文档。

相关文章
|
4月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
442 6
|
4月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
621 5
|
4月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
441 2
|
4月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
760 4
|
Java 测试技术 Docker
让Docker日臻完善的8个优秀工具
一眨眼,你可能错过如今Docker领域最值得关注的动向之一。除了Docker本身的进步外,其他许多实用的项目都建立在Docker的基础上,或者得到Docker的支持。
1443 0
|
5月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建