Docker/OSX no puede encontrar el motivo por el cual "no queda espacio en el dispositivo"

Docker/OSX no puede encontrar el motivo por el cual "no queda espacio en el dispositivo"

Versiones de entorno:

macos 10.14.4
docker server 18.09.2
docker desktop Version 2.0.0.3 (31259)

Enfrento no space left on deviceun error dentro del contenedor y no puedo determinar de dónde proviene el desbordamiento.

Lo peor es que no puedo determinar el tamaño real del contenedor desde el punto de vista del sistema host principal (herramientas info/inpsect/system df), de hecho, las estadísticas de Docker y los hosts madre no son iguales :/

Tengo un contenedor con las siguientes estadísticas df dentro:

   root@31a71014ad95:/usr/local/app# df -h
   Filesystem      Size  Used Avail Use% Mounted on
   overlay          63G   21G   40G  34% /
   tmpfs            64M     0   64M   0% /dev
   tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
   osxfs           234G  182G   48G  80% /shared_from_host
   /dev/sda1        63G   21G   40G  34% /etc/hosts
   shm              64M     0   64M   0% /dev/shm
   tmpfs           2.0G     0  2.0G   0% /proc/acpi
   tmpfs           2.0G     0  2.0G   0% /sys/firmware

( shared_from_host- es un volumen compartido para integración con el host madre)

Cabe mencionar que he leído sobre el tamaño general del archivo de imagen en Macos, parece estar bien y está lejos del tamaño predeterminado de 64 Gb:

ls -lah ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
-rw-r--r--@ 1 coin  staff    21G May 26 22:25 /Users/usss/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

El contenedor Docker definitivamente contiene un subdirectorio grande:

root@31a71014ad95:/usr/local/app# du -hs ./*|grep CRISP
12G     ./CRISPRCasFinder

Vi ps -s, inspect, system dfcomo una forma recomendada de estimar las estadísticas de uso del disco del contenedor, pero no tuvo éxito. Todos ellos muestran valores no reales. Parece que estoy usando esas herramientas de manera incorrecta. Interpreto los números de manera incorrecta.

Desde el host madre, las estadísticas se ven así:

  1. docker inspectdahttps://pastebin.com/53vLji1p

  2. docker ps -sda

%docker container ps -sa
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                        PORTS                      NAMES               SIZE
31a71014ad95        nvm:nvm_tag   "/bin/bash"              6 hours ago         Exited (137) 23 minutes ago                              cr                  3.52GB (virtual 5.44GB)
<...>
  1. docker system dfda
%docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              8                   6                   5.52GB              3.021GB (54%)
Containers          6                   0                   3.541GB             3.541GB (100%)
Local Volumes       33                  6                   2.751GB             2.381GB (86%)
Build Cache         0                   0                   0B                  0B

Ninguno de esos valores se parece al uso de contenedores con du (como se muestra arriba). ¿Esos valores son las cosas que debo buscar?

El ejemplo más útil y detallado que encontré eshttps://www.projectatomic.io/blog/2016/03/daemon_option_basedevicesize/

Pero parece que, en mi versión actual de Docker, la salida ya no contiene los campos que el autor usa para las ilustraciones: ni "tamaño de dispositivo base", ni "Tamaño de dispositivo".

Entonces las preguntas son:

  1. ¿Cómo puedo ver las estadísticas reales de uso del contenedor para luego poder aplicar algunos ajustes?

  2. ¿Dónde se coloca la configuración del tamaño máximo del disco del contenedor?

¡Gracias!

ACTUALIZAR

Intenté reiniciar la aplicación Docker y todo terminó en un error de espacio fatal.https://pastebin.com/twM3qN8N

Entonces Docker no se está iniciando en este momento. Ok... También encontré algo muy similar como problema en gh.https://github.com/docker/for-mac/issues/3529

Vi antes problemas de mal comportamiento, en los que eliminar el archivo qcow2 era una solución, pero siempre había un problema de espacio usedy configuredlos tamaños estaban cerca, y el problema estaba en el cambio de tamaño. Pero parece que este problema tiene que ver con un problema similar al mío, porque el tamaño del archivo qcow2 del autor del problema parece ser lo suficientemente grande.

Veo que la solución temporal es borrar todos los datos, pero espero encontrar una alternativa, o al menos algún tipo de explicación sobre las métricas de uso del disco, antes de borrarlos.

ACTUALIZACIÓN 2

decisión parcial sin qcow claro pero sin comprensión

Seguí leyendo todo tipo de artículos y después de leer.http://phutchins.com/blog/2017/01/04/fixing-docker-no-space-left-on-device/

Y noté esa extraña limitación de 20 Gb, predeterminada en 2017. Y pensé. Imaginemos que, a pesar de que df -hel contenedor interno y docker desktopla configuración de la interfaz de usuario informan sobre 64 Gb, todavía tengo una limitación de 20 Gb. ¿Parece posible?

E instalé qemu y agregué +5 Gb a la imagen como estaba escrito en el artículo:

%qemu-img resize ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 +5G

Y listo todo empezó y funcionó. Sigo viendo el mismo tamaño para el archivo qemu:

%ls -lah ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
-rw-r--r--@ 1 usss  staff    21G May 27 00:46 /Users/usss/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

pero el uso desde el punto de vista del contenedor cambió un poco.

root@31a71014ad95:/usr/local/app# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          68G   21G   45G  32% /
tmpfs            64M     0   64M   0% /dev
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
osxfs           234G  178G   55G  77% /shared_from_host
/dev/sda1        68G   21G   45G  32% /etc/hosts
shm              64M     0   64M   0% /dev/shm
tmpfs           2.0G     0  2.0G   0% /proc/acpi
tmpfs           2.0G     0  2.0G   0% /sys/firmware

ahora indica disponibilidad de 45 Gb (arriba había 40 Gb).

Pero al menos ahora todo funciona, pero no se sabe en absoluto dónde shadowedse esconde el consumo.

Respuesta1

El espacio en disco con las versiones de escritorio de Docker puede estar limitado por el disco que le proporcione a la máquina virtual Docker incorporada. Dentro de esta VM se encuentran las imágenes, los contenedores, los volúmenes con nombre y cualquier otro archivo que no esté explícitamente montado en la VM desde una fuente externa (por ejemplo, el directorio /Users en MacOS). Puede ajustar la configuración de esta VM desde las preferencias de la ventana acoplable:

Preferencias de disco de Docker para MacOS

Crédito de la imagen: documentación de Docker

Más detalles están disponibles en:https://docs.docker.com/docker-for-mac/space/


Una nota importante sobre el uso del disco: puede quedarse sin bytes de disco y también puede quedarse sin inodos. Ambos darán el mismo error. Utilice la df -iopción para marcar indoes, por ejemplo:

df -h # to see disk free
df -hi # to see inodes free

Si el error se produce mientras se ejecuta un contenedor y luego se elimina, es posible que la eliminación del contenedor libere ese espacio en el disco.

información relacionada