Docker

failed to register layer: write ...: no space left on device

La descarga avanza y falla al escribir las capas. El espacio se agota en el directorio de datos de Docker, que no tiene por qué estar en la misma partición que el resto del sistema.

Mirar df -h / puede despistar: si /var/lib/docker está en otro volumen, el que importa es ese.

Qué comprobar, y en qué orden

En el orden en que lo miramos nosotros. No es un ranking de frecuencia: no publicamos estadísticas que no hemos medido.

  1. 1

    El sistema de ficheros del directorio de datos está lleno.

    Comprobar

    df -h $(docker info -f '{{.DockerRootDir}}')

    Corregir

    docker system prune -a
    # Revisa antes qué se va a borrar; con -a se eliminan las imágenes sin usar.
  2. 2

    Hay imágenes, contenedores parados y capas de construcción acumulados.

    Comprobar

    docker system df -v | head -20

    Corregir

    docker builder prune
    docker image prune -a
  3. 3

    Volúmenes huérfanos que ya no usa ningún contenedor.

    Comprobar

    docker volume ls -qf dangling=true | wc -l

    Corregir

    # Comprueba qué contienen antes: aquí es donde viven los datos de las
    # bases de datos en contenedor.
    docker volume prune
  4. 4

    Se han agotado los inodos, no el espacio. Las imágenes con muchas capas crean cantidades enormes de ficheros pequeños.

    Comprobar

    df -i $(docker info -f '{{.DockerRootDir}}')

    Corregir

    docker system prune -a --volumes

Los comandos de esta página se ejecutan en tu servidor y algunos modifican la configuración: léelos antes de pegarlos. Las rutas y los nombres de servicio varían entre distribuciones. Así se elabora este catálogo.