這里是青檸的《零基礎(chǔ)玩轉(zhuǎn)docker》開(kāi)篇教程!不用記復(fù)雜命令,小白也能輕松上手的保姆級(jí)指南來(lái)啦~

【神器登場(chǎng)】Watchtower - Docker黨的自動(dòng)更新管家

它就像你手機(jī)里的「應(yīng)用商店自動(dòng)更新」功能!簡(jiǎn)單來(lái)說(shuō):
Docker Hub ≈ 手機(jī)應(yīng)用商店(存放所有鏡像的倉(cāng)庫(kù))
Watchtower ≈ 手機(jī)系統(tǒng)更新服務(wù)(24小時(shí)待命的智能管家)
Docker容器 ≈ 你安裝的APP(比如微信/支付寶)

舉個(gè)栗子
當(dāng)微信推出新版本時(shí),你的手機(jī)會(huì)自動(dòng)檢測(cè)→下載→靜默更新。而Watchtower正是把這種「無(wú)感更新」帶到Docker世界!它會(huì)定時(shí)掃描容器對(duì)應(yīng)的鏡像版本,發(fā)現(xiàn)更新立即執(zhí)行「鏡像拉取→容器重建→無(wú)縫切換」三連擊,全程無(wú)需手動(dòng)敲命令!

三大核心功能
智能監(jiān)控:自動(dòng)檢測(cè)所有運(yùn)行中容器的鏡像更新
靈活策略:支持立即更新/定時(shí)更新/手動(dòng)確認(rèn)模式
無(wú)縫切換:采用滾動(dòng)更新機(jī)制確保服務(wù)不中斷

適合哪些人?
??總忘記更新容器的小迷糊
??同時(shí)管理多臺(tái)nas的極客玩家
??想徹底擺脫命令行操作的小白用戶

? 注意事項(xiàng)
① 數(shù)據(jù)庫(kù)類容器(如MySQL)慎用自動(dòng)更新
② 建議先為關(guān)鍵容器設(shè)置更新通知(教程后續(xù)會(huì)教)
③ 可通過(guò)標(biāo)簽控制特定容器的更新策略

拓展閱讀:Watchtower官方文檔 (青檸提示:文檔雖好但全英文哦?。?/p>


watchtower 的使用

注意:鏡像更新只能更新版本是 latest 的鏡像,無(wú)法更新帶版本號(hào)的鏡像!

群暉/威聯(lián)通Docker升級(jí)指南丨零基礎(chǔ)容器更新技巧手把手教程

更新鏡像的幾種模式

以下這幾種模式各有利弊,按照自己需求進(jìn)行選擇哈!

  1. 模式一:發(fā)現(xiàn)更新提醒我,然后由我手動(dòng)選擇更新;

這種模式的問(wèn)題在于,發(fā)現(xiàn)更新鏡像后,雖然提醒我們了,但是還需要我們?nèi)ナ褂肧SH手動(dòng)執(zhí)行命令來(lái)進(jìn)行鏡像更新,非常的不方便,時(shí)間久了就懶得更新了。

sudo docker run -d

--name watchtower

-v /var/run/docker.sock:/var/run/docker.sock

containrrr/watchtower

使用上面命令,可以部署 watchtower,會(huì)自動(dòng)監(jiān)控全部鏡像是否有可用更新,當(dāng)有可用更新時(shí),自動(dòng)更新。

  1. 模式二:立即更新全部可更新鏡像;

這種模式的問(wèn)題在于,不想更新的鏡像,也會(huì)給更新了,就比如某個(gè)鏡像我就想用指定的版本,但是使用這種模式,會(huì)強(qiáng)制自動(dòng)更新最新的鏡像。

# 以下命令是:檢查更新 linuxserver-radarr-1和 portainer ,并且更新好之后退出本次運(yùn)行創(chuàng)建的 Watch-tower 容器然后刪除鏡像文件,多個(gè)容器在后面加空格隔開(kāi)即可 注意 : linuxserver-radarr-1和 portainer 這兩個(gè)名稱,是容器的名稱,或在SSH中使用 sudo docker ps 查看。

sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once linuxserver-radarr-1 portainer

  1. 模式三:某一個(gè)時(shí)間集中更新指定的應(yīng)用;

這種模式相對(duì)友好,不過(guò)需要每次新增鏡像后,也同時(shí)更新一下鏡像更新配置,這樣即可發(fā)現(xiàn)指定鏡像需要更新后,自動(dòng)集中更新。

