

# Solución del problema de Docker `API error (500): devmapper` en Amazon ECS
<a name="CannotCreateContainerError"></a>

El siguiente error de Docker indica que el almacenamiento en grupo fino en la instancia de contenedor está lleno y que el daemon de Docker no puede crear nuevos contenedores:

```
CannotCreateContainerError: API error (500): devmapper: Thin Pool has 4350 free data blocks which is less than minimum required 4454 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior 
```

La versión `2015.09.d` y posteriores de las AMI de Amazon Linux optimizadas para Amazon ECS se lanzan, de forma predeterminada, con un volumen de 8 GiB para el sistema operativo que se asocia a `/dev/xvda` y se monta como la raíz del sistema de archivos. Existe un volumen adicional de 22 GiB asociado a `/dev/xvdcz` que utiliza Docker para el almacenamiento de metadatos e imágenes. Si este espacio de almacenamiento está lleno, el daemon de Docker no puede crear nuevos contenedores.

La forma más sencilla de agregar almacenamiento a sus instancias de contenedor consiste en terminar las instancias existentes y lanzar otras nuevas con volúmenes de almacenamiento de datos mayores. No obstante, si no puede hacerlo, puede agregar almacenamiento al grupo de volumen que utiliza Docker y ampliar el volumen lógico mediante los procedimientos que se indican en [AMI de Linux optimizadas para Amazon ECS](ecs-optimized_AMI.md).

Si el almacenamiento de la instancia de contenedor se llena demasiado rápido, hay algunas acciones que puede realizar para reducir este efecto:
+ Para consultar la información de sondeo ligero, ejecute el siguiente comando en la instancia de contenedor:

  ```
  docker info
  ```
+ (Agente de contenedor de Amazon ECS, versión 1.8.0 y posteriores) Puede reducir la cantidad de tiempo que los contenedores detenidos o cerrados permanecen en las instancias de contenedor. La variable de configuración del agente `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION` establece la duración de tiempo para esperar desde que se para una tarea hasta que se elimina el contenedor de Docker (de forma predeterminada, este valor es 3 horas). Esto elimina los datos del contenedor de Docker. Si este valor se establece demasiado bajo, es posible que no pueda inspeccionar los contenedores detenidos o ver los registros antes de que se supriman. Para obtener más información, consulte [Configuración del agente de contenedor de Amazon ECS](ecs-agent-config.md).
+ Puede eliminar contenedores sin ejecución e imágenes no utilizadas de las instancias de contenedor. Puede utilizar los siguientes comandos de ejemplo para eliminar manualmente contenedores parados e imágenes sin utilizar. Los contenedores eliminados no se pueden inspeccionar más adelante, y las imágenes eliminadas se deben volver a extraer antes de comenzar nuevos contenedores desde ellas.

  Para eliminar contenedores que no están en ejecución, ejecute el siguiente comando en la instancia de contenedor:

  ```
  docker rm $(docker ps -aq)
  ```

  Para eliminar imágenes sin utilizar, ejecute el siguiente comando en la instancia de contenedor:

  ```
  docker rmi $(docker images -q)
  ```
+ Puede eliminar bloques de datos no utilizados dentro de contenedores. Puede utilizar el comando siguiente para ejecutar **fstrim** en cualquier contenedor en ejecución y descartar cualquier bloque de datos que no utilice el sistema de archivos del contenedor.

  ```
  sudo sh -c "docker ps -q | xargs docker inspect --format='{{ .State.Pid }}' | xargs -IZ fstrim /proc/Z/root/"
  ```