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

-21.5%

CPU
CPU
2 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
300 GB
wKVM-SSD 2048 HK Windows

26 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 4096 Linux

15.95 /mes

/mes

Facturado cada 12 meses

-8.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 2048 Windows

37.4 /mes

/mes

Facturado cada 12 meses

-20.8%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
10 TB
wKVM-SSD 16384 Metered Windows

100 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
10 Epyc Cores
RAM
RAM
64GB
Space
Space
400 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 65536
OS
CentOS
Software
Software
Keitaro

149.04 /mes

/mes

Facturado cada 12 meses

-12.8%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
1 TB
wKVM-SSD 1024 Metered Windows

17 /mes

/mes

Facturado cada 12 meses

-20.5%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
10 TB
KVM-SSD 16384 Metered Linux

95 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
8 Xeon Cores
RAM
RAM
32 GB
Space
Space
200 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 32768 Linux

69.99 /mes

/mes

Facturado cada 12 meses

-20.6%

CPU
CPU
6 Xeon Cores
RAM
RAM
8GB
Space
Space
100GB SSD
Bandwidth
Bandwidth
500GB
KVM-SSD 8192 HK Linux

59 /mes

/mes

Facturado cada 12 meses

-9.6%

CPU
CPU
8 Xeon Cores
RAM
RAM
32 GB
Space
Space
200 GB SSD
Bandwidth
Bandwidth
12 TB
wKVM-SSD 32768 Metered Windows

156 /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.