Máquina acoplable: No queda espacio en el dispositivo


Estoy intentando configurar Docker Machine con Docker Compose.

Escenario 1 (sin máquina acoplable)
Si corro docker-compose up -d sin Docker Machine, crea mis 3 contenedores vinculados como intentados (nginx+mongodb+nodejs).

Escenario 2 (con máquina acoplable)
Luego creo una máquina virtual usando Docker Machine y le digo a Docker que hable con esa máquina con eval $(docker-machine env streambacker-dev).

En este punto, si ssh a mi máquina docker y ejecutar df -h, obtengo:

máquina acoplable df-h

Si luego corro docker-compose up -d, obtengo un error "no hay espacio en el dispositivo" al descargar el último contenedor.

"tmpfs" parece estar un poco lleno después de eso:

máquina acoplable df-h

Al comprobar la opción virtu virtualbox-disk-size se muestra que el valor predeterminado es 20000 MB, que creo que es lo que podemos ver como "/dev/sda1" en ambas imágenes. Entonces, ¿por qué los contenedores están llenando " tmpfs "n y qué es exactamente"tmpfs"? ¿Es un directorio de descarga temporal? ¿Cómo puedo crear más espacio para mis contenedores?

Gracias!

Para información, estoy usando Docker Machine 0.4.0-rc2 y Docker Compose 1.3.2.

Author: Marc Pe-Pe, 2015-08-10

6 answers

Como se dijo anteriormente, el tmpfs no tiene nada que ver con --virtualbox-disk-size. Parece que boot2docker monta tmpfs en memoria, por lo que necesita dedicar más memoria a su vm virtualbox. Puede hacerlo especificando el parámetro --virtualbox-memory.

   --virtualbox-memory "1024"
Size of memory for host in MB [$VIRTUALBOX_MEMORY_SIZE]

Valores predeterminados:

$ docker-machine create --driver virtualbox testA
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
$ docker-machine ssh testA
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
docker@testA:~$ df -h /
Filesystem                Size      Used Available Use% Mounted on
tmpfs                   896.6M    112.7M    783.9M  13% /

Con --virtualbox-memory establecido en 8096

$ docker-machine create --driver virtualbox --virtualbox-memory 8096 testB
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
$ docker-machine ssh testB
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
docker@testB:~$ df -h /
Filesystem                Size      Used Available Use% Mounted on
tmpfs                     6.9G    112.4M      6.8G   2% /
 73
Author: wtekiela,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-24 14:56:57

Tuve el mismo error ([ERROR] InnoDB: Error number 28 means 'No space left on device') y lo resolví de esta manera:

1 . Elimine los volúmenes huérfanos en Docker, puede usar el comando integrado docker volume. El comando integrado también elimina cualquier directorio en / var/lib/docker / volumes que no sea un volumen, así que asegúrese de no haber puesto nada allí que desee guardar.

Advertencia tenga mucho cuidado con esto si tiene algunos datos que desea mantener

Limpieza:

$ docker volume rm $(docker volume ls -qf dangling=true)

Comandos adicionales:

Lista volúmenes colgantes:

$ docker volume ls -qf dangling=true

Lista todos los volúmenes:

$ docker volume ls

2 . También considere eliminar todas las imágenes no utilizadas.

Primero deshazte de las imágenes <none> (a veces se generan mientras se construye una imagen y si por alguna razón se interrumpe la construcción de la imagen, permanecen allí).

Aquí hay un buen script que uso para eliminarlos

docker rmi $(docker images | grep "^<none>" | awk '{print $3}')

Entonces si está utilizando Docker Compose para construir imágenes localmente para cada proyecto. Terminarás con un montón de imágenes por lo general se nombra como su carpeta (por ejemplo, si la carpeta de su proyecto se llama Hello, encontrará images name Hello_blablabla). así que también considere la eliminación de todas estas imágenes

Puede editar el script anterior para eliminarlos o eliminarlos manualmente con

docker rmi {image-name}

 89
Author: Mahmoud Zalt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-22 12:30:09

Si está utilizando Docker Community Edition:

Sistema acoplable podar

Si está utilizando boot2docker (docker-machine) borre los volúmenes que están huérfanos:

Docker volume rm volume (docker volume ls-qf dangling=true)

Borrar imágenes no utilizadas:

Docker rmi {(docker images-q-f "dangling=true")

 34
Author: Alex Efimov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-23 15:23:35

A. ELIMINAR IMÁGENES NO UTILIZADAS

Con los comandos docker rm o docker rmi puede eliminar las imágenes que no necesita. En realidad existe una imagen que ayuda en esta tarea (martin / docker-cleanup-volumes). La base es iniciar selectig desde su lista de imágenes y contenedores:

Docker ps-a-s

B. MODIFICAR EL DESCRIPTOR JSON DE DOCKER

Se menciona en algunos foros. La idea es incrementar el descriptor ubicado en ~/.docker / machine / machines / default / config.json . El param parece ser DiskSize pero no se si funciona en otro OSs (no en windows).

C. REDIMENSIONAMIENTO DE LINUX:

En el sistema operativo Windows, docker machine o boot2docker es de hecho una vm virtualbox, entonces puede seguir el procedimiento para cambiar el tamaño del disco. Tenga cuidado de hacer una copia de seguridad de los archivos. El procedimiento general es hacer un redimensionamiento en virtualbox y luego usar un utilitario llamado gpartd para modificar el espacio percibido por linux en sus particiones. Alli son algunos enlaces para hacer este procedimiento se hace referencia a continuación:

D. RECREAR DOCKER-MACHINE / BOOT2DOCKER

La idea es recrear la docker-machine predeterminada. Los siguientes comandos pueden ilustrarlo. Tenga en cuenta que a medida que vuelva a crear el boot2docker, perderá las imágenes docker descargadas anteriormente.

Docker-máquina rm por defecto

Docker-machine create driver driver virtualbox virtu virtualbox-disk-size "100100" default

Docker-máquina env por defecto

Luego puede ir a virtual box y ver el espacio boot2docker con el comando "df-h"

 12
Author: andhdo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-11 03:31:35

En docker osx / pude presionar un botón [Mover Imagen de disco] y movió con éxito la ventana acoplable.qcow2 (presumiblemente conteniendo contenedores / imágenes)

introduzca la descripción de la imagen aquí inicialmente-cuando las máquinas comenzaron-yo todavía estaba recibiendo un No queda espacio en el dispositivo error pero se resolvió poco después.

 1
Author: johndpope,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-06 22:41:37

Me encontré con este problema y no pude agregar espacio adicional con la interfaz de usuario de docker para mac, instalé docker con homebrew y ejecuté el siguiente comando al crear mi máquina:

docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default

Esto agrega el doble de espacio para la memoria y el tamaño del disco a la virtualbox que tenía antes y puede agregar el tamaño de configuración aquí que necesita como mejor le parezca

 0
Author: aabiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-10-01 08:28:30