Docker desde cero: el tutorial definitivo para empezar a contenerizar como un pro

Tiempo de lectura: 2 minutos

Docker está en todas partes: en backend, en despliegues, en data science, en AI… pero la primera vez que te lo presentan suele sonar a magia negra. Tranquilo: aquí te lo explico con claridad, ejemplos y un hilo narrativo que engancha.

Ballena - pexels

¿Qué es Docker y por qué todos hablan de él?

Imagina que puedes empaquetar tu aplicación junto a todo lo que necesita para funcionar —dependencias, librerías, entorno— y llevártela a cualquier máquina sin preocuparte de “en mi PC funciona, en producción no”.

Eso es Docker.

Un sistema que crea contenedores, pequeños mundos autosuficientes donde tu app vive sin molestar a nadie y sin que nada la moleste a ella.

Conceptos clave (sin tecnicismos agobiantes)

Imagen

Una receta. Contiene el sistema operativo base (ligero), dependencias y tu app.

Contenedor

Una instancia viva de una imagen. Como ejecutar un programa instalado.

Dockerfile

El archivo donde dices:
“Quiero esta base, instala esto, copia mi código y arráncalo así”.

Docker Hub

El “GitHub” de las imágenes Docker. Descargas y subes imágenes.

1. Instalación de Docker

En Linux (Ubuntu)

sudo apt update
sudo apt install docker.io
sudo systemctl enable docker
sudo systemctl start docker

En Windows / Mac

Descarga Docker Desktop desde la web oficial.

Tu primer contenedor: Hello World

docker run hello-world

Docker descargará la imagen, la ejecutará y te mostrará un mensaje de bienvenida.

Magia. Ya has corrido tu primer contenedor.

Levantemos algo útil: un servidor Nginx

Ejecuta:

docker run -d -p 8080:80 nginx

-d → en segundo plano

-p 8080:80 → abrir el puerto 8080 y conectarlo al 80 del contenedor

Ahora visita:
http://localhost:8080

Verás la bienvenida de Nginx. Ya tienes un servidor web funcionando sin instalar nada en tu PC.

Tu primer Dockerfile (Nivel: principiante ninja)

Vamos a contenerizar una pequeña app Node.js.

Estructura:

/demo
 ├─ Dockerfile
 ├─ package.json
 └─ index.js

index.js

console.log("¡Hola desde Docker!");

Dockerfile

FROM node:18-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "index.js"]

Construye la imagen:

docker build -t miapp-node .

Arráncala

docker run miapp-node

Y voilà: tu código, aislado y listo para correr en cualquier máquina del planeta.

Docker Compose: la herramienta que te salva proyectos

Cuando tienes varios servicios (backend + frontend + base de datos), levantarlos a mano es un infierno.

Con Docker Compose lo haces con un solo comando.

docker-compose.yml

version: "3.9"
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root

Ejecuta todo con:

docker compose up -d

Ya está. Dos servicios funcionando como si nada.

Buenas prácticas rápidas (para quedar como experto)

Usa imágenes alpine para reducir peso
No metas secretos en el Dockerfile, usa siempre .env
Utiliza .dockerignore
Guarda los datos en volúmenes, no dentro del contenedor
Etiqueta tus imágenes (:v1, :latest, etc.)

Deja un comentario