Ejemplos de volúmenes de Docker para Amazon ECS - Amazon Elastic Container Service

Ejemplos de volúmenes de Docker para Amazon ECS

Los siguientes ejemplos muestran cómo proporcionar almacenamiento efímero para un contenedor, cómo proporcionar un volumen compartido para varios contenedores y cómo proporcionar almacenamiento persistente de NFS para un contenedor.

Para proporcionar almacenamiento efímero para un contenedor con un volumen de Docker

En este ejemplo, un contenedor utiliza un volumen de datos vacío que se elimina después de finalizar la tarea. Como caso de uso de ejemplo, podría tener un contenedor que necesita obtener acceso a una ubicación de almacenamiento de archivos scratch durante una tarea. Esta tarea se puede lograr utilizando un volumen de Docker.

  1. En sección de definición de tarea de volumes, defina un volumen de datos con los valores name y DockerVolumeConfiguration. En este ejemplo, especifique el ámbito como task para que el volumen se elimine una vez que se detenga la tarea y utilice el controlador local integrado.

    "volumes": [ { "name": "scratch", "dockerVolumeConfiguration" : { "scope": "task", "driver": "local", "labels": { "scratch": "space" } } } ]
  2. En la sección containerDefinitions, defina un contenedor con valores mountPoints que hagan referencia al nombre del volumen definido y el valor containerPath en el que desea montar el volumen en el contenedor.

    "containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "scratch", "containerPath": "/var/scratch" } ] } ]
Para proporcionar almacenamiento persistente para varios contenedores con un volumen de Docker

En este ejemplo, desea usar un volumen compartido para varios contenedores y desea que se conserve una vez que se detenga cualquiera de las tareas que lo usa. El controlador local integrado se está utilizando. Esto es para que el volumen siga vinculado al ciclo de vida de la instancia de contenedor.

  1. En sección de definición de tarea de volumes, defina un volumen de datos con los valores name y DockerVolumeConfiguration. En este ejemplo, especifique un alcance shared para que el volumen persista, establezca el aprovisionamiento automático en true. Esto es para que el volumen se cree para su uso. A continuación, utilice también el controlador local integrado.

    "volumes": [ { "name": "database", "dockerVolumeConfiguration" : { "scope": "shared", "autoprovision": true, "driver": "local", "labels": { "database": "database_name" } } } ]
  2. En la sección containerDefinitions, defina un contenedor con valores mountPoints que hagan referencia al nombre del volumen definido y el valor containerPath en el que desea montar el volumen en el contenedor.

    "containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "database", "containerPath": "/var/database" } ] }, { "name": "container-2", "mountPoints": [ { "sourceVolume": "database", "containerPath": "/var/database" } ] } ]
Para proporcionar almacenamiento persistente de NFS para un contenedor con un volumen de Docker

En este ejemplo, un contenedor utiliza un volumen de datos de NFS que se monta automáticamente cuando inicia la tarea y se desmonta cuando la tarea finaliza. Utiliza el controlador integrado local de Docker. Un caso de uso de ejemplo es que puede tener un almacenamiento de NFS local y necesita acceder a él desde una tarea de ECS Anywhere. Esto se puede lograr con un volumen de Docker con la opción de controlador de NFS.

  1. En sección de definición de tarea de volumes, defina un volumen de datos con los valores name y DockerVolumeConfiguration. En este ejemplo, especifique un alcance task para que el volumen se desmonte cuando finaliza la tarea. Utilice el controlador local y configure driverOpts con las opciones type, device y o en consecuencia. Sustituya NFS_SERVER por el punto de conexión del servidor de NFS.

    "volumes": [ { "name": "NFS", "dockerVolumeConfiguration" : { "scope": "task", "driver": "local", "driverOpts": { "type": "nfs", "device": "$NFS_SERVER:/mnt/nfs", "o": "addr=$NFS_SERVER" } } } ]
  2. En la sección containerDefinitions, defina un contenedor con valores mountPoints que hagan referencia al nombre del volumen definido y el valor containerPath en el que desea montar el volumen en el contenedor.

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