Files
Obsidian-Main/21.02. Linux/Watchtower.md

109 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 安裝 Watchtower
```shell
docker pull Watchtower
```
## 使用方法
```shell
docker run --detach \
--name watchtower \
--volume /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
```
使用剛剛的方法會拉取最新鏡像,但並不會自動刪除舊有鏡像,時間一長就會佔用很大空間,這裡可以使用 `--cleanup` 選項,在更新完舊容器之後自動刪除舊鏡像
```shell
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup
```
### 或使用 docke-compose.yml
```yaml
version: "3"
services:
watchtower:
image: containrrr/watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 86400 --cleanup
```
### 設置自動更新檢測頻率
Watchtower 默認是每 5min 檢測一次,如果需要更改週期,可以使用 `--interval``-i` 選項
如設定每小時檢測一次:
```shell
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
-i 3600
```
`-i 3600`:這裡的 `3600` 是設置的時間週期,單位是**秒** `3600` 即 1 小時
### 指定更新檢測時間
除了設置頻率,還可以使用 `--schedule``-s` 選項指定時間 如指定每天 UTC+8 時間凌晨 3 點更新。
```shell
docker run -d \
--name watchtower \
--restart always \
-e TZ=Asia/Taipei \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
-s "0 0 3 * * *"
```
這裡的執行時間為 UTC 時間,如果不指定時區,會比台北的 UTC+8:00 時間晚 8 小時
### 制定需要更新的容器
如果不想更新所有容器,可以設置指定的容器進行更新
`nginx``netdata` 這兩個容器舉例:
```shell
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
nginx netdata
```
這裡指定的容器只需要填寫**容器名**,而不是填寫該容器的**鏡像名**
## 手動更新
如果不想在使用容器時被自動更新打斷,可以使用 Watchtower 進行手動更新
由於是手動更新Watchtower 只需要用到一次,可以添加 `--rm``--run-once` 參數,在更新完之後過河拆橋
### 手動更新所有容器
```shell
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
--run-once
```
## 手動更新指定容器
繼續以 `nginx``netdata` 這兩個容器舉例
```shell
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
--run-once \
nginx netdata
```
## 參考
- [使用Watchtower自動更新Docker鏡像和容器 - Docker容器 - 計算機 | 🧂 = 鹽🧂的記事本 = ( ´∀`)ヵヵヵ](https://www.sio.moe/2021/12/18/computer/Docker-Container/Use-Watchtower-to-automatically-update-Docker-images-and-containers/)
- [storjlabs/watchtower Tags | Docker Hub](https://hub.docker.com/r/storjlabs/watchtower/tags)