Qué diferencia una red bridge de una red personalizada

Las redes en Docker determinan cómo se comunican los contenedores entre sí y con el exterior. Por defecto, cada contenedor se conecta a la red bridge integrada: comparte una subred interna y puede alcanzar a los demás contenedores por IP, pero esa red no ejecuta ningún servidor DNS, así que un nombre de contenedor no se resuelve. Este laboratorio lo demuestra en vivo: primero falla un ping por nombre en la red bridge, y después funciona en cuanto los contenedores comparten una red creada con docker network create.

DNS embebido y aislamiento en redes personalizadas

Cuando creas una red con docker network create, Docker activa un servidor DNS embebido en 127.0.0.11 dentro de cada contenedor conectado a ella. Cualquier contenedor de esa red puede resolver a los demás por su nombre, sin tocar /etc/hosts a mano. La otra cara de la moneda es el aislamiento: un contenedor que no está conectado a esa red ni siquiera puede resolver el nombre de los contenedores que sí lo están, así que dos aplicaciones pueden convivir en el mismo host sin verse entre sí a menos que las conectes explícitamente con docker network connect.

Publicar puertos hacia el host

Publicar un puerto con -p host:contenedor es harina de otro costal: no tiene que ver con las redes entre contenedores, sino con exponer un servicio al host y, desde ahí, a la red externa. Si ya instalaste Docker en Debian con nuestra guía de instalación de Docker en Debian, este laboratorio es el siguiente paso natural: profundiza en la teoría de cada driver de red en nuestro artículo sobre redes en Docker: bridge, host y personalizadas, revisa cómo persistir datos en nuestra guía de volúmenes y bind mounts en Docker, y si quieres montar un entorno completo para practicar, empieza por nuestro home lab autoalojado. Para la referencia oficial de cada driver, consulta la documentación de redes de Docker, el manual de bridge(8) en man7.org para el bridge de Linux subyacente, y el código fuente del proyecto en github.com/moby/moby.

Preguntas frecuentes

¿Por qué no puedo hacer ping a un contenedor por su nombre en la red bridge por defecto?

Porque la red bridge por defecto no ejecuta ningún servidor DNS interno: solo asigna IPs y las enruta entre contenedores. Para resolver nombres necesitas crear una red propia con docker network create, que sí activa el DNS embebido de Docker en 127.0.0.11.

¿Qué diferencia hay entre la red bridge por defecto y una red personalizada en Docker?

La bridge por defecto la crea Docker automáticamente y conecta contenedores solo por IP. Una red personalizada la creas tú con docker network create, eliges su subred y, sobre todo, activa un DNS interno para que los contenedores se localicen por nombre y queden aislados de otras redes.

¿Cómo consigo que un contenedor pertenezca a dos redes de Docker a la vez?

Con docker network connect <red> <contenedor>, sin necesidad de recrearlo. El contenedor queda conectado a la red original y a la nueva a la vez, y puede resolver por nombre a los contenedores de ambas redes en las que participa.