Saltar la navegación

5.4 Asociando redes a contenedores

En los tres apartados anteriores hemos hablado de aspectos relativos a las redes docker pero no hemos dicho nada de cómo "conectamos" esas redes a nuestros contenedores que es el paso fundamental para que dichos contenedores puedan conectarse entre ellos , puedan ofrecer servicios al exterior y puedan conectarse a Internet para poder actualizarse y/o instalar cualquier dependencia que necesitemos. Para realizar esta "conexión" debemos de tener en cuenta los siguientes aspectos:

  • Al arrancar un contenedor podemos especificar  a qué red está conectado inicialmente usando el flag --network seguido del nombre de la red a la que queremos conectarlo.
  • Si al arrancar un contenedor no especificamos una red, el contenedor se conectará a la red por defecto, la red "bridge" que usa el driver "bridge".
  • Al arrancar un contenedor no puedo "conectarlo" inicialmente a más de una red.
  • Tras crear el contenedor puedo conectarlo a más redes o desconectarlo de alguna red. Dependiendo de si he elegido la red por defecto o no, podré o no podré hacer esa conexión o desconexión en caliente (con el contenedor funcionando).

Para ilustrar todas estar afirmaciones vamos a realizar distintos ejemplos:.

# Arrancar un contenedor de Apache sin especificar red y habilitando la conexión desde el exterior a través del puerto 80. Se conectará por defecto a la red bridge.

> docker run -d --name web -p 80:80 httpd

# Arrancar un contenedor de Apache conectándose a la red red1 que es una red bridge definida por el usuario y habilitando la conexión desde el exterior a través del puerto 8080

> docker run -d --name web2 --network red1 -p 8080:80 httpd

# Arrancar un contenedor de Apache conectándose a la red red1 dándole una ip (que debe pertenecer a esa red)

> docker run -d --name web2 --network red1 --ip 172.18.0.5 -p 8181:80 httpd

# Conectar una nueva red, la red2  al contenedor web2.

> docker network connect red2 web2

# Conectar una red, la red2 al contenedor web y darle una ip (que debe pertenecer a esa red)

> docker network connect --ip 172.28.0.3 red2 web

# Desconectar la red1 del contenedor web2. Debe estar funcionando para poder desconectarse

> docker network disconnect red1 web2

Por supuesto la orden docker connect tienen más opciones que podemos consultar en la referencia y , adicionalmente, hay varios flags de la orden docker run que están relacionados con redes y que pueden resultar de interés:

  • --dns para establecer unos servidores DNS predeterminados.
  • --ip6 para establecer la dirección de red ipv6
  • --hostname o -h para establecer el nombre de host del contenedor. Si no lo establezco será el ID del mismo.

Creado con eXeLearning (Ventana nueva)