Compose 延伸 - Volume
| 2025-4-8
字數 476閱讀時間 2 分鐘

🔧 定義 Volume 的位置

1. 在 volumes: 項目下(頂層)

這是用來聲明你將在服務中使用的 volume 名稱。可以只命名不指定細節,也可以進一步設定屬性。

2. 在 services: 裡掛載 Volume

這樣會把名為 mydata 的 volume 掛載到容器內的 /data 路徑。

🧰 Volume 掛載語法

  • <volume-name>:對應在 volumes: 頂層定義的名稱
  • <container-path>:容器內部的掛載點
  • <access-mode>(可選):ro 為唯讀,rw 為可讀寫(預設)

🧪 範例:


📁 支援的 Volume 類型

1. Named Volumes(命名卷)

由 Docker 自動管理的 volume,用來持久化資料。

2. Anonymous Volumes(匿名卷)

未命名的 volume,Docker 自動分配名稱,一般用於短期用途。

3. Host Volumes(主機目錄)

直接掛載主機上的目錄(不是 Docker volume)

⚙️ Volume 的屬性設定

📘 說明:

  • driver:指定 volume 的驅動程式(如 localnfs 等)
  • driver_opts:設定 volume 的驅動參數
  • labels:加上自定義的 metadata(標籤)

🧩 Compose volume 與 docker CLI 對應

Compose 定義
對應 CLI 命令
volumes:
docker volume create
掛載語法
docker run -v <volume>:<path>
主機掛載
-v $(pwd):/app

📝 小提醒

  • Volumes 定義是在 volumes: 區塊(不是 services: 裡面)
  • 掛載 volume 時要注意目錄權限與路徑正確性
  • 主機掛載(host volumes)不會自動建立資料夾,需要先手動建立或加 bind 設定
  • 使用 named volumes 可以讓資料在容器重建時不遺失

如果你想要我再幫你整理成 Markdown 檔案或加上圖解,都可以跟我說喔!你目前有在使用 Docker Compose 嗎?還是剛開始學呢?
Loading...