Instalar y configurar Docker Engine en Ubuntu
📋¿Qué es Docker Engine?
Docker Engine es el motor principal de Docker.
Es el software que permite crear, ejecutar y gestionar contenedores en un sistema operativo.
Es básicamente el daemon (servicio en segundo plano) que hace que Docker funcione.
¿Para qué sirve?
-
📦 Ejecutar aplicaciones dentro de contenedores
-
🚀 Asegurar que una aplicación funcione igual en cualquier entorno
-
🔄 Aislar servicios (por ejemplo: base de datos, backend, frontend)
-
🛠 Crear entornos reproducibles para desarrollo y producción
-
📡 Desplegar aplicaciones en servidores fácilmente
📑 Contenido
- Requisitos
- Instalación en Ubuntu
- Configuración Post-Instalación
- Comandos Esenciales de Docker
- Solución de Problemas
Requisitos
- Ubuntu 22.04 LTS o versiones posteriores
- Arquitectura de 64 bits
- 4 GB de RAM o más
- Mínimo 25 GB de espacio libre en HDD
- Conexión a internet
- Permisos de administrador
Instalación en Ubuntu
Paso 1: Actualizar paquetes
sudo apt update
sudo apt upgradePaso 2: Instalar dependencias
sudo apt install ca-certificates curl gnupgPaso 3: Añadir clave GPG oficial
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.ascPaso 4: Añadir el repositorio
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOFPaso 5: Actualizamos los paquetes
sudo apt updatePaso 6: Instalamos Docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Para comprobarlo ejecutamos en la terminal
sudo systemctl status docker
En algunos casos no inicia automaticamente, ejecutamos.
sudo systemctl start dockerConfiguración Post-Instalación
Ejecutar Docker sin sudo
esta configuración solo es recomendable por comodidad cuando estamos haciendo pruebas locales.
En el caso de que estemos haciendo un proyecto profesional NO hagais esta configuración
sudo usermod -aG docker $USER
newgrp docker
Configurar inicio automático
Con esta configuración haremos que cada vez que encendamos la maquina docker se iniciará automaticamente, despreocupandonos de tener que iniciarlo manualmente.
sudo systemctl enable docker
sudo systemctl enable containerdComandos Esenciales de Docker
| Categoría | Comando | Descripción |
|---|---|---|
| Información | docker --version | Mostrar versión instalada |
| Información | docker info | Mostrar información del sistema Docker |
| Información | docker help | Mostrar ayuda general |
| Imágenes | docker pull imagen | Descargar imagen desde Docker Hub |
| Imágenes | docker push imagen | Subir imagen a Docker Hub |
| Imágenes | docker images | Listar imágenes locales |
| Imágenes | docker rmi imagen | Eliminar imagen |
| Imágenes | docker build -t nombre . | Construir imagen desde Dockerfile |
| Imágenes | docker tag origen destino | Etiquetar imagen |
| Imágenes | docker history imagen | Ver historial de capas |
| Contenedores | docker run imagen | Crear y ejecutar contenedor |
| Contenedores | docker run -d imagen | Ejecutar en segundo plano |
| Contenedores | docker run -it imagen bash | Ejecutar en modo interactivo |
| Contenedores | docker ps | Listar contenedores activos |
| Contenedores | docker ps -a | Listar todos los contenedores |
| Contenedores | docker stop id | Detener contenedor |
| Contenedores | docker start id | Iniciar contenedor detenido |
| Contenedores | docker restart id | Reiniciar contenedor |
| Contenedores | docker rm id | Eliminar contenedor |
| Contenedores | docker exec -it id bash | Entrar en contenedor en ejecución |
| Contenedores | docker inspect id | Ver detalles del contenedor |
| Contenedores | docker cp origen destino | Copiar archivos entre host y contenedor |
| Monitorización | docker logs id | Ver logs del contenedor |
| Monitorización | docker logs -f id | Ver logs en tiempo real |
| Monitorización | docker stats | Ver uso de recursos |
| Monitorización | docker top id | Ver procesos del contenedor |
| Volúmenes | docker volume create nombre | Crear volumen |
| Volúmenes | docker volume ls | Listar volúmenes |
| Volúmenes | docker volume inspect nombre | Inspeccionar volumen |
| Volúmenes | docker volume rm nombre | Eliminar volumen |
| Volúmenes | docker volume prune | Eliminar volúmenes no usados |
| Redes | docker network ls | Listar redes |
| Redes | docker network create nombre | Crear red |
| Redes | docker network inspect nombre | Inspeccionar red |
| Redes | docker network rm nombre | Eliminar red |
| Limpieza | docker system prune | Limpiar recursos no usados |
| Limpieza | docker container prune | Eliminar contenedores detenidos |
| Limpieza | docker image prune | Eliminar imágenes sin uso |
| Limpieza | docker builder prune | Limpiar caché de build |
| Compose | docker compose up | Levantar servicios |
| Compose | docker compose up -d | Levantar en segundo plano |
| Compose | docker compose down | Detener y eliminar servicios |
| Compose | docker compose ps | Estado de servicios |
| Compose | docker compose logs | Ver logs |
| Compose | docker compose build | Construir servicios |
Solución de Problemas
Estos suelen ser los errores mas comunes con sus respectivas soluciones mas comunes
Error: "permission denied while trying to connect"
sudo usermod -aG docker $USERError: "Cannot connect to the Docker daemon"
# Verificar que el servicio está activo
sudo systemctl status docker
# Iniciar servicio si está detenido
sudo systemctl start dockerError: "No such file or directory"
# Reiniciar el daemon de Docker
sudo systemctl restart dockerLiberar espacio en disco
# Eliminar imágenes, contenedores y redes no utilizados
sudo docker system prune -a
# Eliminar volúmenes huérfanos
sudo docker volume prune