
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 device
un 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 df
como 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í:
docker inspect
dahttps://pastebin.com/53vLji1pdocker ps -s
da
%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)
<...>
docker system df
da
%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:
¿Cómo puedo ver las estadísticas reales de uso del contenedor para luego poder aplicar algunos ajustes?
¿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 used
y configured
los 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 -h
el contenedor interno y docker desktop
la 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 shadowed
se 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:
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 -i
opció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.