3.2 KiB
3.2 KiB
安裝 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 小時
制定需要更新的容器
如果不想更新所有容器,可以設置指定的容器進行更新
以 nginx 和 netdata 這兩個容器舉例:
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
手動更新指定容器
繼續以 nginx 和 netdata 這兩個容器舉例
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
--run-once \
nginx netdata