Puertos Docker: configuración y uso

watch 4m, 5s
views 2

16:52, 02.06.2026

Contenido del artículo
arrow

  • Introducción
  • Por qué es importante el mapeo de puertos
  • Cómo añadir una nueva asignación de puertos a un contenedor en ejecución
  • Reiniciar el contenedor con la configuración actualizada
  • Pasos:
  • Reinicie con Docker Commit
  • Pasos:
  • Cómo modificar la configuración de Docker sobre la marcha
  • 1. Detener el contenedor y el servicio de Docker
  • 2. Búsqueda de archivos de configuración
  • 3. Realizar cambios en la configuración
  • 4. Comprobación de la configuración actualizada
  • 5. Aplicación de la nueva asignación de puertos al contenedor en ejecución
  • Conclusión

Introducción

Docker ha cambiado radicalmente el enfoque de los desarrolladores a la hora de crear, implementar y gestionar aplicaciones gracias al uso de la contenedorización. Uno de los componentes clave del trabajo con contenedores Docker es la gestión de los puertos, que son necesarios para la comunicación entre tus servicios en contenedores y el mundo exterior. Tanto si abres un servidor web en el puerto 80 como si abres tu propia aplicación en el 8080, comprender la configuración de los puertos de Docker es fundamental para una orquestación eficaz de los contenedores.

Este artículo te explicará qué es el mapeo de puertos en Docker, por qué es importante y cómo configurarlo, incluso para contenedores ya en ejecución.

Por qué es importante el mapeo de puertos

Por defecto, los contenedores están aislados del sistema host. Cuando una aplicación en contenedor escucha internamente en un puerto determinado, ese puerto debe estar explícitamente mapeado a un puerto de la máquina host para que sea accesible desde el exterior.

Ejemplo: docker run -p 8080:80 nginx

Esto vincula el puerto 80 dentro del contenedor al puerto 8080 del host, haciendo que el servidor NGINX sea accesible a través de localhost:8080.

Sin mapeo de puertos:

  • Sigue siendo imposible acceder a las aplicaciones desde fuera de la red de Docker.
  • Los servicios no pueden interactuar entre contenedores o sistemas.
  • El desarrollo y la depuración se vuelven más complejos.

Cómo añadir una nueva asignación de puertos a un contenedor en ejecución

Docker no admite la adición de nuevas asignaciones de puertos directamente a un contenedor que ya está en ejecución. La opción -p solo funciona durante la fase de creación del contenedor (docker run).

Para abrir un nuevo puerto:

  • Debes volver a crear el contenedor con la nueva configuración de puertos.
  • Como alternativa, utiliza un método alternativo, por ejemplo, mediante Docker commit y reinicio (descrito a continuación).

Reiniciar el contenedor con la configuración actualizada

Si deseas actualizar la asignación de puertos:

Pasos:

  1. Detenga el contenedor:
    docker stop <container_name_or_id>
  2. Elimine el contenedor (los datos permanecerán intactos si se utilizan volúmenes):
    docker rm <container_name_or_id>
  3. Vuelva a crearlo con las nuevas asignaciones de puertos:
    docker run -d -p 8080:80 --name my-nginx nginx Asegúrese de haber conservado todos los volúmenes, variables de entorno o redes necesarios al volver a crear el contenedor.

Reinicie con Docker Commit

Si el contenedor en ejecución tiene configuraciones propias que no desea perder:

Pasos:

  1. Guarde el estado del contenedor en una nueva imagen:
    docker commit <container_id> myimage:withports
  2. Inicie un nuevo contenedor a partir de la imagen comprometida con los puertos actualizados:
    docker run -d -p 8080:80 --name new_container myimage:withports Este método permite conservar el sistema de archivos actual del contenedor, al tiempo que se abren nuevos puertos.

Cómo modificar la configuración de Docker sobre la marcha

Aunque Docker no permite cambiar los puertos de los contenedores en tiempo real, puedes realizar cambios más amplios en la configuración de Docker para el comportamiento futuro de los contenedores o con fines de depuración.

1. Detener el contenedor y el servicio de Docker

Detenga el contenedor y, a continuación, el daemon de Docker (puede que necesite sudo):

docker stop <container_name> sudo systemctl stop docker

2. Búsqueda de archivos de configuración

La configuración de Docker suele encontrarse en:

  • Linux: /etc/docker/daemon.json
  • Windows/Mac (Docker Desktop): a través de la interfaz gráfica o en ~/.docker/config.json

3. Realizar cambios en la configuración

Edita el archivo daemon.json para definir tus propias asignaciones de puertos o funciones experimentales.

Ejemplo: 


"iptables": true, 
"default-address-pools": [ 

"base": "10.10.0.0/16", 
"size": 24


}

Nota: Las asignaciones de puertos no se modifican directamente aquí, pero se pueden configurar otros parámetros de funcionamiento de la red.

4. Comprobación de la configuración actualizada

Comprueba si hay errores sintácticos:

sudo dockerd --config-file /etc/docker/daemon.json --debug

Si todo va bien, reinicia el servicio Docker:

sudo systemctl start docker

5. Aplicación de la nueva asignación de puertos al contenedor en ejecución

Tras reiniciar Docker:

  • Cree un nuevo contenedor con la asignación de puertos deseada.
  • Utilice docker exec, docker cp o la conexión de volúmenes para transferir datos desde el contenedor anterior, si es necesario.

Conclusión

La asignación de puertos en Docker es la base para el despliegue de aplicaciones de red accesibles. Aunque Docker no permite cambiar los puertos sobre la marcha para los contenedores activos, existen procesos fiables para reconfigurar los contenedores con nuevos ajustes, incluyendo la congelación de contenedores y su recreación. Comprender estas prácticas garantiza el mantenimiento de la operatividad, la disponibilidad y la escalabilidad en entornos contenedorizados.

Compartir

¿Te ha resultado útil este artículo?

Ofertas populares de VPS

-20.2%

CPU
CPU
1 Xeon Core
RAM
RAM
1 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
300 GB
wKVM-SSD 1024 HK Windows

19 /mes

/mes

Facturado cada 12 meses

-15.3%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
40 Mbps
DDoS Protected SSD-wKVM 2048 Windows

54 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 4096 Linux

16.45 /mes

/mes

Facturado cada 12 meses

-5.6%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 2048 Windows

13.7 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 4096 Windows

18.1 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
6 Epyc Cores
RAM
RAM
8 GB
Space
Space
100 GB NVMe
Bandwidth
Bandwidth
Unlimited
aiKVM-NVMe 8192 Linux

26.87 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 4096
OS
CentOS
Software
Software
Keitaro

18.1 /mes

/mes

Facturado cada 12 meses

-29.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
2 TB
KVM-SSD 2048 Metered Linux

17 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
2 Epyc Cores
RAM
RAM
1 GB
Space
Space
10 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 1024 Linux

7.1 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 4096 Linux

12.06 /mes

/mes

Facturado cada 12 meses

Otros artículos sobre este tema

cookie

¿Acepta las cookies y la política de privacidad?

Utilizamos cookies para asegurar que damos la mejor experiencia en nuestro sitio web. Si continúa sin cambiar la configuración, asumiremos que acepta recibir todas las cookies del sitio web HostZealot.