Ejemplos de volúmenes de Docker para Amazon ECS
En los ejemplos siguientes se muestra 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.
-
En sección de definición de tarea de
volumes, defina un volumen de datos con los valoresnameyDockerVolumeConfiguration. En este ejemplo, especifique el ámbito comotaskpara que el volumen se elimine una vez que se detenga la tarea y utilice el controladorlocalintegrado."volumes": [ { "name": "scratch", "dockerVolumeConfiguration" : { "scope": "task", "driver": "local", "labels": { "scratch": "space" } } } ] -
En la sección
containerDefinitions, defina un contenedor con valoresmountPointsque hagan referencia al nombre del volumen definido y el valorcontainerPathen 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.
-
En sección de definición de tarea de
volumes, defina un volumen de datos con los valoresnameyDockerVolumeConfiguration. En este ejemplo, especifique un alcancesharedpara que el volumen persista, establezca el aprovisionamiento automático entrue. Esto es para que el volumen se cree para su uso. A continuación, utilice también el controladorlocalintegrado."volumes": [ { "name": "database", "dockerVolumeConfiguration" : { "scope": "shared", "autoprovision": true, "driver": "local", "labels": { "database": "database_name" } } } ] -
En la sección
containerDefinitions, defina un contenedor con valoresmountPointsque hagan referencia al nombre del volumen definido y el valorcontainerPathen 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.
-
En sección de definición de tarea de
volumes, defina un volumen de datos con los valoresnameyDockerVolumeConfiguration. En este ejemplo, especifique un alcancetaskpara que el volumen se desmonte cuando finaliza la tarea. Utilice el controladorlocaly configuredriverOptscon las opcionestype,deviceyoen consecuencia. SustituyaNFS_SERVERpor 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" } } } ] -
En la sección
containerDefinitions, defina un contenedor con valoresmountPointsque hagan referencia al nombre del volumen definido y el valorcontainerPathen el que desea montar el volumen en el contenedor."containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "NFS", "containerPath": "/var/nfsmount" } ] } ]