run - Docker Machine: no queda espacio en el dispositivo
docker-compose (6)
Estoy tratando de configurar Docker Machine con Docker Compose.
Escenario 1 (sin Docker Machine)
Si ejecuto
docker-compose up -d
sin Docker Machine, crea mis 3 contenedores vinculados según lo previsto (nginx + mongodb + nodejs).
Escenario 2 (con Docker Machine)
Luego creo una VM 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 acoplable y ejecuto
df -h
, obtengo:
Si luego ejecuto
docker-compose up -d
,
docker-compose up -d
error "no queda espacio en el dispositivo"
mientras descargo el último contenedor.
"tmpfs" parece estar un poco lleno después de eso:
Marcar la opción --virtualbox-disk-size 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" ny 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 .
A. RETIRE IMÁGENES NO USADAS
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-volume). La base es comenzar a seleccionar desde su lista de imágenes y contenedores:
docker ps -a -s
B. MODIFICAR EL DESCRIPTOR DE DOCKER JSON
Se menciona en algunos foros. La idea es incrementar el descriptor ubicado en ~ / .docker / machine / machines / default / config.json. El parámetro parece ser DiskSize pero no sé si funciona en otros sistemas operativos (no en Windows).
C. TAMAÑO DE LINUX:
en el sistema operativo Windows, la máquina acoplable o boot2docker es, de hecho, una virtualbox vm, 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 cambio de tamaño en virtualbox y luego usar un utilitario llamado gpartd para modificar el espacio percibido por Linux en sus particiones. Hay algunos enlaces para hacer este procedimiento al que se hace referencia a continuación:
D. RECREA LA DOCKER-MÁQUINA / BOOT2DOCKER
La idea es recrear la máquina acoplable predeterminada. Los siguientes comandos pueden ilustrarlo. Tenga en cuenta que cuando vuelva a crear boot2docker, perderá las imágenes de docker descargadas anteriormente.
docker-machine rm default
docker-machine create --driver virtualbox --virtualbox-disk-size "100100" predeterminado
docker-machine env por defecto
entonces puede ir al cuadro virtual y ver el espacio boot2docker con el comando "df -h"
Como se dijo anteriormente, el
tmpfs
no tiene nada que ver con
--virtualbox-disk-size
.
Parece que boot2docker monta
tmpfs
en la memoria, por lo que debe dedicar más memoria a su virtualbox vm.
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
configurado 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% /
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 memoria y tamaño de disco a la caja virtual que tenía antes y puede agregar el tamaño de configuración aquí que necesita según lo considere conveniente
Si está utilizando Docker Community Edition:
docker system prune
docker volume prune # as suggested by @justin-m-chase since system prune does not clean volumes.
Si está utilizando boot2docker (docker-machine) borre los volúmenes que quedan huérfanos:
docker volume rm $(docker volume ls -qf dangling=true)
Borrar imágenes no utilizadas:
docker rmi $(docker images -q -f "dangling=true")
Tuve el mismo error (
[ERROR] InnoDB: Error number 28 means ''No space left on device''
) y resuélvelo de esta manera:
1) Elimine los volúmenes huérfanos en Docker, puede usar el comando incorporado de volumen docker. El comando incorporado también elimina cualquier directorio en / var / lib / docker / volume que no sea un volumen, así que asegúrese de no poner nada allí que desee guardar.
Advertencia, tenga mucho cuidado con esto si tiene algunos datos que desea conservar
Limpiar:
$ docker volume rm $(docker volume ls -qf dangling=true)
Comandos adicionales:
Lista de volúmenes colgantes:
$ docker volume ls -qf dangling=true
Listar todos los volúmenes:
$ docker volume ls
2) También considere eliminar todas las imágenes no utilizadas.
Primero, elimine las imágenes
<none>
(a veces se generan mientras se crea una imagen y si por alguna razón la construcción de la imagen se interrumpió, permanecen allí).
aquí hay un buen script que uso para eliminarlos
docker rmi $(docker images | grep "^<none>" | awk ''{print $3}'')
Luego, si está utilizando Docker Compose para crear imágenes localmente para cada proyecto.
Terminará con muchas imágenes generalmente nombradas como su carpeta (por ejemplo, si su carpeta de proyecto llamada Hello, encontrará las imágenes con el nombre
Hello_blablabla
).
así que también considera eliminar todas estas imágenes
puede editar el script anterior para eliminarlos o eliminarlos manualmente con
docker rmi {image-name}