Instalé docker en una máquina Debian 7 de la siguiente manera
$ echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
$ curl -sSL https://get.docker.com/ubuntu/ | sudo sh
Después de eso, cuando intenté crear una imagen por primera vez, falló con el siguiente error
time="2015-06-02T14:26:37-04:00" level=info msg="[8] System error: write /sys/fs/cgroup/docker/01f5670fbee1f6687f58f3a943b1e1bdaec2630197fa4da1b19cc3db7e3d3883/cgroup.procs: no space left on device"
Aquí está la información del acoplador
Containers: 2
Images: 21
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 25
Dirperm1 Supported: true
Execution Driver: native-0.2
Kernel Version: 3.16.0-0.bpo.4-amd64
Operating System: Debian GNU/Linux 7 (wheezy)
CPUs: 2
Total Memory: 15.7 GiB
WARNING: No memory limit support
WARNING: No swap limit support
¿Cómo puedo aumentar la memoria? ¿Dónde se almacenan las configuraciones del sistema?
De las sugerencias de Kal:
Cuando me deshice de todas las imágenes y contenedores, liberó algo de espacio y la construcción de la imagen se ejecutó por más tiempo antes de fallar con el mismo error. Entonces, la pregunta es, ¿a qué espacio se refiere esto y cómo lo configuro?
df -ih
Respuestas:
Tuve el mismo error y lo solucioné 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:
Comandos adicionales:
Lista de volúmenes colgantes:
Listar todos los volúmenes:
2) También considere eliminar todas las imágenes no utilizadas.
Primero, elimine las
<none>
imágenes (a veces se generan mientras se construye 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
Luego, si está utilizando Docker Compose para crear imágenes localmente para cada proyecto. Terminará con muchas imágenes generalmente nombradas como su carpeta (ejemplo, si su carpeta de proyecto llamada Hola, encontrará el nombre de las imágenes
Hello_blablabla
). así que también considera eliminar todas estas imágenespuede editar el script anterior para eliminarlos o eliminarlos manualmente con
docker rmi {image-name}
fuente
docker images -qf dangling=true
y, por supuesto, eliminarlos condocker rmi $(docker images -qf dangling=true)
.ACTUALIZACIÓN
Los siguientes comandos se han convertido en hacks a medida que Docker se desarrolla más. La mejor práctica actual es
Esto eliminará:
Como a continuación, esto es nuclear.
Para limpiar su sistema, primero retire los contenedores
luego elimine las imágenes
Por supuesto, esto es nuclear y eliminará todos los contenedores y todas las imágenes. Puede eliminarlos uno a la vez a través de
docker rm #CONTAINER_ID#
ydocker rmi #IMAGE_ID
.fuente
df -ih
. Para diagnosticar más quirúrgicamente, ingresencdu
y presione c para contar archivos y C para ordenar por recuento de archivos para obtener una estimación aproximada de lo que está usando todos sus inodos. Si el problema es realmente docker, los directorios usarán la mayor cantidad de inodos de inmediato.docker system prune
Compruebe que tiene espacio libre en / var, ya que aquí es donde Docker almacena los archivos de imagen de forma predeterminada (en / var / lib / docker).
Primero limpie las cosas usando
docker ps -a
para enumerar todos los contenedores (incluidos los detenidos) ydocker rm
para eliminarlos; luego usedocker images
para enumerar todas las imágenes que ha almacenado ydocker rmi
para eliminarlas.Luego cambie la ubicación de almacenamiento con una opción -g en el docker daemon o editando
/etc/default/docker
y agregando la-g
opciónDOCKER_OPTS
.-g
especifica la ubicación del "tiempo de ejecución de Docker", que es básicamente todo lo que Docker crea a medida que crea imágenes y ejecuta contenedores. Elija una ubicación con mucho espacio ya que el espacio en disco utilizado tenderá a crecer con el tiempo. Si edita/etc/default/docker
, deberá reiniciar el demonio docker para que el cambio surta efecto.Ahora debería poder crear una nueva imagen (o extraer una de Docker Hub) y debería ver un montón de archivos que se crean en el directorio que especificó con la opción -g.
fuente
docker ps -a
para enumerar todos los contenedores (incluidos los salidos) y luegodocker rm
para eliminarlos. Usedocker images
para enumerar todas las imágenes y luegodocker rmi
para eliminarlas. Con suerte, eso debería limpiar todo (o la mayoría de las cosas).Como ya fue mencionado,
ayuda, pero con Docker 17.06.1 y posterior sin recortar volúmenes no utilizados. Desde Docker 17.06.1, el siguiente comando también elimina los volúmenes:
De la documentación de Docker: https://docs.docker.com/config/pruning/
Si desea podar volúmenes y conservar imágenes y contenedores:
fuente
docker volume prune
me ayudó hoy cuando todas las otras soluciones aquí dejaron de funcionar.Si es solo una instalación de prueba de Docker (es decir, no producción) y no le importa hacer una limpieza nuclear, puede:
limpiar todos los contenedores:
docker ps -a | sed '1 d' | awk '{print $1}' | xargs -L1 docker rm
limpiar todas las imágenes:
docker images -a | sed '1 d' | awk '{print $3}' | xargs -L1 docker rmi -f
Una vez más, uso esto en mis instancias ec2 cuando desarrollo Docker, no en ninguna ruta de control de calidad o producción seria. Lo mejor es que si tiene su Dockerfile (s), es fácil de reconstruir y / o
docker pull
.fuente
docker images -a | sed '1 d' | awk '{print $3}' | xargs docker rmi -f
. La versión OS X BSD dexargs
admite la-L
opción, a diferencia de la versión de boot2docker.docker ps -a -q
etc. para evitar las manipulaciones de texto, es decir,docker rm $(docker ps -a -q); docker rmi -f $(docker images -a -q)
debería hacer el trucopara eliminar todos los contenedores, volúmenes, redes e imágenes no utilizados a la vez ( https://docs.docker.com/engine/reference/commandline/system_prune/#related-commands ):
Si no es suficiente, primero se pueden eliminar los contenedores en ejecución:
aumentar / var / lib / docker o usar otra ubicación con más espacio también es una buena alternativa para deshacerse de este error (consulte ¿Cómo cambiar el directorio de instalación de la imagen del acoplador? )
fuente
docker system prune
No elimina los volúmenes.docker system prune -a -f --volumes
eliminará los volúmenes.Docker para Mac
Entonces,
docker system prune
ydocker system prune --volumes
sugerido en otras respuestas, liberé algo de espacio cada vez, pero eventualmente cada vez que ejecutaba algo recibía el error.Lo que realmente solucionó el problema raíz fue eliminar el
Docker.raw
archivo que Docker para Mac usa para el almacenamiento y reiniciarlo.Para encontrar ese archivo, abra Docker para Mac y vaya a *
En las versiones más recientes de Docker para Mac **, muestra el tamaño real de ese archivo en el disco allí mismo en la interfaz de usuario, así como su tamaño máximo asignado. Probablemente verás que es masivo. ¡Por ejemplo, en mi máquina pesaba 41 GB !
Eliminé
Docker.raw
, reinicié Docker para Mac, y el archivo se creó automáticamente de nuevo y volvió a tener 0 GB .Todo siguió funcionando como antes , aunque, por supuesto, había perdido mi caché de Docker. Como era de esperar, después de ejecutar algunos comandos de Docker, el archivo comenzó a llenarse nuevamente con unos pocos GB de cosas, pero ni siquiera cerca de 41 GB.
Actualizar
Unos meses más tarde,
Docker.raw
volví a llenar a un tamaño similar. Así que este método funcionó, pero tiene que repetirse cada pocos meses. Para mí eso está bien.Una nota sobre por qué funciona esto: tengo que asumir que es un error en Docker para Mac. Realmente parece que
docker system prune
/docker system prune --volumes
debería borrar por completo el contenido de este archivo, pero parece que el archivo acumula otras cosas que estos comandos no pueden eliminar. De todos modos, ¡eliminarlo manualmente resuelve el problema!fuente
Docker deja imágenes colgantes alrededor que pueden ocupar tu espacio. Para limpiar después de Docker, ejecute lo siguiente:
o con versiones anteriores de Docker:
Esto eliminará las imágenes salidas y colgantes, lo que con suerte despejará el espacio del dispositivo.
fuente
docker rmi $(docker images -f "dangling=true" -q)
fuente
también puedes usar:
o solo para volúmenes:
fuente
En mi caso, la instalación de ubuntu-server 18.04.1 [por alguna extraña razón] creó un volumen lógico LVM con solo 4 GB de tamaño en lugar de 750 GB. Por lo tanto, al extraer imágenes, me daría este error "no queda espacio en el dispositivo". La solución es simple:
fuente
También encontré este problema en la máquina RHEL. No encontré ninguna solución adecuada en ninguna parte de la comunidad de desbordamiento de pila y docker-hub. Si enfrenta este problema incluso después del siguiente comando:
podar sistema docker --todos
La solución que finalmente funcionó:
fuente
Limpie Docker utilizando el siguiente comando:
fuente
Sus cgroups tienen el
cpuset
controlador habilitado. Este controlador es principalmente útil en un entorno NUMA donde permite especificar con precisión qué CPU / banco de memoria pueden ejecutar sus tareas.Por defecto, los obligatorios
cpuset.mems
ycpuset.cpus
no están configurados, lo que significa que "no queda espacio" para su tarea, de ahí el error.La forma más fácil de solucionar esto es habilitar
cgroup.clone_children
1 en el cgroup raíz. En tu caso, debería serBásicamente le indicará al sistema que inicialice automáticamente los contenedores
cpuset.mems
ycpuset.cpus
desde su cgroup primario.fuente
echo 0 > /sys/fs/cgroup/cpuset/system.slice/cpuset.mems
Si está utilizando la imagen boot2docker a través de Docker Toolkit, el problema se debe al hecho de que la máquina virtual boot2docker se ha quedado sin espacio.
Cuando hace
docker import
o agrega una nueva imagen, la imagen se copia en la/mnt/sda1
que podría haberse llenado.Una forma de verificar qué espacio tiene disponible en la imagen, es ingresar en el vm y ejecutar
df -h
y verificar el espacio restante en / mnt / sda1El comando ssh es
docker-machine ssh default
Una vez que esté seguro de que se trata de un problema de espacio, puede limpiar de acuerdo con las instrucciones de algunas de las respuestas a esta pregunta, o puede elegir cambiar el tamaño de la imagen boot2docker, aumentando el espacio en
/mnt/sda1
Puede seguir las instrucciones aquí para cambiar el tamaño de la imagen https://gist.github.com/joost/a7cfa7b741d9d39c1307
fuente
Si está utilizando Docker Desktop, puede aumentar el tamaño de la imagen del disco en Configuración avanzada yendo a las Preferencias de Docker .
Aquí está la captura de pantalla de macOS:
fuente
Puede deberse al espacio de almacenamiento predeterminado establecido en 40 GB (ruta predeterminada, / var / lib / docker)
puede cambiar el volumen de almacenamiento para apuntar a una ruta diferente
DOCKER_STORAGE_OPTIONS = '- controlador de almacenamiento = superposición --graph = CUSTOM_PATH'
si ejecuta la información de la ventana acoplable de comandos (debe mostrar el controlador de almacenamiento como superposición)
fuente
Parece que hay algunas maneras en que esto puede ocurrir. El problema que tuve fue que la imagen del disco acoplable había alcanzado su tamaño máximo (Docker Whale -> Preferencias -> Disco si desea ver qué tamaño tiene OSX).
Subí el límite y ya estaba listo. Estoy seguro de que limpiar las imágenes no utilizadas también funcionaría.
fuente
Ejecuto los siguientes comandos.
No hay necesidad de reconstruir imágenes después.
Estos eliminan los contenedores salidos / colgantes y los volúmenes colgantes.
fuente
Para mí
docker system prune
hizo el truco. Estoy ejecutando mac os.fuente
docker volume ls
no devolvía nada, por lo que parecía que el almacenamiento era utilizado principalmente por cachés e imágenes colgantes.Esto funciono para mi
parece ser una mejor opción con la última versión
fuente