Kubernetes/Docker/Docs/Docker部署Watchtower管理容器更新.md

158 lines
3.5 KiB
Markdown
Raw Permalink Normal View History

2024-08-07 10:54:39 +00:00
> 本文作者:丁辉
# Docker部署Watchtower管理容器更新
[Github仓库](https://github.com/containrrr/watchtower)
## 介绍
Watchtower 是一个开源的容器监控和自动更新工具设计用于Docker容器环境。它可以监控正在运行的容器及其使用的镜像当发现镜像有更新时自动拉取新镜像并重新启动容器。这种自动化管理方式有助于确保部署的应用保持最新状态从而减少安全风险和改进功能。
## 快速开始
```bash
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
```
所有容器都会自动更新,也包括 Watch­tower 本身。
## 其他启动参数
- 自动清除旧镜像
```bash
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup
```
> `--cleanup` 选项可以简写为 `-c`
```bash
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c
```
- 选择性自动更新
```bash
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c \
nginx redis
```
- 配置容器更新列表
```bash
vi ~/.watchtower.list
```
内容如下
```bash
nginx
reidis
```
启动 Watchtower 容器
```bash
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c \
$(cat ~/.watchtower.list)
```
- 设置单个容器自动更新标签
```bash
docker run -d \
--name nginx \
--restart always \
--label com.centurylinklabs.watchtower.enable=true \
nginx:latest
```
启动 Watchtower 容器
```bash
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c \
--label-enable
```
> `--label-enable` 可以简写为 `-e`
```bash
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -ce
```
- 设置自动更新检查频率
- `--interval` 设置更新检测时间间隔单位为秒。
```bash
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c \
--interval 3600
```
- `--schedule` 设置定时检测更新时间。格式为 6 字段 Cron 表达式,而非传统的 5 字段,第一位是秒。
> 比如每天凌晨 2 点检查一次更新
```bash
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c \
--schedule "0 0 2 * * *"
```
- 手动更新
> 检查 nginx 是否需要更新
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c \
--run-once \
nginx
```
> `--run-once` 可以简写为 `-R`
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -cR \
nginx
```
> 当容器设置过 `com.centurylinklabs.watchtower.enable=false` 参数则不会更新