适用于 Amazon ECS 的 Docker 卷示例 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

适用于 Amazon ECS 的 Docker 卷示例

以下示例说明如何为容器提供临时存储、如何为多个容器提供共享卷,以及如何为容器提供 NFS 持久性存储。

要使用 Docker 卷为容器提供临时存储

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

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

    "volumes": [ { "name": "scratch", "dockerVolumeConfiguration" : { "scope": "task", "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" } ] } ]
使用 Docker 卷为容器提供 NFS 持久性存储

在此示例中,容器使用 NFS 数据卷,该数据卷在任务启动时自动挂载,在任务停止时自动卸载。这使用了 Docker 内置 local 驱动程序。一个示例使用案例为,您可能具有本地 NFS 存储,并且需要从 ECS Anywhere 任务访问该存储。可以通过带有 NFS 驱动程序选项的 Docker 卷实现此目标。

  1. 在任务定义 volumes 部分中,使用 nameDockerVolumeConfiguration 值定义数据卷。在此示例中,指定 task 范围以便在任务停止后卸载卷。使用 local 驱动程序并使用 typedeviceo 选项相应地配置 driverOptsNFS_SERVER 替换为 NFS 服务器端点。

    "volumes": [ { "name": "NFS", "dockerVolumeConfiguration" : { "scope": "task", "driver": "local", "driverOpts": { "type": "nfs", "device": "$NFS_SERVER:/mnt/nfs", "o": "addr=$NFS_SERVER" } } } ]
  2. containerDefinitions 部分中,使用引用已定义卷的名称的 mountPoints 值和将卷挂载到容器上所在的 containerPath 值定义容器。

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