Si has estado usando Docker durante un tiempo, es posible que hayas acumulado muchos contenedores, imágenes y otros archivos que ya no necesitas. Esto puede ocupar mucho espacio en tu disco duro. Afortunadamente, Docker incluye algunas herramientas que te permiten limpiar fácilmente los archivos que ya no necesitas.
Para averiguar el espacio utilizado en disco por los diferentes elementos de Docker, puedes usar el comando ‘docker system df’:
$docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 36 5 10.4GB 7.986GB (76%)
Containers 5 0 193.8MB 193.8MB (100%)
Local Volumes 25 2 1.487GB 1.128GB (75%)
Build Cache 60 0 44.3kB 44.3kB
Primero, puedes eliminar los contenedores que ya no están en uso. Puedes hacerlo con el comando docker container prune. Este comando eliminará todos los contenedores que no se están ejecutando actualmente.
Si también quieres eliminar las imágenes que ya no necesitas, puedes usar el comando docker image prune. Esto eliminará todas las imágenes que no están siendo utilizadas actualmente por ningún contenedor.
También puedes liberar espacio eliminando los archivos de registro antiguos. Docker almacena los registros en la carpeta /var/lib/docker/containers/. Puedes eliminar los archivos de registro antiguos con el comando find /var/lib/docker/containers/ -type f -name “*.log” -delete.
Por último, si necesitas liberar aún más espacio, puedes eliminar todas las imágenes y contenedores que tienes. Puedes hacerlo con los siguientes comandos:
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
Para limpiar la memoria de Docker, puedes seguir los siguientes pasos:
Eliminar todos los contenedores detenidos:
docker container prune
Eliminar todas las imágenes no utilizadas:
docker image prune
Eliminar todas las redes no utilizadas:
docker network prune
Eliminar todos los volúmenes no utilizados:
docker volume prune
También puedes combinar todos los comandos anteriores en un solo comando:
docker system prune
Este comando eliminará todos los contenedores detenidos, imágenes, redes y volúmenes no utilizados. Ten en cuenta que este comando también eliminará todas las imágenes colgantes (es decir, imágenes que no tienen contenedor o etiqueta asociada).
En el caso de limpiar con ‘docker system prune’ y estar usando sail de Laravel, es conveniente borrar los volúmenes si se están modificando puertos del mysql, ya que limpia también esta configuración:
$ sail down -v
Comando para averiguar la ubicación de los ficheros docker en el disco
Para averiguar la ubicación de los archivos de Docker en el disco, puedes utilizar el siguiente comando:
docker info --format '{{.DockerRootDir}}'
Este comando imprimirá la ruta del directorio raíz de Docker en tu sistema. El directorio raíz de Docker es donde se almacenan los archivos relacionados con Docker, incluyendo imágenes, contenedores, volúmenes y otros componentes.
Al ejecutar el comando, obtendrás la ubicación exacta del directorio raíz de Docker en tu sistema, como por ejemplo: /var/lib/docker
en sistemas Linux o C:\ProgramData\Docker
en sistemas Windows.
Recuerda que este comando debe ejecutarse en la línea de comandos o terminal, y debes tener Docker instalado y funcionando correctamente en tu sistema para obtener la ubicación correcta.
Como cambiar la ubicación de los ficheros Docker
Para cambiar la ubicación del directorio raíz de Docker, necesitarás seguir algunos pasos dependiendo del sistema operativo que estés utilizando:
En sistemas Linux:
- Detén el servicio de Docker:
sudo service docker stop
- Mueve el directorio raíz de Docker a la nueva ubicación deseada. Por ejemplo, si deseas cambiarlo a
/ruta/nueva
:
sudo mv /var/lib/docker /ruta/nueva
- Crea un enlace simbólico desde la nueva ubicación hacia la ubicación anterior:
sudo ln -s /ruta/nueva /var/lib/docker
- Reinicia el servicio de Docker:
sudo service docker start
En sistemas Linux segunda opción:
Mis disculpas por la información incorrecta anterior. En Linux, puedes configurar la nueva ubicación del directorio raíz de Docker utilizando el archivo de configuración del demonio de Docker. Sigue los siguientes pasos:
- Detén el servicio de Docker:
sudo service docker stop
- Edita el archivo de configuración del demonio de Docker:
sudo nano /etc/docker/daemon.json
- Agrega la siguiente línea al archivo de configuración, reemplazando
/ruta/nueva
con la ubicación deseada:
{
"data-root": "/ruta/nueva"
}
- Guarda y cierra el archivo de configuración (en nano, presiona Ctrl + X, luego Y y Enter).
- Inicia el servicio de Docker:
sudo service docker start
Después de realizar estos pasos, Docker utilizará la nueva ubicación especificada como el directorio raíz para almacenar los archivos relacionados. Asegúrate de tener suficiente espacio en disco en la nueva ubicación y de que los permisos de acceso sean correctos.
Recuerda que estos pasos son para sistemas Linux. Si estás utilizando otro sistema operativo, como Windows o macOS, los pasos pueden ser diferentes.
En sistemas Windows:
- Detén el servicio de Docker. Puedes hacerlo a través del Panel de control o utilizando el siguiente comando en PowerShell con privilegios de administrador:
Stop-Service Docker
- Mueve el directorio raíz de Docker a la nueva ubicación deseada utilizando el Explorador de archivos.
- Abre una ventana de PowerShell con privilegios de administrador y ejecuta el siguiente comando para actualizar la configuración de Docker con la nueva ubicación:
dockerd --data-root="C:\ruta\nueva"
- Inicia el servicio de Docker:
Start-Service Docker
Es importante destacar que al cambiar la ubicación del directorio raíz de Docker, se perderán todos los datos y configuraciones anteriores asociados a Docker. Además, ten en cuenta que los comandos pueden variar dependiendo de la distribución de Linux o la versión de Windows que estés utilizando. Asegúrate de tener cuidado al realizar estos cambios y sigue las instrucciones específicas para tu sistema operativo.
Desinstalar Docker completamente
Si tras borrar los ficheros de datos de docker quieres desinstalarlo completamente, ejecutar el siguiente comando:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
2 comentarios
dolly23 · 26 de abril de 2023 a las 21:29
Hola, he borrado varias veces los contenedores y el volumen de mysql en el Docker, pero todavía recibo el error:
Illuminate\Database\QueryException
SQLSTATE[HY000] [2006] MySQL server has gone away (SQL: select * from `sessions` where `id` = GkLZAch6ithyZrCZtuolH23865aSNJSWiDES26VS limit 1)
Admin · 29 de abril de 2023 a las 10:02
El error que estás viendo es un Illuminate\Database\QueryException, que indica que se produjo un error al realizar una consulta a la base de datos. La parte específica del error que dice “MySQL server has gone away” sugiere que la conexión entre Laravel y MySQL se perdió o fue interrumpida.
Esto puede suceder por varias razones, como problemas de conectividad de red, una configuración inadecuada de MySQL o una carga excesiva en el servidor de base de datos. Para solucionar el problema, aquí hay algunas cosas que puedes intentar:
Verifica la configuración de MySQL: Asegúrate de que la configuración de MySQL esté correctamente configurada y que no esté limitando la cantidad de conexiones simultáneas o el tiempo de espera de la conexión.
Verifica la conectividad de red: Asegúrate de que la red entre Laravel y MySQL esté funcionando correctamente y que no haya problemas de conectividad.
Verifica el uso de recursos del servidor: Si el servidor de base de datos está utilizando demasiados recursos, puede cerrar las conexiones para protegerse. Verifica si el servidor de base de datos está bajo carga o si hay algún proceso que esté utilizando demasiados recursos.
Aumenta el tiempo de espera de la conexión: Puedes aumentar el tiempo de espera de la conexión en la configuración de Laravel o en la configuración de MySQL para permitir que las conexiones inactivas permanezcan abiertas durante más tiempo.
Espero que esto te ayude a solucionar el problema. Si el problema persiste, puede ser necesario obtener más información del registro de errores de Laravel o de la configuración de MySQL para identificar la causa raíz del problema.