← Back to blog

Usando Docker - Parte I

DockerDevOps

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:

  1. Descarga Docker Desktop desde el sitio oficial
  2. Arrastra la aplicación a tu carpeta de Aplicaciones
  3. 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 contenedor
  • nginx: 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

  1. Usa .dockerignore para excluir archivos innecesarios (node_modules, .git, etc.)
  2. No corras procesos como root dentro del contenedor cuando sea posible
  3. Usa multi-stage builds para reducir el tamaño de tus imágenes de producción
  4. 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.