群暉中的配置如下:

以 每日定時(shí) 檢查 指定鏡像,并進(jìn)行更新為例,做一個(gè)演示

  • 依次打開(kāi):控制面板 - 任務(wù)計(jì)劃,在 任務(wù)計(jì)劃 中
  • 點(diǎn)擊 新增 - 計(jì)劃的任務(wù) - 用戶定義的腳本
  • 在常規(guī)設(shè)置中,任務(wù)名稱可以自己隨便起,不過(guò)必須是英文和數(shù)字,用戶選擇root
  • 在計(jì)劃設(shè)置中,設(shè)置任務(wù)運(yùn)行的周期以及時(shí)間,想每天更新的可以選擇每天重復(fù),我覺(jué)得沒(méi)有必要每天都去更新,就選擇了每周二的凌晨2:00進(jìn)行更新,因?yàn)檫@個(gè)時(shí)間我不會(huì)使用Docker,避免更新而造成的使用的中斷
  • 在任務(wù)設(shè)置中,輸入我們的命令,其中qinglong 和 netdata 是指定要更新的容器的名稱;注意: 如果為空的話是全部更新,我只是指定了我需要更新的容器,避免一些重要的Docker因更新造成運(yùn)行不穩(wěn)定。如果多個(gè)容器需要更新,可填寫多個(gè)名稱,中間用空格隔開(kāi)

群暉/威聯(lián)通Docker升級(jí)指南丨零基礎(chǔ)容器更新技巧手把手教程
群暉/威聯(lián)通Docker升級(jí)指南丨零基礎(chǔ)容器更新技巧手把手教程
群暉/威聯(lián)通Docker升級(jí)指南丨零基礎(chǔ)容器更新技巧手把手教程
群暉/威聯(lián)通Docker升級(jí)指南丨零基礎(chǔ)容器更新技巧手把手教程
群暉/威聯(lián)通Docker升級(jí)指南丨零基礎(chǔ)容器更新技巧手把手教程

如何我們不想發(fā)送郵件,可以使用查看日志的方式,了解任務(wù)的執(zhí)行情況,將上面的腳步該項(xiàng)一下, 注意,這里的/volume2/docker/docker_bak/日志路徑換成你自己機(jī)器上面的哈!

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once --trace qinglong-1 showdoc > /volume2/docker/docker_bak/watchtower.log 2>&1

補(bǔ)充知識(shí)

利用 API 接口對(duì)鏡像進(jìn)行更新操作。

要啟用此模式,請(qǐng)使用標(biāo)志--http-api-update,默認(rèn)情況下,啟用此模式可防止定期輪詢(即使用--interval或指定的輪詢--schedule)。要運(yùn)行定期更新,請(qǐng)傳遞--http-api-periodic-polls。

請(qǐng)注意,有一個(gè)名為 WATCHTOWER_HTTP_API_TOKEN 的環(huán)境變量。為了防止外部服務(wù)意外觸發(fā)鏡像更新,所有請(qǐng)求都必須在其標(biāo)頭中包含一個(gè) “Token” 字段,其值為 WATCHTOWER_HTTP_API_TOKEN 中定義的令牌。在這種情況下,有一個(gè)端口綁定到主機(jī),允許請(qǐng)求 localhost:8080 到達(dá) Watchtower。

version: '3'

services:

app-monitored-by-watchtower:

image: myapps/monitored-by-watchtower

labels: - "com.centurylinklabs.watchtower.enable=true"

watchtower:

image: containrrr/watchtower

volumes: - /var/run/docker.sock:/var/run/docker.sock

command: --debug --http-api-update

environment: - WATCHTOWER_HTTP_API_TOKEN=定義一個(gè)Token

labels: - "com.centurylinklabs.watchtower.enable=false"

ports: - 8080:8080

  1. 觸發(fā)全部鏡像的更新

curl -H "Authorization: Bearer 上面定義的Token" localhost:8080/v1/update

  1. 更新指定鏡像

curl -H "Authorization: Bearer 上面定義的Token" localhost:8080/v1/update?image=foo/bar,foo/baz

下期預(yù)告:《極空間/綠聯(lián)/飛牛NAS實(shí)戰(zhàn)丨可視化Docker升級(jí)手把手教程》,關(guān)注青檸不迷路~

作者聲明本文無(wú)利益相關(guān),歡迎值友理性交流,和諧討論~

,

聲明:本站所有文章,如無(wú)特殊說(shuō)明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書(shū)籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。