1.10.0若要讓容器存取磁碟區,請在 docker container run
命令中使用 --volume
和 --volume-driver
旗標。--volume
(或 -v
)旗標接受磁碟區名稱和主機上的路徑,而 --volume-driver
旗標接受驅動程式類型。
--volume
(或 -v
)旗標的值格式為 <磁碟區名稱>:<掛載點>
。值的兩個部分以冒號 (:
) 字元分隔。
- 磁碟區名稱是磁碟區的人類可讀名稱,且不能以
/
字元開頭。在本主題的其餘部分,它被稱為 volume_name
。 掛載點
是主機 (v1) 或插件 (v2) 中已提供磁碟區的路徑。
將 volumedriver
與 volumename
搭配使用,可讓您使用諸如 Flocker 等插件來管理單一主機外部的磁碟區,例如 EBS 上的磁碟區。
容器建立端點 (/containers/create
) 接受類型為 string
的 VolumeDriver
欄位,允許指定驅動程式名稱。如果未指定,則預設為 "local"
(本地磁碟區的預設驅動程式)。
如果插件在啟動時將自身註冊為 VolumeDriver
,則它必須向 Docker Daemon 提供主機檔案系統上的可寫入路徑。Docker Daemon 將這些路徑提供給容器使用。Docker Daemon 透過將提供的路徑繫結掛載到容器中來提供磁碟區。
注意事項
磁碟區插件不應將資料寫入 /var/lib/docker/
目錄,包括 /var/lib/docker/volumes
。/var/lib/docker/
目錄是 Docker 保留的。
請求
指示插件,使用者想要建立磁碟區,並指定使用者指定的磁碟區名稱。插件目前還不需要在檔案系統上實際顯示磁碟區(直到呼叫 Mount
為止)。Opts
是一個從使用者請求傳遞的驅動程式特定選項的映射。
回應
如果發生錯誤,則以字串錯誤回應。
請求
從磁碟中刪除指定的磁碟區。當使用者叫用 docker rm -v
來移除與容器關聯的磁碟區時,會發出此請求。
回應
如果發生錯誤,則以字串錯誤回應。
請求
Docker 要求插件提供磁碟區,並指定使用者指定的磁碟區名稱。每次容器啟動時都會呼叫一次 Mount
。如果多次請求相同的 volume_name
,插件可能需要追蹤每個新的掛載請求,並在第一次掛載請求時進行佈建,並在最後一次對應的卸載請求時進行解除佈建。
ID
是請求掛載的呼叫端的唯一 ID。
回應
掛載點
是主機 (v1) 或插件 (v2) 中已提供磁碟區的路徑。
Err
為空或包含錯誤字串。
請求
請求具有指定 volume_name
的磁碟區的路徑。
回應
以主機 (v1) 或插件 (v2) 內已提供磁碟區的路徑回應,如果發生錯誤,則以字串錯誤回應。
掛載點
是可選的。但是,如果未提供,插件可能會在稍後再次被查詢。
請求
Docker 不再使用指定的磁碟區。每次容器停止時都會呼叫一次 Unmount
。插件可以推斷此時解除佈建磁碟區是安全的。
ID
是請求掛載的呼叫端的唯一 ID。
回應
如果發生錯誤,則以字串錯誤回應。
請求
取得關於 volume_name
的資訊。
回應
如果發生錯誤,則以字串錯誤回應。掛載點
和 狀態
是可選的。
請求
取得向插件註冊的磁碟區清單。
回應
如果發生錯誤,則以字串錯誤回應。掛載點
是可選的。
請求
取得驅動程式支援的功能清單。
驅動程式不需要實作 Capabilities
。如果未實作,則使用預設值。
回應
支援的範圍為 global
和 local
。Scope
中的任何其他值都將被忽略,並使用 local
。Scope
允許叢集管理器以不同的方式處理磁碟區。例如,範圍 global
向叢集管理器發出信號,表示它只需要建立一次磁碟區,而不是在每個 Docker 主機上建立。未來可能會新增更多功能。