Docker 卷插件
Docker Engine 卷插件使 Engine 部署能够与 外部存储系统(如 Amazon EBS),并支持数据卷持久保存 超过单个 Docker 主机的生命周期。有关更多信息,请参阅插件文档。
更改日志
1.13.0
- 如果用作 v2 插件体系结构的一部分,则作为
插件返回的 paths 必须挂载在插件配置中指定的目录下
( #26398
PropagatedMount
)
1.12.0
1.10.0
1.8.0
- 对卷驱动程序插件的初步支持 ( #14659)
命令行更改
要为容器提供对卷的访问权限,请在命令中使用 and 标志。(或 ) 标志
接受主机上的卷名称和路径,以及标志
接受驱动程序类型。--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
(or ) 标志采用格式为 .该值的两个部分是
用冒号 () 字符分隔。--volume
-v
<volume_name>:<mountpoint>
:
- 卷名称是卷的可读名称,不能以
一个角色。它与本主题的其余部分相同。
/
volume_name
- 是主机 (v1) 或插件 (v2) 中的路径,其中
卷 已可用。
Mountpoint
volumedriver
将 a 与 a 结合使用,您可以
使用 Flocker 等插件进行管理
单个主机外部的卷,例如 EBS 上的卷。volumedriver
volumename
创建 VolumeDriver
容器创建端点 () 接受允许指定驱动程序名称的字段类型。如果不是
指定,则默认为 (本地卷的默认驱动程序)。/containers/create
VolumeDriver
string
"local"
卷插件协议
如果插件在激活时将自身注册为 ,则它必须
为 Docker 守护程序提供主机文件系统上的可写路径。The Docker
daemon 为容器提供这些路径以供使用。Docker 守护进程使
通过将提供的路径绑定挂载到容器中来可用的卷。VolumeDriver
注意
卷插件不应将数据写入目录, 包括。目录为 为 Docker 保留。
/var/lib/docker/
/var/lib/docker/volumes
/var/lib/docker/
/VolumeDriver.Create
请求:
{
"Name": "volume_name",
"Opts": {}
}
指示插件用户要创建卷(给定用户)
指定的卷名称。该插件不需要实际显示
volume 尚未在文件系统上(直到被调用)。 是从用户请求传递的驱动程序特定选项的映射。Mount
Opts
响应:
{
"Err": ""
}
如果发生错误,则使用字符串错误进行响应。
/VolumeDriver.Remove
请求:
{
"Name": "volume_name"
}
从磁盘中删除指定的卷。当用户
调用以删除与容器关联的卷。docker rm -v
响应:
{
"Err": ""
}
如果发生错误,则使用字符串错误进行响应。
/VolumeDriver.Mount
请求:
{
"Name": "volume_name",
"ID": "b87d7442095999a92b65b3d9691e697b61713829cc0ffd1bb72e4ccd51aa4d6c"
}
Docker 要求插件在给定用户指定卷的情况下提供卷
名字。 在每个容器启动时调用一次。如果要求相同
不止一次,插件可能需要跟踪每个新的挂载请求和配置
在第一个 mount 请求时取消配置,并在最后一个相应的卸载请求中取消配置。Mount
volume_name
ID
是请求挂载的调用方的唯一 ID。
响应:
第 1 版
{ "Mountpoint": "/path/to/directory/on/host", "Err": "" }
第 2 版
{ "Mountpoint": "/path/under/PropagatedMount", "Err": "" }
Mountpoint
是主机 (v1) 或插件 (v2) 上的路径,其中卷
已推出。
Err
为空或包含错误字符串。
/VolumeDriver.Path
请求:
{
"Name": "volume_name"
}
请求具有给定 .volume_name
响应:
第 1 版
{ "Mountpoint": "/path/to/directory/on/host", "Err": "" }
第 2 版
{ "Mountpoint": "/path/under/PropagatedMount", "Err": "" }
使用主机上 (v1) 或插件 (v2) 内的路径进行响应,其中 volume has been available 和/或 String Error (如果发生错误)。
Mountpoint
是可选的。但是,如果出现
未提供。
/VolumeDriver.Unmount
请求:
{
"Name": "volume_name",
"ID": "b87d7442095999a92b65b3d9691e697b61713829cc0ffd1bb72e4ccd51aa4d6c"
}
Docker 不再使用命名卷。 每
容器停止。插件可能会推断出在
这一点。Unmount
ID
是请求挂载的调用方的唯一 ID。
响应:
{
"Err": ""
}
如果发生错误,则使用字符串错误进行响应。
/VolumeDriver.Get
请求:
{
"Name": "volume_name"
}
获取有关 的信息。volume_name
响应:
第 1 版
{ "Volume": { "Name": "volume_name", "Mountpoint": "/path/to/directory/on/host", "Status": {} }, "Err": "" }
第 2 版
{ "Volume": { "Name": "volume_name", "Mountpoint": "/path/under/PropagatedMount", "Status": {} }, "Err": "" }
如果发生错误,则使用字符串错误进行响应。 并且是
自选。Mountpoint
Status
/VolumeDriver.List
请求:
{}
获取使用插件注册的卷列表。
响应:
第 1 版
{ "Volumes": [ { "Name": "volume_name", "Mountpoint": "/path/to/directory/on/host" } ], "Err": "" }
第 2 版
{ "Volumes": [ { "Name": "volume_name", "Mountpoint": "/path/under/PropagatedMount" } ], "Err": "" }
如果发生错误,则使用字符串错误进行响应。 是可选的。Mountpoint
/VolumeDriver.Capabilities
请求:
{}
获取驱动程序支持的功能列表。
驱动程序不需要实现 .如果不是
implemented 时,将使用默认值。Capabilities
响应:
{
"Capabilities": {
"Scope": "global"
}
}
支持的范围包括 和 。中的任何其他值都将是
ignored 和 used。 允许集群管理器处理
音量。例如,范围 , 向
Cluster Manager 中,它只需要创建一次卷,而不是在每个卷上
Docker 主机。将来可能会添加更多功能。global
local
Scope
local
Scope
global