Volume 外部目錄掛載與數據持久化(Docker)

Docker 中的 Volume 是一種專為持久化資料設計的機制,能讓資料即使容器被刪除也能保留。以下為常用 Volume 操作指令與說明。


常用指令

# 查看所有 Volume
docker volume ls

# 建立新的 Volume
docker volume create volumeName

# 使用 Volume 啟動容器(將 Volume 掛載至容器路徑)
docker container run -itd -v volumeName:/container/path imageName:imageTag

補充說明

  • docker volume ls:列出目前所有存在的 Volume。

  • docker volume create volumeName:建立一個新的 Volume,若未指定名稱,Docker 會自動產生。

  • -v volumeName:/container/path

    • volumeName 是主機上的 Volume 名稱。
    • /container/path 是容器內部的路徑,資料將會在此位置讀寫。
  • Volume 資料會儲存在 Docker 的預設目錄中(例如:/var/lib/docker/volumes),不易被不小心刪除。

  • 若改用 -v /host/path:/container/path,則是將主機上的目錄掛載進容器,這屬於 Bind Mount,不等同 Volume,但也可達到持久化目的。


與 Bind Mount 的差異簡述

項目 Volume Bind Mount
儲存位置 Docker 管理目錄(如 /var/lib/docker/... 使用者自定義的主機目錄
可攜性 高(可由 Docker 管理與備份) 低(完全依賴主機目錄)
安全性與隔離性 較高 較低
適用情境 建議用於資料庫或需持久化的應用 適用於需與本機原始碼同步的情境

進階查看 Volume 資訊

# 查看特定 Volume 詳細資訊
docker volume inspect volumeName

清除未使用的 Volume

# 清除所有未被容器使用的 Volume
docker volume prune

⚠️ 注意:docker volume prune 將會刪除所有未被使用的 Volume,請謹慎操作。