首页 > 其他分享 >使用Watchtower实现Docker容器自动更新

使用Watchtower实现Docker容器自动更新

时间:2022-09-22 12:45:08浏览次数:50  
标签:容器 watchtower nginx02 自动更新 镜像 Watchtower Docker docker

前言:通常情况下我们手动更新容器的步骤比较繁琐,需要四个步骤:

1.停止容器
2.删除容器
3.检查镜像更新情况,更新镜像
4.重新启动容器

容器少还无所谓,但要是需要更新大量的容器就会工作量巨大。

一、介绍Watchtower

Watchtower 是一款自由开源的应用,用来监控运行中的 Docker 容器,并且当它发现基础镜像被更改后,可以自动的更新容器。
若 Watchtower 发现一个运行中的容器需要更新,它会以发送 SIGTERM 信号的方式,优雅的结束运行中容器的运行。
它会下载新镜像,然后以最初部署时使用的方式,重启容器。所有文件会在后台自动下载,因此不需要用户的介入。

二、下载启动watchtower镜像

docker pull containrrr/watchtower

启动例子  

docker run -d --name watchtower  -e REPO_USER=admin  -e REPO_PASS=123456 --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower:latest -c nginx02 --interval 100

参数介绍

账号密码,如果是私域仓,不指定会报错,自动更新是获取不到镜像
-e REPO_USER=admin  
-e REPO_PASS=123456

-c 自动清除旧镜像 ,不然很多none的镜像出现

–interval 300(-i 300):设置自动更新检查频率(秒)我这里是设置的5分钟,如果不指定,则默认24小时后执行

nginx02:是需要更新的容器名称

--restart=unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器。

运行完成之后,查看日志

docker logs -f watchtower  

三、Watchtower搭配Harbor实现容器自动更新

环境:
Harbor服务器地址是192.168.10.145
Web01 服务器 192.168.10.145
Web02 服务器 192.168.10.133

1、前提需要安装好Harbor

2、运行Watchtower,监控nginx02容器  

docker run -d --name watchtower  -e REPO_USER=admin  -e REPO_PASS=123456 --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower:latest -c nginx02 --interval 100    

3、在Web01上启动nginx02容器

4、在Web02上面,假如修改nginx02容器内容,比如修改html

docker exec -it nginx02 /bin/bash
echo This is test > /usr/share/nginx/html/index.html

5、在Web02提交推送修改过的镜像到Harbor仓库  

docker commit CONTAINER_ID 192.168.10.145:80/work/nginx:latest 

docker push 192.168.10.145:80/work/nginx:latest

6、查看Harbor仓库

 

 7、在Web01检查是否自动更新

docker logs -f watchtower  
# 以下是输出
time="2022-09-18T12:22:50Z" level=info msg="Found new 192.168.10.145:80/work/nginx image (afff575eb240)" # 这里看到新的镜像
time="2022-09-18T12:22:50Z" level=info msg="Stopping /nginx02 (0d4a3e0334db) with SIGTERM"
time="2022-09-18T12:22:51Z" level=info msg="Creating /nginx02"
time="2022-09-18T12:22:52Z" level=info msg="Removing image 6f2aa1c0705c"

8、检查网页内容

用浏览器或者curl访问curl nginx01  

 

 

总结:实现Docker容器自动更新挺好的,方便,不需要手工更新重启

  

  

  

标签:容器,watchtower,nginx02,自动更新,镜像,Watchtower,Docker,docker
From: https://www.cnblogs.com/lucktomato/p/16718829.html

相关文章

  • 获取阿里云docker加速器地址
    1.登录阿里云官网https://www.aliyun.com/2.注册账号登录  3.产品-->容器与中间件-->容器镜像服务  4、管理控制台  5、镜像工具-->镜像加速器 ......
  • 服务器里面运行一个项目用docker容器
    先建一个文件docker-compose.yml#使用说明V3.3.0#1.使用docker-compose宿主机不需要配置host来发现#2.无需修改源码,根目录docker-composeup即可#3.静静等......
  • Docker安装Jenkins
    Docker安装Jenkins目录Docker安装Jenkins准备工作下载Jenkins镜像开始安装创建需要挂载的本地文件夹创建并启动Container打开jenkens安装插件创建用户准备工作下载Jenk......
  • 在Linux环境docker推送镜像到harbor仓库
    比如要把nginx这个镜像推送到hardor仓库[root@test23:00:14~/docker]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEnginx......
  • Docker常用命令总结
    Docker常用命令重启docker命令systemctlrestartdocker进入镜像dockerexec-itmysql/bin/bash移除指定容器dockerrm-f<containerid>删除未启动成......
  • Docker更新macvlan网段地址
    需求公司网络升级,原有网段发生改变,独立ip的macvlan容器无法访问。解决无需重建容器,按步骤更新网络即可。#断开连接dockernetworkdisconnectmacnetmy_container#......
  • 用Alpine 3.14镜像docker build 时出现make: /bin/sh: Operation not permitted 问题
    docker构建镜像时发现了如下的问题,翻了翻github,原因是docker版本低了/usr/src/lua-5.1.5#makelinuxcdsrc&&makelinuxmake:/bin/sh:Operationnotpermittedma......
  • 创建 Docker Compose 文件
    DockerCompose: 将多个Docker映像作为一个单元一起生成,然后部署该单元。DockerCompose文件是一个YAML文件,用于将多个docker容器组合在一起以进行生成和部署。......
  • 运行 docker run hello-world 报错 Unable to find image ‘hello-world:latest‘ loc
    原文链接:https://blog.csdn.net/weixin_43520450/article/details/107377342报错提示如下:解决办法:1、执行以下命令vi/etc/docker/daemon.json2、添加以下的内容并保......
  • 基于docker安装jumpserver
    以下配置均在一台ubuntu上实现#生成宿主机Mysql配置文件,便于docker内容器使用[root@ubuntu2004~]#mkdir-p/etc/mysql/mysql.conf.d[root@ubuntu2004~]#mkdir-p/......