¿Qué es Docker?
Docker es una plataforma de código abierto que automatiza el despliegue, escalado y gestión de aplicaciones usando contenedorización. Los contenedores empaquetan una aplicación y todas sus dependencias en una unidad estandarizada, asegurando que se ejecute de la misma manera en cualquier máquina — desde tu portátil hasta los servidores de producción.
¿Por qué Docker?
- Consistencia: "Funciona en mi máquina" ya no es un problema — los contenedores se ejecutan idénticamente en todas partes
- Aislamiento: Cada contenedor se ejecuta en su propio entorno, previniendo conflictos de dependencias
- Portabilidad: Mueve contenedores entre desarrollo, staging y producción sin esfuerzo
- Eficiencia: Los contenedores comparten el kernel del SO host y usan muchos menos recursos que las máquinas virtuales
- Velocidad: Los contenedores inician en segundos, haciendo el desarrollo y despliegue mucho más rápido
Contenedores vs Máquinas Virtuales
Mientras que las máquinas virtuales (VMs) incluyen un sistema operativo invitado completo, los contenedores comparten el kernel del SO host y solo empaquetan la aplicación y sus dependencias. Esto hace que los contenedores sean significativamente más ligeros y rápidos.
Comparación
| Característica | Contenedor | Máquina Virtual |
|---|---|---|
| Tiempo de inicio | Segundos | Minutos |
| Tamaño | MBs | GBs |
| SO | Comparte kernel del host | SO invitado completo |
| Aislamiento | Nivel de proceso | Aislamiento completo |
| Rendimiento | Casi nativo | Overhead del hipervisor |
Arquitectura de Docker
Docker usa una arquitectura cliente-servidor con estos componentes clave:
- Docker Daemon (dockerd): Se ejecuta en el host y gestiona contenedores, imágenes, redes y volúmenes
- Docker Client (docker): La herramienta CLI que usas para interactuar con el daemon
- Docker Registry: Un repositorio para imágenes Docker (ej. Docker Hub)
- Imágenes Docker: Plantillas de solo lectura usadas para crear contenedores
- Contenedores Docker: Instancias en ejecución de imágenes
Instalación de Docker
macOS
# Instalar Docker Desktop para macOS
# Descargar desde https://www.docker.com/products/docker-desktop/
# O usar Homebrew:
brew install --cask docker
Linux (Ubuntu/Debian)
# Actualizar paquetes
sudo apt-get update
# Instalar dependencias
sudo apt-get install ca-certificates curl gnupg
# Agregar la clave GPG oficial de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Configurar el repositorio
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
# Instalar Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Verificar la Instalación
# Verificar la versión de Docker
docker --version
# Ejecutar un contenedor de prueba
docker run hello-world
# Verificar información de Docker
docker info
Tu Primer Contenedor
# Descargar y ejecutar un servidor web nginx
docker run -d -p 8080:80 --name mi-web nginx
# ¡Visita http://localhost:8080 en tu navegador!
# Ver contenedores en ejecución
docker ps
# Detener el contenedor
docker stop mi-web
# Eliminar el contenedor
docker rm mi-web
Puntos Clave
- ✅ Docker empaqueta aplicaciones en contenedores portátiles y aislados
- ✅ Los contenedores son más ligeros y rápidos que las VMs
- ✅ Docker asegura consistencia en todos los entornos
- ✅ El ecosistema Docker incluye imágenes, contenedores, registros y herramientas de orquestación