基礎環境#
系統:openEuler 22.03 (LTS-SP4) X86
軟體:docker-26.1.3、 docker compose-2.27.0
關於 Watchtower#
Watchtower 是一個應用程式,監控正在運行的 Docker 容器,並監視這些容器的鏡像版本的變化。如果 Watchtower 檢測到容器的鏡像已更改,它將自動拉取新鏡像,關閉現有容器,使用最初部署時的相同選項重新啟動它,實現容器的優雅升級。
安裝 docker#
(1) 配置 yum 源下載 docker。
(2)安裝最新版 docker 和 docker compose。
(3)修改 Docker 的數據目錄為 “/data/dockerData”,並配置 docker 鏡像源。
(4)啟動 Docker 服務,並設置為開機自啟。
安裝 Watchtower#
方式一:通過 docker 命令安裝#
--restart=always
設置容器開機自啟
-v /var/run/docker.sock:/var/run/docker.sock
讀取 docker 守護進程的 API
-e TZ=Asia/Shanghai
使用本地時區
--interval 60
設置輪詢間隔為 60 秒
--cleanup
更新後刪除舊鏡像
方式二:使用 compose 文件安裝#
Watchtower 更多應用#
1.watchtower 監控更新遠程 Docker 主機#
(1)在遠程主機上啟用遠程 API 訪問。
(2)在本機創建 watchtower,監控遠程主機的 docker 容器
2. 按標籤篩選#
按標籤篩選進行容器的更新,需要在創建容器時,給容器打上包含com.centurylinklabs.watchtower.enable
的標籤,com.centurylinklabs.watchtower.enable=false
表示禁用對容器的監控和更新,com.centurylinklabs.watchtower.enable=true
表示啟用對容器的監控和更新,此類情況只適用於創建新容器時。
3. 禁用容器名稱篩選#
要禁用特定容器,需要在 watchtower 創建時加入--disable-containers
參數,並在該參數後加上容器名稱,如httpd
,運行時就會不監控名稱中含有 httpd 的容器。
4. 常用命令參數#
部分常用參數設置如下表所示。
參數 | 示例 | 說明 |
---|---|---|
--schedule "0 9 * * *" | docker run -itd --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Shanghai containrrr/watchtower --cleanup --schedule "0 9 * * *" | 每天九點執行更新調度 |
--run-once | docker run -rm --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Shanghai containrrr/watchtower --cleanup --run-once | 手動更新一次,並將 watchtower 刪除 |
容器名 | docker run -itd --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Shanghai containrrr/watchtower --cleanup nginx httpd | 指定更新容器 nginx、httpd |
--monitor-only | docker run -itd --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Shanghai containrrr/watchtower --cleanup --monitor-only | 只檢查容器是否需要更新,不應用更新 |
更多參數設置,可查看 watchtower 官方文檔。
https://containrrr.dev/watchtower/arguments/