Usando Docker - Parte I
En el artículo anterior hablamos sobre por qué Docker se ha convertido en una herramienta esencial. Ahora vamos a lo práctico: cómo instalar Docker y ejecutar tus primeros contenedores.
Instalación
macOS
La forma más simple es instalar Docker Desktop:
- Descarga Docker Desktop desde el sitio oficial
- Arrastra la aplicación a tu carpeta de Aplicaciones
- Abre Docker Desktop y espera a que el engine inicie
Verifica la instalacion:
docker --version
# Docker version 20.10.x, build xxxxx
docker compose version
# Docker Compose version v2.x.x
Linux (Ubuntu/Debian)
# Actualiza los paquetes
sudo apt-get update
# Instala dependencias
sudo apt-get install ca-certificates curl gnupg lsb-release
# Agrega la key GPG oficial de Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Agrega el repositorio
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instala Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Tu primer contenedor
Ejecuta un contenedor de Nginx:
docker run -d -p 8080:80 --name mi-nginx nginx
Desglosemos el comando:
docker run: crea y ejecuta un contenedor-d: modo detached (en background)-p 8080:80: mapea el puerto 8080 de tu maquina al puerto 80 del contenedor--name mi-nginx: le da un nombre al contenedornginx: la imagen a usar
Abre http://localhost:8080 y verás la página de bienvenida de Nginx.
Comandos esenciales
# Ver contenedores corriendo
docker ps
# Ver todos los contenedores (incluyendo detenidos)
docker ps -a
# Detener un contenedor
docker stop mi-nginx
# Iniciar un contenedor detenido
docker start mi-nginx
# Ver logs de un contenedor
docker logs mi-nginx
# Ejecutar un comando dentro del contenedor
docker exec -it mi-nginx bash
# Eliminar un contenedor
docker rm mi-nginx
# Ver imágenes descargadas
docker images
# Eliminar una imagen
docker rmi nginx
Creando tu propio Dockerfile
Un Dockerfile define cómo construir tu propia imagen. Creemos una para una aplicación PHP simple:
# Imagen base
FROM php:8.2-apache
# Copiar archivos de la aplicación
COPY ./src /var/www/html/
# Exponer el puerto 80
EXPOSE 80
Construye y ejecuta:
# Construir la imagen
docker build -t mi-app-php .
# Ejecutar el contenedor
docker run -d -p 8080:80 --name mi-app mi-app-php
Docker Compose para múltiples servicios
En proyectos reales necesitas múltiples servicios: web server, base de datos, cache. Docker Compose los orquesta en un solo archivo:
# docker-compose.yml
version: '3.8'
services:
app:
build: .
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: mi_app
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Levanta todo con un comando:
docker compose up -d
Consejos prácticos
- Usa
.dockerignorepara excluir archivos innecesarios (node_modules, .git, etc.) - No corras procesos como root dentro del contenedor cuando sea posible
- Usa multi-stage builds para reducir el tamaño de tus imágenes de producción
- Monta volúmenes para desarrollo local así los cambios se reflejan en tiempo real
Siguiente paso
En una próxima parte veremos cómo configurar un ambiente de desarrollo completo con Docker para un proyecto Laravel, incluyendo PHP, Nginx, MySQL y Redis.
Docker cambia la forma en que desarrollas, testeas y despliegas. Una vez que lo integras en tu flujo de trabajo, no vas a querer volver atrás.