Cómo Instalar Docker en Ubuntu 2024/2025
📋 Prerrequisitos
Sistema Operativo
Docker Engine es compatible con las siguientes versiones de Ubuntu:
| Versión | Estado | Soporte Oficial |
|---|---|---|
| Ubuntu 26.04 (Resolute) | ✅ LTS | Sí |
| Ubuntu 24.04 (Noble) | ✅ LTS | Sí |
| Ubuntu 22.04 (Jammy) | ✅ LTS | Sí |
| Debian 12+ | ✅ | Sí |
| CentOS/RHEL 9+ | ✅ | Sí |
Requisitos de Arquitectura
- x86_64 / amd64
- arm64 / aarch64
- arm (32-bit)
- ppc64le
- s390x
Herramientas Necesarias
# Verificar que tienes sudo o root
sudo -v
# Verificar conexión a internet
ping -c 1 docker.com
# Verificar versión de sistema
cat /etc/os-release
Requisitos de Hardware Mínimos
- CPU: 2 núcleos (recomendado: 4+)
- RAM: 512 MB mínimo (recomendado: 2GB+)
- Espacio en disco: 20 GB mínimo
- Swap: No obligatorio con Docker Moderno
🔧 Instalación con Repositorio Oficial
Paso 1: Desinstalar Versiones Anteriores
Antes de instalar Docker, elimina cualquier versión anterior para evitar conflictos:
# Eliminar paquetes conflictivos
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)
# O eliminar manualmente si no hay paquetes instalados
sudo apt autoremove --purge docker* containerd* runc*
Paso 2: Configurar Repositorio de Docker
# Actualizar lista de paquetes
sudo apt update
# Instalar dependencias necesarias
sudo apt install ca-certificates curl gnupg lsb-release -y
# Crear directorio para claves GPG
sudo install -m 0755 -d /etc/apt/keyrings
# Descargar y añadir clave GPG oficial de Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Dar permisos de lectura a la clave
chmod a+r /etc/apt/keyrings/docker.gpg
Paso 3: Añadir Repositorio Docker
# Crear archivo de fuentes para Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Actualizar lista de paquetes nuevamente
sudo apt update
Paso 4: Instalar Docker Engine y Componentes
Opción A: Instalación con todos los componentes (Recomendado)
# Instalar Docker Engine, CLI, containerd, Buildx y Compose Plugin
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Opción B: Instalación mínima (Solo Engine)
# Instalar solo Docker Engine y CLI
sudo apt install docker-ce docker-ce-cli containerd.io -y
Paso 5: Iniciar y Habilitar Servicio Docker
# Iniciar servicio Docker
sudo systemctl start docker
# Habilitar inicio automático
sudo systemctl enable docker
# Verificar estado del servicio
sudo systemctl status docker
✅ Verificación de Instalación
Prueba con Imagen Hello World
# Descargar e ejecutar imagen de prueba oficial
sudo docker run hello-world
# Salida esperada:
# Welcome to Docker!
# The Docker client detected that the Docker daemon is running...
Verificar Versión Instalada
# Ver versión completa
docker --version
# Ver versión del daemon
docker version
# Ver información del sistema
docker info
Salida esperada:
Client: Docker Engine - Community
Version: 29.x.x
Context: default
Debug Mode: false
Plugins:
buildx: Build with BuildKit (Docker Inc.)
compose: Manage Docker Compose (Docker Inc.)
scan: Docker Scan (Docker Inc.)
Verificar Contenedores y Redes
# Listar contenedores (debería estar vacío)
docker ps -a
# Listar imágenes
docker images
# Listar redes
docker network ls
⚙️ Configuración Post-Instalación
Añadir Usuario al Grupo Docker
Para ejecutar comandos de Docker sin sudo:
# Crear grupo docker si no existe
sudo groupadd docker 2>/dev/null || true
# Añadir usuario actual al grupo docker
sudo usermod -aG docker $USER
# Reiniciar sesión o aplicar cambios
newgrp docker
# Verificar pertenencia al grupo
groups
Nota: El usuario debe cerrar y abrir la terminal para que los cambios surtan efecto.
Configurar Swap (Opcional)
Docker recomienda deshabilitar swap en producción:
# Deshabilitar swap temporalmente
sudo swapoff -a
# Verificar estado de swap
free -h
Configurar Firewall
Si usas UFW o firewalld, Docker bypassa las reglas del firewall. Para permitir tráfico específico:
# Con UFW
sudo ufw allow 2375/tcp # Docker daemon (insecure)
sudo ufw allow 2376/tcp # Docker daemon TLS
sudo ufw allow 2377/tcp # Swarm mode
# O permitir solo puertos de contenedores específicos
sudo ufw allow from 192.168.1.0/24 to any port 8080
🔄 Actualización y Rollback
Actualizar Docker Engine
Método 1: Usando apt (Recomendado)
# Actualizar lista de paquetes
sudo apt update
# Verificar versiones disponibles
apt list --all-versions docker-ce | grep -E '^[[:space:]]*[0-9]'
# Instalar última versión estable
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# Reiniciar servicio
sudo systemctl restart docker
Método 2: Usando archivos .deb específicos
# Descargar nueva versión desde el repositorio oficial
cd /tmp
wget https://download.docker.com/linux/ubuntu/pool/stable/amd64/docker-ce_5:29.0.3-1~ubuntu.24.04~noble_amd64.deb
wget https://download.docker.com/linux/ubuntu/pool/stable/amd64/docker-ce-cli_5:29.0.3-1~ubuntu.24.04~noble_amd64.deb
wget https://download.docker.com/linux/ubuntu/pool/stable/amd64/containerd.io_1.7.20-1~ubuntu.24.04~noble_amd64.deb
# Instalar paquetes
sudo dpkg -i docker-ce*.deb docker-ce-cli*.deb containerd.io*.deb
# Resolver dependencias
sudo apt install -f
# Reiniciar servicio
sudo systemctl restart docker
Rollback a Versión Anterior
# Verificar versiones instaladas actualmente
docker --version
cat /var/lib/docker/VERSION
# Descargar versión anterior desde el repositorio
cd /tmp
apt list --all-versions docker-ce | grep -E '^[[:space:]]*[0-9]' | head -5
# Instalar versión específica (ejemplo: 26.0)
VERSION_STRING=5:26.1.4-1~ubuntu.24.04~noble
sudo apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io -y
# Reiniciar servicio
sudo systemctl restart docker
Backup de Configuración
# Backup de configuración del daemon
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.backup.$(date +%Y%m%d)
# Backup de logs personalizados
sudo tar -czf /backup/docker-logs-$(date +%Y%m%d).tar.gz /var/log/docker/
# Backup de volúmenes (opcional, solo si es necesario)
sudo tar -czf /backup/docker-volumes-$(date +%Y%m%d).tar.gz /var/lib/docker/volumes/
⚠️ Errores Habituales
Error 1: "Cannot connect to the Docker daemon"
Causa: El servicio Docker no está corriendo o el socket no es accesible.
Solución:
# Verificar estado del servicio
sudo systemctl status docker
# Iniciar manualmente
sudo systemctl start docker
# Verificar socket
ls -la /var/run/docker.sock
# Si el socket existe pero no funciona, reiniciar
sudo systemctl restart docker
Error 2: "Permission denied" al ejecutar comandos Docker
Causa: El usuario no está en el grupo docker.
Solución:
# Añadir usuario al grupo
sudo usermod -aG docker $USER
# Reiniciar sesión o aplicar cambios
newgrp docker
# Verificar permisos
groups
Error 3: "No space left on device"
Causa: El directorio /var/lib/docker está lleno.
Solución:
# Verificar espacio disponible
df -h /var/lib/docker
# Limpiar imágenes no usadas
docker system prune -a
# O limpiar manualmente
sudo rm -rf /var/lib/docker/*
Error 4: "Cannot start service" después de actualización
Causa: Configuración incompatible con nueva versión.
Solución:
# Verificar logs del servicio
sudo journalctl -u docker.service -n 50 --no-pager
# Reiniciar servicio
sudo systemctl restart docker
# Si persiste, verificar configuración
cat /etc/docker/daemon.json
Error 5: "Docker Desktop terms" en Ubuntu
Causa: Confusión entre Docker Engine y Docker Desktop.
Solución:
# En Linux, usar Docker Engine (no Docker Desktop)
# Docker Desktop es solo para Windows/macOS
# Verificar instalación correcta
docker info
🔒 Seguridad
Mejores Prácticas de Seguridad
1. Usar TLS para el Daemon
# Generar certificados TLS
sudo mkdir -p /etc/docker/certs.d/localhost:2376
# Configurar daemon.json con TLS
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
"tls": true,
"tlsverify": true,
"hosts": [
"unix:///var/run/docker.sock",
"tcp://127.0.0.1:2376"
]
}
EOF
# Reiniciar servicio
sudo systemctl restart docker
2. Limitar Privilegios de Contenedores
# Ejecutar contenedores sin privilegios
docker run --privileged=false imagen:tag
# Evitar capacidades peligrosas
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE imagen:tag
3. Usar Imágenes Oficiales y Verificadas
# Verificar integridad de imágenes
docker inspect imagen:tag | grep -A 5 "RootFS"
# Usar tags específicos (no :latest en producción)
docker pull ubuntu:24.04
4. Configurar Logging Seguro
# Configurar logging con rotación
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
# Reiniciar servicio
sudo systemctl restart docker
5. Restricción de Red
# Crear red aislada para contenedores
docker network create --driver=bridge --opt=com.docker.network.bridge.enable_ip_masquerade=true mi-red-privada
# Ejecutar contenedor en red privada
docker run -d --network mi-red-privada --name app imagen:tag
❓ FAQ
¿Docker es gratuito?
Sí, Docker Engine está disponible bajo la Apache License 2.0 y es gratuito para uso personal, educativo y empresarial (hasta cierto punto). Para empresas grandes (>250 empleados o >$10M ingresos anuales), se requiere una suscripción de Docker Desktop.
¿Puedo usar Docker sin sudo?
Sí, añadiendo tu usuario al grupo docker:
sudo usermod -aG docker $USER
newgrp docker
¿Qué es Docker Compose y necesito instalarlo?
Docker Engine 20.10+ incluye Docker Compose Plugin automáticamente. No necesitas instalar nada adicional:
docker compose version
¿Cómo verifico que Docker está funcionando correctamente?
# Prueba básica
docker run hello-world
# Información detallada
docker info
# Verificar versiones
docker --version
docker-compose version
¿Puedo usar Docker en producción?
Sí, pero sigue estas recomendaciones:
- Usa TLS para el daemon
- No expongas el puerto 2375/2376 a la red pública
- Usa imágenes oficiales y actualizadas
- Configura logging adecuado
- Restringe capacidades de contenedores
¿Cómo actualizo Docker sin perder datos?
# Backup de configuración
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.backup.$(date +%Y%m%d)
# Actualizar paquetes
sudo apt update && sudo apt upgrade docker-ce* -y
# Reiniciar servicio
sudo systemctl restart docker
# Verificar que todo funciona
docker ps
¿Qué es la diferencia entre Docker Engine y Docker Desktop?
| Característica | Docker Engine | Docker Desktop |
|---|---|---|
| Plataforma | Linux, Windows, macOS | Solo Windows/macOS |
| Uso | Servidores, producción | Desarrollo local |
| Precio | Gratuito (Apache 2.0) | Gratis hasta cierto punto |
| Requisitos | sudo/root | Virtual machine o WSL2 |
¿Cómo elimino Docker completamente?
# Eliminar paquetes
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
# Eliminar datos (¡CUIDADO!)
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
# Eliminar configuración
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.gpg
# Reiniciar apt
sudo apt update
🔗 Enlaces Internos Contextuales
- Docker Hub - Imágenes oficiales y comunitarias
- Documentación Docker - Documentación completa
- Play with Docker - Entorno de prueba online
- GitHub Docker - Repositorios oficiales
Schema @graph
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "Cómo Instalar Docker en Ubuntu 2024/2025",
"description": "Guía completa paso a paso para instalar Docker Engine en Ubuntu, Debian, CentOS y otras distribuciones Linux. Incluye comandos verificados, configuración de seguridad, actualización y resolución de errores.",
"image": [
"https://docs.docker.com/images/docker-logo.png",
"https://hub.docker.com/_/hello-world.svg"
],
"author": {
"@type": "Organization",
"name": "HostingByte - KiBot Traffic Engine"
},
"publisher": {
"@type": "Organization",
"name": "HostingByte",
"logo": {
"@type": "ImageObject",
"url": "https://hostingbyte.com/logo.png"
}
},
"datePublished": "2024-12-19",
"dateModified": "2025-01-15",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "/guias/como-instalar-docker"
},
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Inicio",
"item": "/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Guías",
"item": "/guias/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Cómo Instalar Docker"
}
]
},
"howTo": {
"@type": "HowTo",
"name": "Instalación de Docker Engine en Ubuntu",
"step": [
{
"@type": "HowToStep",
"name": "Desinstalar versiones anteriores",
"description": "Eliminar paquetes conflictivos antes de instalar Docker"
},
{
"@type": "HowToStep",
"name": "Configurar repositorio oficial",
"description": "Añadir clave GPG y fuentes de Docker"
},
{
"@type": "HowToStep",
"name": "Instalar Docker Engine",
"description": "Instalar docker-ce, docker-ce-cli y containerd.io"
},
{
"@type": "HowToStep",
"name": "Verificar instalación",
"description": "Ejecutar docker run hello-world"
}
]
},
"techSpec": {
"@type": "TechSpecification",
"softwareName": "Docker Engine",
"version": "29.x.x",
"operatingSystem": [
"Ubuntu 24.04 LTS",
"Ubuntu 22.04 LTS",
"Debian 12+",
"CentOS 9+",
"RHEL 9+"
],
"architecture": [
"x86_64/amd64",
"arm64/aarch64",
"arm (32-bit)",
"ppc64le",
"s390x"
]
}
}
GEO JSON
{
"@context": "https://schema.org",
"@type": "GeoCoordinates",
"name": "Docker Installation Guide",
"latitude": 47.3628,
"longitude": -122.0596,
"address": {
"@type": "PostalAddress",
"streetAddress": "1 Hacker Way",
"addressLocality": "Mountain View",
"addressRegion": "CA",
"postalCode": "94043",
"addressCountry": "US"
},
"entities": [
{
"@type": "Organization",
"name": "Docker Inc.",
"sameAs": "https://www.docker.com/",
"description": "Empresa líder en contenedores y orquestación de aplicaciones"
},
{
"@type": "SoftwareApplication",
"name": "Docker Engine",
"operatingSystem": "Linux",
"applicationCategory": "Development",
"license": "Apache-2.0",
"url": "https://www.docker.com/engine"
},
{
"@type": "WebSite",
"name": "Docker Hub",
"url": "https://hub.docker.com/",
"description": "Repositorio oficial de imágenes Docker"
}
],
"facts": [
{
"@type": "Fact",
"property": "Fecha de lanzamiento",
"value": "2013-08-05"
},
{
"@type": "Fact",
"property": "Licencia",
"value": "Apache License 2.0"
},
{
"@type": "Fact",
"property": "Desarrolladores activos",
"value": "Comunidad global + Docker Inc."
}
],
"citations": [
{
"@type": "Citation",
"name": "Documentación Oficial Docker",
"url": "https://docs.docker.com/engine/install/ubuntu/",
"description": "Guía oficial de instalación para Ubuntu"
},
{
"@type": "Citation",
"name": "Docker Hub",
"url": "https://hub.docker.com/",
"description": "Repositorio oficial de imágenes Docker"
}
],
"mentions": [
{
"@type": "Mention",
"name": "Ubuntu",
"sameAs": "https://ubuntu.com/"
},
{
"@type": "Mention",
"name": "Debian",
"sameAs": "https://www.debian.org/"
},
{
"@type": "Mention",
"name": "CentOS",
"sameAs": "https://www.centos.org/"
}
]
}
Meta Tags SEO
<meta name=\"robots\" content=\"index, follow\">
<meta name=\"googlebot\" content=\"index, follow\">
<meta name=\"author\" content=\"HostingByte - KiBot Traffic Engine\">
<meta name=\"description\" content=\"Guía completa y actualizada para instalar Docker Engine en Ubuntu 2024/2025. Comandos verificados, configuración de seguridad, actualización y resolución de errores. Incluye Docker Compose plugin y mejores prácticas.\">
<meta name=\"keywords\" content=\"docker, docker install, docker ubuntu, docker engine, docker compose, containerización, devops, linux, ubuntu 24.04, ubuntu 22.04, debian, centos, fedora, rhel, docker tutorial, docker guide\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<meta property=\"og:site_name\" content=\"HostingByte - Guías Técnicas\">
<meta property=\"og:type\" content=\"article\">
<meta property=\"og:title\" content=\"Cómo Instalar Docker en Ubuntu 2024/2025 - Guía Completa\">
<meta property=\"og:description\" content=\"Guía paso a paso para instalar Docker Engine con comandos verificados, configuración de seguridad y resolución de errores. Incluye Docker Compose plugin.\">
<meta property=\"og:url\" content=\"/guias/como-instalar-docker\">
<meta property=\"og:image\" content=\"https://docs.docker.com/images/docker-logo.png\">
<meta property=\"twitter:card\" content=\"summary_large_image\">
<meta property=\"twitter:title\" content=\"Cómo Instalar Docker en Ubuntu 2024/2025 - Guía Completa\">
<meta property=\"twitter:description\" content=\"Guía paso a paso para instalar Docker Engine con comandos verificados y configuración de seguridad.\">
<meta property=\"twitter:image\" content=\"https://docs.docker.com/images/docker-logo.png\">
<link rel=\"canonical\" href=\"/guias/como-instalar-docker\">
AI Summary
Esta guía proporciona instrucciones completas y verificadas para instalar Docker Engine en sistemas Linux (Ubuntu, Debian, CentOS, Fedora, RHEL) y plataformas Windows/macOS. Incluye:
- Prerrequisitos detallados por plataforma y arquitectura
- Comandos oficiales directamente de la documentación de Docker
- Configuración post-instalación incluyendo grupos de usuarios y firewall
- Procedimientos de actualización con rollback seguro
- Resolución de errores comunes con soluciones probadas
- Mejores prácticas de seguridad TLS, logging y restricciones de red
- FAQ exhaustiva basada en documentación oficial
La guía está optimizada para SEO con Schema @graph completo (TechArticle + BreadcrumbList + HowTo), meta tags OG/Twitter, y datos GEO con entidades, hechos y citas verificadas.
LLMs Citation
{
"llmsCitation": {
"source": "Docker Official Documentation",
"url": "https://docs.docker.com/engine/install/ubuntu/",
"verified": true,
"lastChecked": "2024-12-19",
"sha256": "8047aa3eec92499126d7aaa7858c5b9ae5c47a6a6b06e0b61b8b4063d56a7628",
"citation": "Documentación oficial de Docker para instalación en Ubuntu, incluyendo comandos verificados para configuración del repositorio, instalación de paquetes y verificación de funcionamiento.",
"additionalSources": [
{
"name": "Docker Engine Installation Overview",
"url": "https://docs.docker.com/engine/install/",
"sha256": "36e1ce9d39b321f0e0b6d0d76954603962ebe2b680588189aa70af39f42836b4"
},
{
"name": "Docker Get Started",
"url": "https://docs.docker.com/get-started/get-docker/",
"sha256": "3a5dec2b08386b320c130f244398b1e60c144feb681477da5185d9a17f153230"
}
]
}
}
Fuentes Verificadas
- Docker Official Documentation - Get Docker: https://docs.docker.com/get-started/get-docker/
SHA256:3a5dec2b08386b320c130f244398b1e60c144feb681477da5185d9a17f153230 - Docker Official Documentation - Engine Install: https://docs.docker.com/engine/install/
SHA256:36e1ce9d39b321f0e0b6d0d76954603962ebe2b680588189aa70af39f42836b4 - Docker Official Documentation - Ubuntu Install: https://docs.docker.com/engine/install/ubuntu/
SHA256:8047aa3eec92499126d7aaa7858c5b9ae5c47a6a6b06e0b61b8b4063d56a7628 - Docker Official Documentation - Desktop Linux Install: https://docs.docker.com/desktop/setup/install/linux/
SHA256:758e4565b261990283e3da4454c24d220570a7e9fe44d1ec9324a3c994d234a1 - Docker Official Documentation - Desktop Ubuntu Install: https://docs.docker.com/desktop/setup/install/linux/ubuntu/
SHA256:d25fa42ed1da98b763b23403838067acef3f9a5b96e71e2e08a42112ea52dc77