🔧 定義 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 的驅動程式(如local
、nfs
等)
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 嗎?還是剛開始學呢?