杜老师喜欢使用 Docker 部署轻量级的应用,不过后期维护起来还是挺麻烦的,主要是新版本发布后的更新问题,需停止并删除当前容器,更新版本后使用相同参数再运行。今天介绍一款可以自动更新 Docker 容器的工具!
Watchtower 是一个应用程序,它将监视正在运行的 Docker 容器,并监视这些容器最初从其启动镜像的更改。如果 Watchtower 检测到镜像的版本已更改,它将使用新版镜像自动重新启动容器。
只需要将新镜像推送到 Docker Hub 或自己的镜像注册表,即可更新容器化应用的运行版本。Watchtower 将拉下新版镜像,并正常关闭现有的容器,使用与最初部署时相同的选项重新启动它。
只需运行下面命令即可:
1 | docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower |
如果正在运行的容器比较多,只想监控其中几个容器,可以按照下面命令执行,如 Nginx/MySQL:
1 | docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower nginx mysql |
如果不需要 Watchtower 一直监控,而是运行一次即可,可运行下面的命令:
1 | docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once |
Watchtower 默认升级新版镜像后,仍保留原版本镜像,如果无需保留,可运行下面的命令:
1 | docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup |
Watchtower 默认不会监控停止状态的容器,如果需要一并升级,可运行下面的命令:
1 | docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --include-stopped |
Watchtower 默认每 24 小时检查新版本,如果需要修改检查间隔,可运行下面的命令:
1 | docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --interval 86400 |