在 Container Station 應用程式中未顯示綁定的儲存空間

大家好;

我正在使用 TS-464 NAS;

我已成功部署了多個容器,並透過 CS 介面將內部目錄映射到 QNAP 主機。這很棒。我的所有容器資料都存放在 /local/containers-data 資料夾及其子資料夾(每個容器一個子資料夾)中。

我現在嘗試在應用程式中用一般的 “compose” 語法來做同樣的事,如下所示:

services:
  mongo:
    platform: linux/amd64
    image:  mongo:bionic
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: zorglub
      MONGO_INITDB_DATABASE: garden-planner
    ports:
      - "27017:27017"
    volumes: 
      - type: bind
        source: /local/containers-data/garden-planner/mongo/db
        target: /data/db
      - type: bind
        source: /local/containers-data/garden-planner/mongo/configdb
        target: /data/configdb

我已建立 /local/containers-data/garden-planner/mongo/db 和 configdb 這兩個資料夾。(我也試過不建立資料夾)

我原本預期會在這兩個資料夾中看到 /data/db 和 /data/configdb 的內容,但它們仍然是空的。

我已在容器的 “shell” 裡瀏覽 /data/db,內容是正確的。

QLog 沒有錯誤,容器日誌也沒有錯誤。

有沒有什麼想法?我已經苦惱了好幾個小時,Google 也找不到線索 :sleepy_face:

Xavier

我沒有使用 bind。這是我目前的設定:

   volumes:
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/SimpleHelp/configuration:/opt/SimpleHelp/configuration
    restart: always

    volumes:
      - /share/Container/somokeping/config:/config
      - /share/Container/smokeping/data:/data

也許只是語法上的差異,其實我們做的是同樣的事情?

謝謝!是的,這只是語法長短的問題。

看完你的回覆後,我用 ssh 進入 NAS,發現了我之前不知道的 “/shared” 目錄,在這個資料夾下還有 “local”,而且可以從 FileStation 存取。

當然,我在 “/local/” 找到了預期的檔案……就像 compose 檔案裡指定的一樣。
所以只要在綁定的 volumes 前面加上 “/shared”,一切就沒問題了。

奇怪的是,我以前直接用 CS 介面建立容器時從沒加過 “/shared”,也都能順利運作……

再次感謝,現在一切都正常了!

Xavier

太好了!

是的,/share 是 QNAP 世界中所有內容的頂層工作目錄。是的,根目錄 / 下還有其他卷和資料夾,但那些主要是給作業系統用的,不屬於使用者檔案系統。當然,有些程式像 NoteStation 以及其他程式會把它們的資料庫存放在這些「其他」資料夾裡,所以如果在清除 NAS 之前沒有匯出這些內容,你就會全部遺失。我就是這樣吃了苦頭!但所有「正常」的資料夾都在 /share 下面。

Hi @xjimenez

這裡有個參考:

假設我的容器應用程式有一個資料夾 /root/apple 需要「連結」到我 NAS 上指定的目錄,而我選擇在 File Station 使用資料夾 Container/folder-apple

我們有兩種方法。第一種是在 GUI 建立 Container 時,進入進階設定和儲存空間,然後選擇與主機對應 (Mapping with Host)。在第一個欄位選擇 NAS 上的資料夾 /Container/folder-apple 作為主機端 (Host),在第二個欄位手動輸入容器內的位置 /root/apple

第二種方法,如果你用 YAML 檔手動建立,就是在 -volumes 欄位建立一個掛載點 /share/Container/folder-apple:/root/apple

開頭的 /share 是固定的,/Container 是你在 File Station 看到的共用資料夾,/folder-apple 是子資料夾。冒號後的 :/root/apple 代表容器內的位置。

完成後,你的容器 /root/apple 就會和 File Station 的 Container/folder-apple 連結起來。不論是容器建立檔案,或你上傳檔案到 Container/folder-apple,檔案都能在兩邊平台看到。