Optimización Avanzada en Docker

1

La importancia de Aprender Docker

2

Desbloqueando el Poder de Docker

3

Construcción de Imágenes Multi-stage

4

Escaneo de imágenes en Docker

5

Optimización de Imágenes de docker con Distroless

6

Compilación Multiplataforma

7

Gestión de Caché y Eficiencia en Builds

8

Reducción de Dependencias y Minimización de Tamaño

9

Optimización de Build Context y Reducción de Transferencias

10

Explorando Docker Hub

Buenas Prácticas en Docker

11

Uso Eficiente de Capas en Imágenes Docker

12

Uso de .dockerignore para Optimización

13

Eliminación de Archivos Temporales y Residuos en Docker

14

Agrega usuarios a tu imagen de docker

15

Mejores Prácticas para Construcción de Imágenes

Instalación y Configuración en Entornos Multiplataforma

16

Despliegue de Docker en Azure y Entornos Locales

17

Publicar tu imagen a Container Apps de Azure

Redes Avanzadas y Balanceo de Carga

18

Modelos de Red en Docker

19

Exposición y Publicación de Puertos en Docker

20

Balanceo de Carga con Docker

Automatización de CI/CD

21

Ejecución de Scripts Multi-line en Docker

22

Automatización de CI/CD con Docker

23

Estrategias Avanzadas de CI/CD en Docker

24

Publicando mi imagen de docker a la nube con CI/CD

Orquestación

25

Retomando Docker Compose

26

Secciones en un archivo Docker Compose

27

Agregando volúmenes con Docker Compose

28

Secuencia de apagado

29

Introducción a Docker Swarm

30

Replicación de Stacks con Docker Compose

31

De Docker a la nube

32

Orquestadores de contenedores

33

Costos de Docker

Develop

34

Introducción a los devcontainers

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Exposición y Publicación de Puertos en Docker

19/34
Recursos

¿Cómo gestionar los puertos con Docker?

Gestionar los puertos en Docker es fundamental para cualquier desarrollador que busque desplegar aplicaciones de manera segura y eficiente. Docker, por defecto, cierra todos los puertos, una práctica que constituye uno de los pilares de la seguridad en la tecnología de contenedores. Esto, aunque puede parecer complicado al inicio, es esencial para proteger nuestras aplicaciones y datos. Vamos a explorar cómo puedes manejar los puertos en Docker usando ejemplos prácticos y comandos útiles.

¿Cómo poner en marcha un contenedor y gestionar sus puertos?

Para empezar a trabajar con Docker, el comando básico que necesitarás es docker run, el cual inicias así:

docker run -d -p 8080:80 --name miNginX nginx
  • -d significa que el contenedor se ejecutará en segundo plano.
  • -p 8080:80 indica que el puerto 8080 de tu máquina se mapeará al puerto 80 del contenedor.
  • --name miNginX especifica un nombre para tu contenedor, en este caso, miNginX.
  • nginx es la imagen que estás usando.

Una vez ejecutado, puedes verificar que tu contenedor esté corriendo con el comando:

docker ps

Allí verás una lista de contenedores activos, con detalles como su ID y los puertos que están mapeados.

¿Cómo usar múltiples contenedores con diferentes puertos?

Puedes administrar varios contenedores de la misma imagen en puertos distintos con facilidad. Supongamos que deseas ejecutar otro contenedor NginX pero en un puerto diferente:

docker run -d -p 1524:80 --name miOtroNginX nginx

Esta vez, estamos empleando el puerto 1524 en la máquina para el mismo puerto 80 del contenedor. Un detalle crucial es que ningún dos contenedores pueden utilizar el mismo puerto simultáneamente.

Para ver y gestionar los contenedores y sus puertos fácilmente, Docker Desktop ofrece una interfaz gráfica donde puedes observar y administrar todos tus contenedores.

¿Cómo automatizar el mapeo de puertos con Docker?

Si prefieres no preocuparte de especificar manualmente un puerto cada vez, puedes permitir que Docker gestione esto automáticamente:

docker run -d -P --name randomNginX nginx

Al usar -P, Docker asigna un puerto abierto automáticamente en tu máquina al puerto 80 del contenedor. Puedes identificar el puerto asignado ejecutando:

docker port randomNginX

Recomendaciones para la gestión de puertos en Docker

  • Seguridad ante todo: Mantén los puertos cerrados a menos que realmente los necesites abiertos para evitar vulnerabilidades.
  • Documenta tus puertos: Lleva un registro de qué puertos estás usando para cada aplicación o servicio para evitar conflictos.
  • Usa Docker Desktop: Aprovecha su interfaz para una gestión más visual y simple de tus contenedores y puertos.
  • Familiarízate con los comandos: Al dominar comandos como docker ps, docker port y docker run, te moverás más confiado y rápido en tu entorno de desarrollo.

Con estas prácticas y comandos, te encontrarás gestionando los puertos en Docker con facilidad y precisión, manteniendo siempre presente la seguridad y eficiencia de tu entorno. ¡Sigue explorando las posibilidades que Docker tiene para ofrecer e impulsa tu desarrollo!

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Recuernsen Chicos: El 1er Puerto de my parametro -P es aquel cual my computadora se comunica a dockerDaemon ; El 2nd Puerto de my parametro es con Docker se Comunica a su contenedor; Esto suele causarme confusion binaria por no saber cual es cual y luego tengo que adivinar a try and fail para ver cual sera el correcto de my localHost .
Una pregunta, es una buena practica usar los mismos puertos por ejemplo 5000:5000? o el segundo puerto debe ser diferente? Otro dato curioso es que hay que evitar usar puertos reservados que van del 0 al 1023
¿si tu publicas tu docker de nginx a internet (en azure como lo hiciste en el módulo pasado) por qué no hace falta ponerle el puerto 443 para que sea "seguro"? ¿Dónde o quién determina que ese docker tiene https?
Como habitualmente vas a tener varios contenedores corriendo en un servidor el tema de los puertos se puede volver un tanto complicado y ademas de que its not sexy que los puertos se vean en una url productiva. Para ello podrías configurar un nginx como un proxy reverso que sería publico en y con los puertos 80 y 443, los cuales serian los únicos expuestos. Este proxy podría enrutar a tus contenedores internos por medio de los puertos que elijas con lo cual mitigas el riesgo de tener expuestos tus contenedores con puertos y se ve mejor.
![](https://static.platzi.com/media/user_upload/Screenshot%202024-12-06%20081613-d6315fb8-1ddc-4e47-9821-4651bf7a94d4.jpg)