Files
Obsidian-Main/21.01. OS/21.01. Linux/Watchtower.md
Awin Huang 5d4e261181 vault backup: 2025-07-22 22:14:08
Affected files:
Too many files to list
2025-07-22 22:14:08 +08:00

3.2 KiB
Raw Blame History

安裝 Watchtower

docker pull Watchtower

使用方法

docker run --detach \
	--name watchtower \
	--volume /var/run/docker.sock:/var/run/docker.sock \
	containrrr/watchtower

使用剛剛的方法會拉取最新鏡像,但並不會自動刪除舊有鏡像,時間一長就會佔用很大空間,這裡可以使用 --cleanup 選項,在更新完舊容器之後自動刪除舊鏡像

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

或使用 docke-compose.yml

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 選項 如設定每小時檢測一次:

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 點更新。

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 小時

制定需要更新的容器

如果不想更新所有容器,可以設置指定的容器進行更新 以 nginxnetdata 這兩個容器舉例:

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 參數,在更新完之後過河拆橋

手動更新所有容器

docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup \
    --run-once

手動更新指定容器

繼續以 nginxnetdata 這兩個容器舉例

docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup \
    --run-once \
    nginx netdata

參考