Docker 卷插件
Docker Engine 卷插件使 Engine 部署能够与 外部存储系统(如 Amazon EBS),并支持数据卷持久保存 超过单个 Docker 主机的生命周期。有关更多信息,请参阅插件文档。
更改日志
1.13.0
- 如果用作 v2 插件体系结构的一部分,则作为
插件返回的 paths 必须挂载在
PropagatedMount
在插件配置 ( #26398)
1.12.0
1.10.0
1.8.0
- 对卷驱动程序插件的初步支持 ( #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
允许您
使用 Flocker 等插件进行管理
单个主机外部的卷,例如 EBS 上的卷。
创建 VolumeDriver
容器创建终端节点 (/containers/create
) 接受VolumeDriver
type 字段string
允许指定驱动程序的名称。如果不是
指定,则默认为"local"
(本地卷的默认驱动程序)。
卷插件协议
如果插件将自身注册为VolumeDriver
激活后,它必须
为 Docker 守护程序提供主机文件系统上的可写路径。The Docker
daemon 为容器提供这些路径以供使用。Docker 守护进程使
通过将提供的路径绑定挂载到容器中来可用的卷。
注意
卷插件不应将数据写入
/var/lib/docker/
目录 包括/var/lib/docker/volumes
.这/var/lib/docker/
directory 为 为 Docker 保留。
/VolumeDriver.Create
请求:
{
"Name": "volume_name",
"Opts": {}
}
指示插件用户要创建卷(给定用户)
指定的卷名称。该插件不需要实际显示
卷(直到Mount
称为 Cash)。Opts
是从用户请求传递的驱动程序特定选项的映射。
响应:
{
"Err": ""
}
如果发生错误,则使用字符串错误进行响应。
/VolumeDriver.Remove
请求:
{
"Name": "volume_name"
}
从磁盘中删除指定的卷。当用户
调用docker rm -v
以删除与容器关联的卷。
响应:
{
"Err": ""
}
如果发生错误,则使用字符串错误进行响应。
/VolumeDriver.Mount
请求:
{
"Name": "volume_name",
"ID": "b87d7442095999a92b65b3d9691e697b61713829cc0ffd1bb72e4ccd51aa4d6c"
}
Docker 要求插件在给定用户指定卷的情况下提供卷
名字。Mount
在每个容器启动时调用一次。如果相同volume_name
请求
不止一次,插件可能需要跟踪每个新的挂载请求和配置
在第一个 mount 请求时取消配置,并在最后一个相应的卸载请求中取消配置。
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
请求:
{}
获取驱动程序支持的功能列表。
驱动程序不需要实现Capabilities
.如果不是
implemented 时,将使用默认值。
响应:
{
"Capabilities": {
"Scope": "global"
}
}
支持的范围包括global
和local
.中的任何其他值Scope
将是
ignored 和local
被使用。Scope
允许集群管理器处理
音量。例如,范围global
,向
Cluster Manager 中,它只需要创建一次卷,而不是在每个卷上
Docker 主机。将来可能会添加更多功能。