嗨
我透過 docker compose 建立了新的應用程式,現在我想要更新它。
目前我需要「重新建立」它,這樣應用程式會被刪除然後重新建立。
為什麼沒有像在 docker 裡使用 --build 旗標那樣直接更新應用程式的選項呢?這樣應用程式可以更快建立,只有更新的元件會被重新建立。
謝謝!
嗨
我透過 docker compose 建立了新的應用程式,現在我想要更新它。
目前我需要「重新建立」它,這樣應用程式會被刪除然後重新建立。
為什麼沒有像在 docker 裡使用 --build 旗標那樣直接更新應用程式的選項呢?這樣應用程式可以更快建立,只有更新的元件會被重新建立。
謝謝!
所以有幾件事情需要做。
1.) 在指定 docker 倉庫項目時,請務必使用標籤(tag),這樣才能取得你想要的正確版本。例如,這是我用於 SmokePing 的 compose 檔案。你可以看到我標示了 “smokeping:latest”。如果有新版本,只要維護倉庫的人有正確設定標籤,系統就會拉取最新版本。
但是……(請看我的 compose 檔案後面的說明)……
smokeping:
image: lscr.io/linuxserver/smokeping:latest
container_name: smokeping
hostname: smokeping #可選
networks:
qnet-network:
ipv4_address: 192.168.1.3
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- MASTER_URL=http://192.168.0.3:80/smokeping/ #可選
- CACHE_DIR=/tmp #可選
volumes:
- /share/Container/somokeping/config:/config
- /share/Container/smokeping/data:/data
ports:
- 80:80
restart: unless-stopped
networks:
qnet-network:
driver_opts:
iface: eth3
driver: qnet
ipam:
driver: qnet
options:
iface: eth3
config:
- subnet: 192.168.0.0/23
gateway: 192.168.1.1
2.) 有時候,即使標籤正確,QNAP 似乎也不一定會拉取最新版本。這是因為它已經有一份它認為是 “smokeping:latest” 的映像檔。你需要到 ContainerStation 的 Images 頁面,刪除它已經儲存的映像檔。在下方的截圖中,它有一個名為 “smokeping:latest” 的映像檔,因此可能不會拉取倉庫中實際最新的版本。刪除那個映像檔,然後重新建置時就會正常拉取最新的版本了。
關鍵在於使用 Compose,並掌控容器的資料儲存方式。
如此一來,你就能在不遺失任何資料或設定的情況下,建立、銷毀並重建容器。
另外,如果你希望在每次重建時都更新映像檔,可以在你的 compose 檔案中加入以下這行。這會告訴 Container Station 每次都下載最新映像檔。
pull_policy: always
只要記得要定期清理你的映像檔,以移除舊的內容。
在發現這個方法之前,我必須手動下載新映像檔,然後重建等等……這樣就能自動化這個流程了。
喔喔!這太棒了!謝謝你!
我也有運行 WUD,它是一個用來監控容器的 Docker 映像。因此,結合重建功能和「pull always」選項,在 Container Station 上維護我的容器變得非常容易。
謝謝你們大家!!