Instalación de Docker en Linux: Guía Completa para las Principales Distribuciones
Docker ha revolucionado el despliegue de aplicaciones al proporcionar una plataforma de contenedorización ligera y portátil que permite a desarrolladores y administradores de sistemas empaquetar aplicaciones con todas sus dependencias. Esta guía completa te acompaña en la instalación de Docker Engine en las principales distribuciones de Linux, incluyendo Ubuntu, Debian, CentOS, Rocky Linux y Fedora.
Tabla de Contenidos
- Introducción a Docker
- Requisitos Previos
- Resumen de Métodos de Instalación
- Instalación de Docker en Ubuntu/Debian
- Instalación de Docker en CentOS/Rocky Linux/Fedora
- Configuración Post-Instalación
- Instalación de Docker Compose
- Verificación y Pruebas
- Mejores Prácticas de Seguridad
- Solución de Problemas Comunes
- Conclusión
Introducción a Docker
Docker es una plataforma de contenedorización de código abierto que empaqueta aplicaciones y sus dependencias en unidades estandarizadas llamadas contenedores. A diferencia de las máquinas virtuales, los contenedores comparten el kernel del sistema host, lo que los hace increíblemente ligeros y rápidos para iniciar. Docker se ha convertido en el estándar de facto para la contenedorización en entornos de producción, soportando arquitecturas de microservicios, pipelines CI/CD y aplicaciones nativas de la nube.
¿Por Qué Usar Docker?
- Portabilidad: Ejecuta el mismo contenedor en cualquier sistema que soporte Docker
- Aislamiento: Las aplicaciones se ejecutan en entornos aislados sin conflictos
- Eficiencia: Los contenedores usan menos recursos que las VMs tradicionales
- Control de Versiones: Rastrea cambios en las imágenes de contenedores como código
- Despliegue Rápido: Inicia contenedores en segundos, no en minutos
- Escalabilidad: Escala aplicaciones horizontalmente con facilidad
Requisitos Previos
Antes de instalar Docker en tu sistema Linux, asegúrate de cumplir con estos requisitos:
Requisitos del Sistema
- Sistema Operativo: Distribución Linux de 64 bits (Docker no soporta sistemas de 32 bits)
- Versión del Kernel: Linux kernel 3.10 o superior (se recomienda 4.x o 5.x)
- Memoria: Mínimo 2GB RAM (se recomienda 4GB+ para producción)
- Espacio en Disco: Al menos 10GB de espacio libre en disco
- CPU: Cualquier procesador moderno de 64 bits con soporte de virtualización
Permisos de Usuario
Necesitas:
- Acceso root (privilegios sudo)
- O ser parte del grupo docker (configurado durante la instalación)
Verifica Tu Sistema
Verifica que tu sistema cumple con los requisitos:
# Check kernel version
uname -r
# Check system architecture (should show x86_64)
uname -m
# Check available disk space
df -h
# Check memory
free -h
Eliminar Versiones Antiguas de Docker
Si tienes versiones antiguas de Docker instaladas, elimínalas primero:
# Ubuntu/Debian
sudo apt-get remove docker docker-engine docker.io containerd runc
# CentOS/Rocky Linux/Fedora
sudo dnf remove docker docker-client docker-client-latest docker-common \
docker-latest docker-latest-logrotate docker-logrotate docker-engine
Resumen de Métodos de Instalación
Docker se puede instalar usando varios métodos:
- Método de Repositorio (Recomendado): Instalar desde el repositorio oficial de Docker
- Script de Conveniencia: Instalación rápida usando el script automatizado de Docker
- Instalación Manual: Descargar e instalar paquetes manualmente
- Instalación Binaria: Instalar desde binarios estáticos
Esta guía se centra en el método de repositorio ya que proporciona la instalación más confiable y mantenible.
Instalación de Docker en Ubuntu/Debian
Paso 1: Actualizar el Índice de Paquetes
sudo apt-get update
sudo apt-get upgrade -y
Paso 2: Instalar Dependencias Requeridas
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
Paso 3: Agregar la Clave GPG Oficial de Docker
# Create directory for keyrings
sudo install -m 0755 -d /etc/apt/keyrings
# Download and add Docker's GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Set proper permissions
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Para Debian, reemplaza ubuntu con debian en la URL anterior.
Paso 4: Configurar el Repositorio de Docker
# For Ubuntu
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
# For Debian
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Paso 5: Instalar Docker Engine
# Update package index with Docker repository
sudo apt-get update
# Install Docker Engine, containerd, and Docker Compose plugin
sudo apt-get install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
Paso 6: Verificar la Instalación
# Check Docker version
docker --version
# Check Docker service status
sudo systemctl status docker
Instalación de Docker en CentOS/Rocky Linux/Fedora
Paso 1: Actualizar Paquetes del Sistema
# CentOS/Rocky Linux
sudo dnf update -y
# Or for older CentOS versions
sudo yum update -y
Paso 2: Instalar Dependencias Requeridas
sudo dnf install -y \
dnf-plugins-core \
yum-utils \
device-mapper-persistent-data \
lvm2
Paso 3: Agregar el Repositorio de Docker
# For CentOS/Rocky Linux
sudo dnf config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# For Fedora
sudo dnf config-manager --add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo
Paso 4: Instalar Docker Engine
# Install Docker packages
sudo dnf install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
Si encuentras conflictos con containerd.io, es posible que necesites eliminar podman primero:
sudo dnf remove podman buildah
Paso 5: Iniciar y Habilitar el Servicio de Docker
# Start Docker daemon
sudo systemctl start docker
# Enable Docker to start on boot
sudo systemctl enable docker
# Verify service is running
sudo systemctl status docker
Configuración Post-Instalación
Habilitar el Servicio de Docker
Asegúrate de que Docker se inicie automáticamente al arrancar el sistema:
sudo systemctl enable docker
sudo systemctl enable containerd
Agregar Usuario al Grupo Docker
Ejecutar comandos de Docker sin sudo requiere agregar tu usuario al grupo docker:
# Add current user to docker group
sudo usermod -aG docker $USER
# For adding a specific user
sudo usermod -aG docker username
# Apply group changes (log out and back in, or use)
newgrp docker
Después de agregarte al grupo docker, cierra sesión y vuelve a iniciar sesión para que los cambios tengan efecto.
Configurar el Daemon de Docker
Crea o edita el archivo de configuración del daemon de Docker:
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
Agrega la siguiente configuración:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2",
"default-address-pools": [
{
"base": "172.17.0.0/16",
"size": 24
}
]
}
Reinicia Docker para aplicar los cambios:
sudo systemctl restart docker
Configurar Docker para Usar el Controlador Cgroup Systemd
Para compatibilidad con Kubernetes, configura el controlador cgroup:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
Instalación de Docker Compose
Docker Compose ahora está incluido como plugin con Docker Engine. Verifica que esté instalado:
docker compose version
Si necesitas la versión independiente:
# Download latest version
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
# Make executable
sudo chmod +x /usr/local/bin/docker-compose
# Verify installation
docker-compose --version
Verificación y Pruebas
Probar la Instalación de Docker
Ejecuta el contenedor hello-world:
docker run hello-world
Salida esperada:
Hello from Docker!
This message shows that your installation appears to be working correctly.
Ejecutar Contenedor Ubuntu
Prueba con un contenedor Ubuntu interactivo:
docker run -it ubuntu bash
Dentro del contenedor:
# Check Ubuntu version
cat /etc/os-release
# Exit container
exit
Verificar Información del Sistema Docker
# Display system-wide information
docker info
# Show Docker version details
docker version
# List running containers
docker ps
# List all containers (including stopped)
docker ps -a
# List downloaded images
docker images
Probar la Red de Docker
# Run nginx container
docker run -d -p 8080:80 --name test-nginx nginx
# Test connection
curl http://localhost:8080
# Stop and remove container
docker stop test-nginx
docker rm test-nginx
Mejores Prácticas de Seguridad
Habilitar Docker Content Trust
Habilita content trust para verificar la autenticidad de las imágenes:
export DOCKER_CONTENT_TRUST=1
Agrega a .bashrc o .zshrc para persistencia:
echo 'export DOCKER_CONTENT_TRUST=1' >> ~/.bashrc
source ~/.bashrc
Limitar la Exposición del Daemon de Docker
Nunca expongas el socket del daemon de Docker sobre TCP sin TLS:
{
"hosts": ["unix:///var/run/docker.sock"]
}
Configurar Remapeo de Namespace de Usuario
Habilita el remapeo de namespace de usuario para aislamiento adicional:
{
"userns-remap": "default"
}
Establecer Límites de Recursos
Configura límites de recursos predeterminados en daemon.json:
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
}
}
Habilitar AppArmor/SELinux
Mantén los módulos de seguridad habilitados:
# Check AppArmor status (Ubuntu/Debian)
sudo aa-status | grep docker
# Check SELinux status (CentOS/Rocky)
getenforce
Actualizaciones Regulares
Mantén Docker actualizado:
# Ubuntu/Debian
sudo apt-get update && sudo apt-get upgrade docker-ce
# CentOS/Rocky Linux
sudo dnf update docker-ce
Solución de Problemas Comunes
El Daemon de Docker No Inicia
Verifica el estado del servicio systemd:
sudo systemctl status docker
sudo journalctl -u docker.service -n 50 --no-pager
Soluciones comunes:
# Remove broken state files
sudo rm /var/lib/docker/network/files/local-kv.db
# Reset Docker daemon
sudo systemctl reset-failed docker
sudo systemctl start docker
Error de Permiso Denegado
Si ves "permission denied" al ejecutar comandos docker:
# Verify you're in docker group
groups
# If not, add yourself
sudo usermod -aG docker $USER
# Reload group membership
newgrp docker
# Or log out and back in
Puerto Ya En Uso
Encuentra el proceso que usa el puerto:
sudo netstat -tulpn | grep :port_number
# Or
sudo lsof -i :port_number
Problemas con el Controlador de Almacenamiento
Verifica el controlador de almacenamiento actual:
docker info | grep "Storage Driver"
Si es necesario, cambia a overlay2:
sudo nano /etc/docker/daemon.json
Agrega:
{
"storage-driver": "overlay2"
}
Problemas de Resolución DNS
Si los contenedores no pueden resolver nombres de dominio:
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
Limpiar Recursos de Docker
Libera espacio en disco:
# Remove unused containers, networks, images
docker system prune -a
# Remove specific resources
docker container prune
docker image prune
docker volume prune
docker network prune
Verificar Logs de Docker
# System logs
sudo journalctl -fu docker.service
# Container logs
docker logs container_name
docker logs --tail 100 -f container_name
Conclusión
Has instalado exitosamente Docker en tu sistema Linux. Docker proporciona una plataforma poderosa para contenedorizar aplicaciones, habilitando entornos consistentes desde desarrollo hasta producción.
Conclusiones Clave
- La instalación de Docker varía ligeramente entre distribuciones pero sigue patrones similares
- La configuración post-instalación es crucial para la seguridad y el rendimiento óptimo
- Agregar usuarios al grupo docker habilita el uso de Docker sin root
- Las actualizaciones regulares y las mejores prácticas de seguridad protegen tu infraestructura contenedorizada
- Docker Compose extiende las capacidades de Docker para aplicaciones multi-contenedor
Próximos Pasos
- Aprende los Fundamentos de Docker: Explora comandos de gestión de contenedores
- Crea Dockerfiles: Construye imágenes de contenedores personalizadas
- Usa Docker Compose: Orquesta aplicaciones multi-contenedor
- Implementa Seguridad: Aplica técnicas de endurecimiento de seguridad
- Explora Redes: Comprende los modos de red de Docker
- Gestiona Volúmenes: Implementa almacenamiento de datos persistente
- Monitorea Recursos: Configura registro y monitoreo
Lecturas Recomendadas
- Documentación oficial de Docker: https://docs.docker.com/
- Docker Hub para imágenes de contenedores: https://hub.docker.com/
- Mejores prácticas para escribir Dockerfiles
- Escaneo de seguridad de Docker y gestión de vulnerabilidades
- Orquestación de contenedores con Kubernetes
La tecnología de contenedorización de Docker ha transformado el despliegue de aplicaciones modernas. Con tu instalación de Docker completa, estás listo para construir, enviar y ejecutar aplicaciones contenedorizadas de manera eficiente y segura en cualquier entorno Linux.


