MINI TUTORIAL DOCKER – DÍA 3

Publicar puertos y levantar tu primer servidor NGINX en un contenedor

(la primera “demostración real” del poder de Docker)


1. Objetivo del día

Hoy vas a aprender a:

  • exponer puertos desde un contenedor al host
  • ejecutar Nginx en un contenedor
  • acceder desde un navegador (http://localhost:8080)
  • consultar logs
  • entender qué ocurre si el puerto está ocupado
  • parar y reiniciar el contenedor

Este es el día en el que Docker “impresiona” por primera vez:
levantar un servidor web completo en segundos.


2. Qué significa “publicar un puerto”

Los contenedores tienen puertos internos, pero no son accesibles desde tu máquina host a menos que tú los expongas.

La forma estándar es:

docker run -p PUERTO_HOST:PUERTO_CONTENEDOR imagen

Ejemplo clásico para Nginx:

  • Nginx escucha dentro del contenedor en el puerto 80
  • Tú quieres verlo desde tu navegador en tu PC

Entonces:

-p 8080:80

→ Tu navegador accede a localhost:8080
→ Docker lo redirige al 80 interno del contenedor


3. Ejecutar Nginx en un contenedor (primer ejemplo real)

Lanza este comando:

docker run -d --name mi-nginx -p 8080:80 nginx

Explicación:

  • -d → modo background (detached)
  • --name mi-nginx → nombre del contenedor
  • -p 8080:80 → tu puerto 8080 apunta al 80 del contenedor
  • nginx → imagen oficial

Comprueba que está corriendo:

docker ps

Deberías ver:

mi-nginx   nginx   ...   Up ...   0.0.0.0:8080->80/tcp

4. Comprobar que funciona

Abre tu navegador:

👉 http://localhost:8080

Deberías ver la página por defecto de Nginx.

Si esto funciona, felicidades:
has levantado un servidor web completo en segundos.


5. Ver logs del contenedor

docker logs mi-nginx

Verás:

  • peticiones HTTP
  • accesos
  • errores (si los hay)

Si recargas el navegador varias veces, verás más líneas.


6. Parar, arrancar y reiniciar Nginx

Parar:

docker stop mi-nginx

Arrancar de nuevo:

docker start mi-nginx

Reiniciar (útil para pruebas):

docker restart mi-nginx

7. ¿Qué pasa si el puerto está ocupado?

Si intentas lanzar otro contenedor con:

docker run -d -p 8080:80 nginx

Verás un error como:

Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use

Significa:

  • en tu PC, el puerto 8080 ya lo está usando otro proceso
  • no puedes asignarlo a un nuevo contenedor

Solución: usar otro puerto del host:

docker run -d -p 8081:80 nginx

Esto es muy útil cuando necesitas levantar varias instancias de Nginx simultáneamente.


8. Por qué esto demuestra la potencia real de Docker

Sin Docker, instalar Nginx sería:

  • instalar paquetes
  • configurar systemctl
  • configurar ficheros
  • permisos
  • asegurarte de que no rompes nada del host

Con Docker fue:

docker run -d -p 8080:80 nginx

Y ya tienes:

  • Nginx
  • en su propio entorno
  • limpio
  • sin tocar tu sistema
  • sin conflictos de dependencias
  • sin configuraciones previas

Esta experiencia es la base de por qué DevOps ama Docker.


9. Práctica guiada del Día 3 (30–40 min)

✔ 1) Ejecutar Nginx en el puerto 8080:

docker run -d --name mi-nginx -p 8080:80 nginx

✔ 2) Comprobar con el navegador

http://localhost:8080

✔ 3) Ver logs:

docker logs mi-nginx

✔ 4) Reiniciar el contenedor:

docker restart mi-nginx

✔ 5) Ejecutar otro Nginx en puerto 8081:

docker run -d --name mi-nginx2 -p 8081:80 nginx

Probar:
http://localhost:8081

✔ 6) Limpiar:

docker stop mi-nginx mi-nginx2
docker rm mi-nginx mi-nginx2

10. Checklist del Día 3

  • Sé qué significa -p HOST:CONTENEDOR
  • He levantado Nginx en un contenedor
  • He accedido desde el navegador
  • Sé ver logs del contenedor
  • Sé arrancar, parar y reiniciar contenedores
  • Entiendo qué pasa si un puerto está ocupado
  • He hecho la práctica guiada

Si está todo marcado → Día 3 completado


👉 Día 4 – Volúmenes y persistencia de datos (lo que pasa cuando quieres guardar algo realmente)

[Índice Minti Tutorial Docker 7 días]

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies