Qnap Container Station

我透過 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 上維護我的容器變得非常容易。

謝謝你們大家!!