适用于 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
" } ] } ]