?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
Docker Engine卷插件使引擎部署能夠與Amazon EBS等外部存儲系統(tǒng)集成,并使數(shù)據(jù)卷在單個Docker主機的生命周期之后持續(xù)存在。有關更多信息,請參閱插件文檔。
如果用作v2插件體系結構的一部分,則作為插件返回路徑一部分的掛載點必須安裝在PropagatedMount
插件配置(#26398)指定的目錄下1.12.0
將Status
字段添加到VolumeDriver.Get
響應(#21006)
添加VolumeDriver.Capabilities
以獲得卷驅動程序的功能(#22077)
添加VolumeDriver.Get
獲取有關卷的詳細信息(#16534)
添加VolumeDriver.List
列出驅動程序擁有的所有卷(#16534)
對卷驅動程序插件的初始支持(#14659)
要為容器提供對卷的訪問權限,請在命令中使用--volume
和--volume-driver
標志docker container run
。--volume
(或-v
)標志接受主機上卷名稱和路徑,以及--volume-driver
標志接受驅動程序類型。
$ docker volume create --driver=flocker volumename $ docker container run -it --volume volumename:/data busybox sh
--volume
--volume
(或-v
)標志取值是在格式 <volume_name>:<mountpoint>
。值的兩部分用冒號(:
)分隔。
卷名稱是卷的可讀的名稱,不能以/
性格。它被稱為volume_name
在本主題的其余部分。
Mountpoint
是主機(v1)或插件(v2)中卷的可用路徑。
volumedriver
通過volumedriver
與volumename
聯(lián)合指定,您可以使用插件(如Flocker)來管理單個主機(例如EBS上的那些主機)的外部卷。
容器創(chuàng)建endpoint(/containers/create
)接受允許指定驅動程序名稱的VolumeDriver
類型字段string
。如果未指定,則默認為"local"
(本地卷的默認驅動程序)。
如果插件將自己注冊為VolumeDriver
激活時,它必須為主機文件系統(tǒng)上的可寫路徑提供Docker守護程序。Docker守護進程提供了這些路徑以供容器使用。Docker守護進程通過將提供的路徑綁定到容器中來使這些卷可用。
注:音量插件應該不將數(shù)據(jù)寫入到
/var/lib/docker/
目錄,包括/var/lib/docker/volumes
。該/var/lib/docker/
目錄是為Docker保留的。
/VolumeDriver.Create
請求:
{ "Name": "volume_name", "Opts": {}}
指定插件用戶想要創(chuàng)建一個卷,給定用戶指定的卷名稱。該插件不需要在文件系統(tǒng)上實際顯示音量(直到Mount
被調用)。Opts
是從用戶請求傳遞的驅動程序特定選項的映射。
響應:
{ "Err": ""}
如果發(fā)生錯誤,則返回字符串錯誤。
/VolumeDriver.Remove
請求:
{ "Name": "volume_name"}
從磁盤刪除指定的卷。當用戶調用docker rm -v
刪除與容器關聯(lián)的卷時,會發(fā)出此請求。
響應:
{ "Err": ""}
如果發(fā)生錯誤,則返回字符串錯誤。
/VolumeDriver.Mount
請求:
{ "Name": "volume_name", "ID": "b87d7442095999a92b65b3d9691e697b61713829cc0ffd1bb72e4ccd51aa4d6c"}
給定用戶指定的卷名,Docker需要該插件提供卷。Mount
在每個容器啟動時調用一次。如果volume_name
多次請求相同,則插件可能需要跟蹤第一個安裝請求中的每個新的安裝請求和供應,并在最后一個相應的卸載請求處取消配置。
ID
是請求掛載的呼叫者的唯一ID。
響應:
v1: { "Mountpoint": "/path/to/directory/on/host", "Err": "" }
v2:
{ "Mountpoint": "/path/under/PropagatedMount", "Err": "" }
Mountpoint
是主機(v1)或插件(v2)中卷的可用路徑。
Err
是空的或包含錯誤字符串。
/VolumeDriver.Path
請求:
{ "Name": "volume_name"}
用給定的方式請求卷的路徑volume_name
。
響應:
v1: { "Mountpoin": "/path/to/directory/on/host", "Err": "" }
v2:
{ "Mountpoint": "/path/under/PropagatedMount", "Err": "" }
響應主機(v1)上的路徑或插件(v2)中可用的卷的路徑,和/或發(fā)生錯誤時的字符串錯誤。
Mountpoint
是可選的。但是,如果沒有提供插件,稍后可能會再次查詢該插件。
/VolumeDriver.Unmount
請求:
{ "Name": "volume_name", "ID": "b87d7442095999a92b65b3d9691e697b61713829cc0ffd1bb72e4ccd51aa4d6c"}
Docker不再使用指定的卷。Unmount
每集裝箱??恳淮?。插件可能會推斷出在這個時候取消配置音量是安全的。
ID
是請求掛載的調用者的唯一ID。
響應:
{ "Err": ""}
如果發(fā)生錯誤,則返回字符串錯誤。
/VolumeDriver.Get
請求:
{ "Name": "volume_name"}
獲取有關信息volume_name
。
響應:
v1: { "Volume": { "Name": "volume_name", "Mountpoint": "/path/to/directory/on/host", "Status": {} }, "Err": "" }
v2:
{ "Volume": { "Name": "volume_name", "Mountpoint": "/path/under/PropagatedMount", "Status": {} }, "Err": "" }
如果發(fā)生錯誤,則返回字符串錯誤。Mountpoint
并且Status
是可選的。
Request:
{}
獲取插件注冊的卷列表。
響應:
v1: { "Volumes": { "Name": "volume_name", "Mountpoint": "/path/to/directory/on/host" } , "Err": "" }
v2:
{ "Volumes": { "Name": "volume_name", "Mountpoint": "/path/under/PropagatedMount" } , "Err": "" }
如果發(fā)生錯誤,則返回字符串錯誤。Mountpoint
是可選的。
請求:
{}
獲取驅動程序支持的功能列表。
司機不需要執(zhí)行Capabilities
。如果未實施,則使用默認值。
響應:
{ "Capabilities": { "Scope": "global" }}
受支持的范圍是global
和local
。其他任何值都Scope
將被忽略,并被local
使用。Scope
允許集群管理者以不同的方式處理卷。例如,作用域的global
信號告訴集群管理器只需創(chuàng)建一次卷而不是在每臺Docker主機上創(chuàng)建卷。未來可能會增加更多功能。