Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Docker 卷

当使用 Docker 卷时,可以使用内置的 local 驱动程序或第三方卷驱动程序。如果使用第三方驱动程序,它应在启动任务前安装在容器实例上。Docker 卷由 Docker 管理,而目录在包含卷数据的容器实例上的 /var/lib/docker/volumes 中创建。仅当使用 EC2 启动类型时,才支持 Docker 卷。Windows 容器仅支持使用 local 驱动程序。要使用 Docker 卷,请在任务定义中指定 dockerVolumeConfiguration。有关详细信息,请参阅使用卷

Docker 卷的一些常见使用案例包括:

  • 提供持久性数据卷以用于容器

  • 在同一个容器实例上不同容器中的不同位置共享一个定义的数据卷

  • 定义空的非持久性数据卷,并将其挂载到同一任务内的多个容器上

  • 向由第三方驱动程序管理的任务提供数据卷

在任务定义中指定 Docker 卷

在您的容器可以使用数据卷之前,您必须在任务定义中指定卷和挂载点配置。此部分描述容器的卷配置。对于使用 Docker 卷的任务,请指定 dockerVolumeConfiguration。对于使用绑定挂载主机卷的任务,请指定 host 和可选的 sourcePath

下面显示的任务定义 JSON 显示容器的 volumesmountPoints 对象的语法。

{ "containerDefinitions": [ { "mountPoints": [ { "sourceVolume": "string", "containerPath": "/path/to/mount_volume", "readOnly": boolean } ] } ], "volumes": [ { "name": "string", "host": { "sourcePath": "string" }, "dockerVolumeConfiguration": { "scope": "string", "autoprovision": boolean, "driver": "string", "driverOpts": { "key": "value" }, "labels": { "key": "value" } } } ] }
name

Type: String

Required: No

The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. This name is referenced in the sourceVolume parameter of container definition mountPoints.

mountPoints

Type: Object

Required: No

The mount points for data volumes in your container.

This parameter maps to Volumes in the 创建容器 section of the Docker Remote API and the --volume option to docker run.

Windows containers can mount whole directories on the same drive as $env:ProgramData. Windows containers cannot mount directories on a different drive, and mount point cannot be across drives.

sourceVolume

Type: String

Required: Yes, when mountPoints are used

The name of the volume to mount.

containerPath

Type: String

Required: Yes, when mountPoints are used

The path on the container to mount the volume at.

readOnly

Type: Boolean

Required: No

If this value is true, the container has read-only access to the volume. If this value is false, then the container can write to the volume. The default value is false.

示例

使用 Docker 卷为容器提供非持久性存储

在此示例中,您希望容器使用一个空数据卷,但您不希望在完成任务后保留该卷。例如,您可能具有一个需要在任务期间访问某个临时文件存储位置的容器。可以使用 Docker 卷实现此任务。

  1. 在任务定义 volumes 部分中,使用 nameDockerVolumeConfiguration 值定义数据卷。在本示例中,我们将范围指定为 task,以便在任务停止后立即删除此卷,将自动预置设置为 true 以便为我们创建此卷,并使用内置的 local 驱动程序。

    "volumes": [ { "name": "scratch", "dockerVolumeConfiguration" : { "scope": "task", "autoprovision": true, "driver": "local", "labels": { "scratch: space" } } } ]
  2. containerDefinitions 部分中,使用引用已定义卷的名称的 mountPoints 和将卷挂载到容器上所在的 containerPath 值定义容器。

    "containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "scratch", "containerPath": "/var/scratch" } ] } ]

使用 Docker 卷为容器提供持久性存储

在本示例中,您希望多个容器使用一个共享卷,并希望在使用此卷的任何单个任务停止后该卷持续存在。正在使用的是内置的 local 驱动程序,以便该卷仍将绑定到容器实例的生命周期。

  1. 在任务定义 volumes 部分中,使用 nameDockerVolumeConfiguration 值定义数据卷。在本示例中,我们将指定 shared 范围以便此卷持久存在,将自动预置设置为 true 以便为我们创建此卷,并使用内置的 local 驱动程序。

    "volumes": [ { "name": "database", "dockerVolumeConfiguration" : { "scope": "shared", "autoprovision": true, "driver": "local", "labels": { "database: database_name" } } } ]
  2. containerDefinitions 部分中,使用引用已定义卷的名称的 mountPoints 和将卷挂载到容器上所在的 containerPath 值定义容器。

    "containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "database", "containerPath": "/var/database" } ] }, { "name": "container-2", "mountPoints": [ { "sourceVolume": "database", "containerPath": "/var/database" } ] } ]