¿Por qué Docker informa un uso del disco del 100% en una nueva imagen de Ubuntu?

15

Ya no puedo usar la ventana acoplable ni ejecutar nuevas imágenes de manera efectiva: informa que tengo un uso del disco del 100%. Aquí puede ver que estoy lanzando una copia inmaculada de ubuntu y, sin embargo, me dice que no me queda espacio en disco:

$ docker run -t -i ubuntu /bin/bash
root@3838b70bd76e:/# df -h 
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G   18G     0 100% /
none             19G   18G     0 100% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G   18G     0 100% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

Por separado, estoy tratando de iniciar una instancia de mysql y me está dando mensajes de error que creo que están conectados al hecho de que no tengo un disco disponible. Cuando intento ejecutar orchardup ​​/ mysql, obtengo:

ERROR: 1030  Got error 28 from storage engine

Lo que significa que se ha quedado sin espacio de almacenamiento.

Dado esto, ¿cómo debo interpretar el informe df -h anterior y cómo puedo determinar qué consume el 100% de mi disco? Estoy ejecutando docker 1.3, ejecutándome en OSX 10.9.4, usando boot2docker.

Gracias.


Editar: Como solución alternativa, he corrido boot2docker delete, y luego boot2docker init, y parece haber destrozado todas mis imágenes (afortunadamente, puedo reconstruirlas con mis dockerfiles ). Ahora, cuando comienzo una nueva imagen de ubuntu:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  373M   17G   3% /
none             19G  373M   17G   3% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  373M   17G   3% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

Mucho mejor. Pero, todavía estoy confundido, ¿debe haber algún tipo de disco global compartido en todas las imágenes alojadas por boot2docker que se haya llenado previamente?


Edición 2: acabo de descargar un montón de imágenes, y ahora esto es lo que veo cuando ejecuto la imagen de ubuntu y compruebo el espacio libre en disco:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  2.7G   15G  16% /
none             19G  2.7G   15G  16% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  2.7G   15G  16% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

¡Del 3% al 16% consumido! Claramente, hay algún tipo de disco compartido entre todas mis imágenes que no entiendo ...

esilverberg
fuente
¿Cómo está utilizando los contenedores Docker y cómo se dispersan los usuarios / grupos (más a los errores de mysql)? Además, para Docker, ¿están compartiendo algo en el host o son puramente independientes?
linuxdev2013

Respuestas:

1

En hosts de Windows, boot2docker funciona mediante la creación de una máquina virtual utilizando box virtual. cuando ejecuta boot2docker init, crea una máquina virtual y, de forma predeterminada, asigna 20G al disco raíz. esta máquina virtual ejecuta un sistema operativo Linux mínimo que a su vez ejecuta el docker daemon real (docker daemon aún no se ejecuta de forma nativa en Windows).

El disco conectado a la máquina virtual proporciona almacenamiento para las imágenes acoplables. para que pueda ver opciones adicionales para el comando boot2docker init para aumentar el tamaño inicial del disco. esto aumentará el tamaño del disco disponible para su uso en la máquina virtual, pero como señaló Queasy, debe agregar las opciones adicionales al demonio docker para aumentar el almacenamiento disponible para las imágenes.

cuando ejecuta "df -h" en el contenedor, el tamaño de disco total informado es el del espacio de disco asignado al docker daemon mediante la opción "dm.basesize".

nota: boot2docker ahora está en desuso a favor de Docker Toolbox. es posible que desee actualizar a esa versión, en cuyo caso usaría "docker-machine create" en lugar de "boot2docker init". He cambiado a docker-toolbox, así que no puedo probar las opciones de comando necesarias para el inicio de boot2docker

nagu
fuente
0

Modifique la configuración de docker en / etc / sysconfig / docker-storage y agregue la línea:

DOCKER_STORAGE_OPTIONS= --storage-opt dm.basesize=30G

Recuerde hacer una copia de seguridad de su acoplador antes de continuar con esta tarea, ya que eliminará sus datos una vez inicializados.

Mareado
fuente
--storage-optno es compatible con OSX
Quanlong
0

Tenga en cuenta que la unidad puede ser mala. Hitachi (Drive Fitness Test), Seagate (Seatools) y Western Digital (Western Digital Data Lifeguard) ofrecen software de diagnóstico gratuito para ayudarlo a determinar esto.

Como ejemplo de cómo una unidad defectuosa puede estropearse con espacio en disco, hice una copia de seguridad de unidades de 1TB que informan a Windows que todavía les quedan PETABYTES de datos para transferir.

En caso de que su unidad esté bien, use du (Disk Usage) para ver qué carpeta es la grande. du -h /usr/bin, du -h /varo du -h /home/[username]/Downloadspara ayudar a identificarlo.

Editar: vi que está usando OS X: deberá usar las herramientas de HDD mencionadas anteriormente como sus opciones de arranque o en algo como el Windows PE gratuito, que luego puede iniciar y ejecutar estas herramientas.

Tim G
fuente
0

Devicemapper es el motor de almacenamiento predeterminado de Docker. Intenta preasignar 100Gb por defecto en / var / lib / docker. Sin embargo, no todo este espacio se usa realmente, y puede configurarlo en las opciones. Docker docs

bbaassssiiee
fuente