【好用docker推荐】自动更新正在运行的docker

胡言

本人是强迫症,见不得软件用的不是最新版- -!,之前自己写了个更新脚本,定期执行更新,也可以做计划任务,但是总是没那么方便,且限制较多。

乱语

某天群里大佬说watchtower可以自动更新docker,仿佛发现的希望,经过几天的思考(实际上是忘记这茬了),今天摸鱼时间看了一下这个如何使用。
官方的文档还是很完善的,介绍的也很详细,详见:https://containrrr.github.io/watchtower/arguments/
如果全部使用默认设置的话直接使用命令:

docker run -d \
    --name watchtower \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower

或者使用docker-compose:

version: '2.1'
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: always

默认每五分钟查一次是否有更新,如果有就会下载新镜像并且以新镜像运行。
我的需求是更新后删除老的镜像,如果有未使用的挂载文件夹也同时删除

version: '2.1'
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Shanghai
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_REMOVE_VOLUMES=true
    restart: always

其他功能可根据文档来设置,拿更新后清除老镜像为例:


如果是docker run执行的话 ,就在docker run中增加Argument部分即:–cleanup,

docker run -d \
    --name watchtower \
    --cleanup \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower

如果是docker-compose执行的话,在Environment中增加参数WATCHTOWER_REMOVE_VOLUMES,设置true或者false(默认flase)

version: '2.1'
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Shanghai
      - WATCHTOWER_CLEANUP=true
    restart: always

如果远程主机的docker需要自动更新的话,可以使用docker_host,具体还请看官方说明文档。


以下是我的更新日志:

全文完 Enjoy it!

我要拿沙发,感谢大佬的分享。

地板我要了。。。。。。。