Instrucción EXPOSE Dockerfile

instruccion-expose-dockerfile
instruccion-expose-dockerfile

En esta lección aprenderás instrucción EXPOSE Dockerfile y una diferencia clave: EXPOSE documenta qué puerto espera usar la aplicación, pero no publica ese puerto automáticamente en tu máquina.

Esto evita una confusión muy común al empezar con Dockerfile: escribir EXPOSE 80 no equivale a usar docker run -p 8080:80. Son pasos relacionados, pero no son lo mismo.

👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis

🐳 Si quieres aprender más de Docker, pincha en este curso de Docker gratis

Qué hace la instrucción EXPOSE Dockerfile

Problema: una imagen puede contener una aplicación web, API o servicio que escucha en un puerto interno, pero otras personas no siempre saben cuál es.

Qué aporta Docker: EXPOSE deja documentado en la imagen el puerto previsto. Herramientas, humanos y Compose pueden usar esa información como pista, aunque la publicación real depende de cómo arranques el contenedor.

ConceptoQué significa
EXPOSE 80La imagen declara que la app escucha en el puerto 80 dentro del contenedor.
docker run -p 8080:80Publica el puerto 80 del contenedor como 8080 en el host.
Sin -pEl contenedor puede escuchar internamente, pero no queda accesible desde fuera por ese puerto.

Ejemplo práctico

FROM nginx:stable-alpine
COPY ./public /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker build -t web-expose-demo:1.0 .
docker run -d --name web-expose-demo -p 8080:80 web-expose-demo:1.0
docker ps --filter "name=web-expose-demo"

En el Dockerfile, EXPOSE 80 documenta el puerto interno. En el comando docker run, -p 8080:80 es lo que hace accesible la aplicación desde el host.

Errores comunes

  • Creer que EXPOSE publica el puerto: no lo hace; necesitas -p, Compose ports o una configuración equivalente.
  • Exponer puertos que la aplicación no usa: confunde a quien mantenga la imagen.
  • Confundir puerto interno y externo: en -p 8080:80, 8080 es host y 80 es contenedor.
  • Usar EXPOSE como medida de seguridad: no abre ni cierra firewall; solo documenta intención.

Advertencia: no asumas que un puerto está protegido solo porque no aparece en EXPOSE. La seguridad depende de red, publicación de puertos, firewall y permisos reales.

Lecciones relacionadas del curso Docker

Documentación oficial y recursos

La instrucción EXPOSE Dockerfile queda bien usada cuando comunica el puerto interno esperado sin prometer publicación automática.

Cuando necesites acceso desde fuera del contenedor, combina esta documentación con -p, Compose o la configuración de red adecuada.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *