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:
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:
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.
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% /
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}
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")
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"
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)
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.
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
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