适用于 Amazon ECS 的 Docker 卷示例
以下示例说明如何为容器提供临时存储、如何为多个容器提供共享卷,以及如何为容器提供 NFS 持久性存储。
要使用 Docker 卷为容器提供临时存储
在此示例中,容器使用在任务完成后处置的空数据卷。一个示例使用案例为,您可能具有一个需要在任务期间访问某个临时文件存储位置的容器。可以使用 Docker 卷实现此任务。
-
在任务定义
volumes部分中,使用name和DockerVolumeConfiguration值定义数据卷。在此示例中,我们将范围指定为task,以便在任务停止后删除此卷并使用内置的local驱动程序。"volumes": [ { "name": "scratch", "dockerVolumeConfiguration" : { "scope": "task", "driver": "local", "labels": { "scratch": "space" } } } ] -
在
containerDefinitions部分中,使用引用已定义卷的名称的mountPoints值和将卷挂载到容器上所在的containerPath值定义容器。"containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "scratch", "containerPath": "/var/scratch" } ] } ]
使用 Docker 卷为多个容器提供持久性存储
在本示例中,您希望多个容器使用一个共享卷,并希望在使用此卷的任何单个任务停止后该卷持续存在。正在使用的是内置的 local 驱动程序。以便该卷仍绑定到容器实例的生命周期。
-
在任务定义
volumes部分中,使用name和DockerVolumeConfiguration值定义数据卷。在此示例中,指定shared范围以便卷持续存在,将自动预置设置为true。这样就可以创建卷以供使用。然后,还可使用内置的local驱动程序。"volumes": [ { "name": "database", "dockerVolumeConfiguration" : { "scope": "shared", "autoprovision": true, "driver": "local", "labels": { "database": "database_name" } } } ] -
在
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 卷实现此目标。
-
在任务定义
volumes部分中,使用name和DockerVolumeConfiguration值定义数据卷。在此示例中,指定task范围以便在任务停止后卸载卷。使用local驱动程序并使用type、device和o选项相应地配置driverOpts。NFS_SERVER替换为 NFS 服务器端点。"volumes": [ { "name": "NFS", "dockerVolumeConfiguration" : { "scope": "task", "driver": "local", "driverOpts": { "type": "nfs", "device": "$NFS_SERVER:/mnt/nfs", "o": "addr=$NFS_SERVER" } } } ] -
在
containerDefinitions部分中,使用引用已定义卷的名称的mountPoints值和将卷挂载到容器上所在的containerPath值定义容器。"containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "NFS", "containerPath": "/var/nfsmount" } ] } ]