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.
-
En sección de definición de tarea de
volumes
, defina un volumen de datos con los valoresname
yDockerVolumeConfiguration
. En este ejemplo, especifique el ámbito comotask
para que el volumen se elimine una vez que se detenga la tarea y utilice el controladorlocal
integrado."volumes": [ { "name": "
scratch
", "dockerVolumeConfiguration" : { "scope": "task
", "driver": "local
", "labels": { "scratch
": "space
" } } } ] -
En la sección
containerDefinitions
, defina un contenedor con valoresmountPoints
que hagan referencia al nombre del volumen definido y el valorcontainerPath
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.
-
En sección de definición de tarea de
volumes
, defina un volumen de datos con los valoresname
yDockerVolumeConfiguration
. En este ejemplo, especifique un alcanceshared
para 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 controladorlocal
integrado."volumes": [ { "name": "
database
", "dockerVolumeConfiguration" : { "scope": "shared
", "autoprovision": true, "driver": "local
", "labels": { "database
": "database_name
" } } } ] -
En la sección
containerDefinitions
, defina un contenedor con valoresmountPoints
que hagan referencia al nombre del volumen definido y el valorcontainerPath
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.
-
En sección de definición de tarea de
volumes
, defina un volumen de datos con los valoresname
yDockerVolumeConfiguration
. En este ejemplo, especifique un alcancetask
para que el volumen se desmonte cuando finaliza la tarea. Utilice el controladorlocal
y configuredriverOpts
con las opcionestype
,device
yo
en consecuencia. SustituyaNFS_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
" } } } ] -
En la sección
containerDefinitions
, defina un contenedor con valoresmountPoints
que hagan referencia al nombre del volumen definido y el valorcontainerPath
en el que desea montar el volumen en el contenedor."containerDefinitions": [ { "name": "
container-1
", "mountPoints": [ { "sourceVolume": "NFS
", "containerPath": "/var/nfsmount
" } ] } ]