Solución de problemas comunes de Docker
Incluso con un entorno de Docker instalado correctamente, es posible que encuentres problemas durante el uso normal. Exploremos algunos problemas comunes de Docker y sus soluciones.
Problema: El daemon de Docker no está en ejecución
Puedes omitir este paso si ya has iniciado el servicio de Docker en el paso anterior.
Si intentas ejecutar un comando de Docker y obtienes un error como este:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Esto significa que el daemon de Docker no está en ejecución. Para resolverlo:
- Comprueba el estado del servicio de Docker:
sudo systemctl status docker
- Si no está en ejecución, inícialo:
sudo systemctl start docker
- Si el servicio no se inicia, comprueba los registros (logs) en busca de errores:
sudo journalctl -u docker
Simulemos este problema y su resolución:
## Primero, detén el servicio de Docker para simular el problema
sudo systemctl stop docker
## Intenta ejecutar un comando de Docker
docker ps
## Verás el error "Cannot connect"
## Ahora reinicia el servicio para solucionarlo
sudo systemctl start docker
## Verifica que Docker está funcionando de nuevo
docker ps
Problema: Permiso denegado
Si ves un error como:
Got permission denied while trying to connect to the Docker daemon socket
Esto generalmente significa que tu usuario no tiene permiso para acceder al socket de Docker. La solución es agregar tu usuario al grupo docker:
sudo usermod -aG docker $USER
Después de ejecutar este comando, normalmente tendrías que cerrar sesión y volver a iniciar sesión para que los cambios surtan efecto. Dado que estamos en un entorno de laboratorio (lab) con el usuario labex
que ya tiene los permisos adecuados, no es necesario realizar este paso.
Problema: Problemas de espacio en disco
Docker puede consumir una cantidad significativa de espacio en disco con el tiempo debido a imágenes, contenedores y volúmenes no utilizados. Si tu sistema se está quedando sin espacio en disco:
- Comprueba el uso del disco de Docker:
docker system df
- Elimina los recursos no utilizados:
## Elimina todos los contenedores detenidos
docker container prune
## Elimina todas las imágenes no utilizadas
docker image prune
## Elimina todos los volúmenes no utilizados
docker volume prune
## O elimina todo lo no utilizado con un solo comando
docker system prune
Demostremos el comando de purga (prune):
## Crea algunos contenedores que saldrán inmediatamente
docker run hello-world
docker run ubuntu echo "This will exit immediately"
## Ahora purga los contenedores detenidos
docker container prune
Se te pedirá que confirmes la operación:
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Escribe y
para confirmar. Deberías ver una salida que muestre los contenedores eliminados.
Problema: El contenedor no se inicia
Si un contenedor no se inicia, puedes investigar comprobando sus registros (logs):
## Primero, intenta iniciar un contenedor que podría fallar
docker run --name failing-container ubuntu apt-get update
## Comprueba los registros
docker logs failing-container
Puedes ver errores en los registros que indiquen por qué el contenedor falló.
Problema: Problemas de red
Si los contenedores no pueden comunicarse entre sí o con el mundo exterior:
- Comprueba la configuración de red de Docker:
docker network ls
- Inspecciona una red específica:
docker network inspect bridge
- Prueba la conectividad desde dentro de un contenedor:
## Inicia un contenedor con red
docker run -it ubuntu bash
## Desde dentro del contenedor, instala ping
apt-get update && apt-get install -y iputils-ping
## Intenta hacer ping a un sitio web
ping google.com
## Sal del contenedor
exit
Registros (logs) y depuración de Docker
Para la solución general de problemas de Docker, comprobar los registros del daemon de Docker puede ser útil:
sudo journalctl -u docker
Para los registros de un contenedor específico:
docker logs <container_id>
También puedes obtener un flujo en tiempo real de los registros:
docker logs -f <container_id>
Estas técnicas de solución de problemas te ayudarán a diagnosticar y resolver la mayoría de los problemas comunes de Docker.