Docker: crear containers en la misma red

0
1088
Logotipo de docker

Uno de los aspectos esenciales en los contenedores son las redes. De forma habitual cada container lanzado tiene una red independiente. En esta entrada os vamos a explicar cómo proceder para crear dos containers de docker en la misma red sin depender del mismo despliegue.

Como es habitual, utilizaremos la herramienta de docker-compose pues así además de poder leer lo que escribimos, nos servirá para utilizar nuestro despliegue de forma escrita en lugar de usando los comandos. Es algo que recomiendo personalmente pues así nos acostumbramos a escribir nuestro código en ficheros. Ya que gran parte de las herramientas utilizadas a día de hoy por SRES están pensadas para utilizarlas escribiendo nuestro código, es una forma más de mantener y organizarlo todo. Procedemos con la creación de nuestros containers de docker en una misma red.

Para empezar, creamos una nueva red con el siguiente comando:

docker network create --driver=bridge --subnet=192.168.50.0/24 network_test
  • Driver Bridge: Este tipo de driver es el genérico y el más común.
  • Subnet: Simplemente la subnet que queramos.
  • Nombre de la red: Network_test

Utilizaremos los siguientes ficheros para desplegar un contenedor básico con nginx

web1/docker-compose.yml

version: "3.9"
services:
  web1:
    image: nginx:stable-alpine
    ports:
      - "900:80"
    networks:
      - network_test
networks:
  network_test:
    external: true

web2/docker-compose.yml

version: "3.9"
services:
  web2:
    image: nginx:stable-alpine
    ports:
      - "901:80"
    networks:
      - network_test
networks:
  network_test:
    external: true

El comando docker network create nos permite crear una red interna de docker en función de los parámetros que le pasemos.

Si ahora hacemos un docker inspect sobre nuestros contenedores deploy2_web2_1 y deploy1_web1_1, podremos comprobar como tendremos asignadas unas IPs del rango 192.168.50.1/24

Tan simple como usar el tag «networks». El motivo de utilizar el tag «external: true» es solamente para indicar que es una red externa de docker. También podríamos no indicar este parámetro y entonces se crearía la red junto con nuestro contenedor, el otro contenedor si tendríamos que utilizar el tag para unirlo a la red.

En esta entrada os dejo la documentación oficial de docker respecto a network create. Aquí te dejo otra entrada rápida de leer, pero no menos importante, quieres entender la diferencia entre «expose» y «port»? no te pierdas mi anterior entrada.

¡Hasta la próxima!

Dejar respuesta

Please enter your comment!
Please enter your name here