¿Es seguro limpiar Docker/overlay2/?
Tengo algunos contenedores acoplables ejecutándose en AWS EC2 , la carpeta /var/lib/docker/overlay2 crece muy rápido en tamaño de disco.
Me pregunto si es seguro eliminar su contenido. o si la ventana acoplable tiene algún tipo de comando para liberar parte del uso del disco.
ACTUALIZAR:
De hecho, ya lo intenté docker system prune -a
y recuperé 0 Kb.
Además, el tamaño de mi disco /docker/overlay2 es mucho mayor que la salida dedocker system df
Después de leer la documentación de Docker y la respuesta de BMitch, creo que es una idea estúpida tocar esta carpeta e intentaré otras formas de recuperar mi espacio en disco.
Docker usa /var/lib/docker para almacenar sus imágenes, contenedores y volúmenes locales con nombre. Eliminar esto puede provocar la pérdida de datos y posiblemente detener el funcionamiento del motor. El subdirectorio overlay2 contiene específicamente las distintas capas del sistema de archivos para imágenes y contenedores.
Para limpiar contenedores e imágenes no utilizados, consulte docker system prune
. También hay opciones para eliminar volúmenes e incluso imágenes etiquetadas, pero no están habilitadas de forma predeterminada debido a la posibilidad de pérdida de datos:
$ docker system prune --help
Usage: docker system prune [OPTIONS]
Remove unused data
Options:
-a, --all Remove all unused images not just dangling ones
--filter filter Provide filter values (e.g. 'label=<key>=<value>')
-f, --force Do not prompt for confirmation
--volumes Prune volumes
Lo que una poda nunca eliminará incluye:
- contenedores en ejecución (enumerelos con
docker ps
) - registros en esos contenedores (consulte esta publicación para obtener detalles sobre cómo limitar el tamaño de los registros)
- cambios en el sistema de archivos realizados por esos contenedores (visibles con
docker diff
)
Además, es posible que Docker no vea cualquier cosa creada fuera de las carpetas normales de Docker durante esta recolección de basura. Esto podría deberse a alguna otra aplicación que escribe en este directorio o a una configuración previa del motor de Docker (por ejemplo, cambiar de AUFS a overlay2, o posiblemente después de habilitar los espacios de nombres de usuario).
¿Qué pasaría si se ignora este consejo y se elimina una sola carpeta como overlay2 de este sistema de archivos? Los sistemas de archivos del contenedor se ensamblan a partir de una colección de capas del sistema de archivos, y la carpeta overlay2 es donde Docker realiza algunos de estos montajes (los verá en la salida cuando mount
se ejecuta un contenedor). Eliminar algunos de estos cuando están en uso eliminaría partes del sistema de archivos de un contenedor en ejecución y probablemente interrumpiría la capacidad de iniciar un nuevo contenedor a partir de una imagen afectada. Consulte esta pregunta para conocer uno de los muchos resultados posibles.
Para actualizar completamente la ventana acoplable a un estado limpio, puede eliminar todo el directorio, no solo los subdirectorios como overlay2 :
# danger, read the entire text around this code before running
# you will lose data
sudo -s
systemctl stop docker
rm -rf /var/lib/docker
systemctl start docker
exit
El motor se reiniciará en un estado completamente vacío, lo que significa que perderá todo:
- imágenes
- contenedores
- volúmenes nombrados
- redes creadas por el usuario
- estado de enjambre
Descubrí que esto funcionó mejor para mí:
docker image prune --all
De forma predeterminada, Docker no eliminará las imágenes con nombre, incluso si no se utilizan. Este comando eliminará las imágenes no utilizadas.
Tenga en cuenta que cada capa de una imagen es una carpeta dentro de la /usr/lib/docker/overlay2/
carpeta.
Tuve este problema... Era el registro el que era enorme. Los registros están aquí:
/var/lib/docker/containers/<container id>/<container id>-json.log
Puede administrar esto en la línea de comando de ejecución o en el archivo de redacción. Ver allí: Configurar controladores de registro
Personalmente agregué estas 3 líneas a mi archivo docker-compose.yml:
my_container:
logging:
options:
max-size: 10m