Redes en Docker

Para definir cómo se comunican los contenedores.

Drivers

Bridge

Opción por defecto. Para conectar contenedores cuando cada aplicación va en un contenedor distinto, permite que estén aislados del exterior. Para conectarse entre ellos deben ejecutarse bajo el mismo proceso de docker. A su vez cada uno tiene su propia red independiente de la que les permite interaccionar.

Creación

En el compose simplemente con poner

networks:
  my-network:

es suficiente.

Podemos estar tentados (se puede hacer realmente) a hacer

service:
  image: foo:latest
  networks:
    - my-network

networks:
  my-network:

y luego conectar desde distintos docker-compose.yml. Esto tarde o temprano nos dará problemas. En un ejemplo concreto, en el que quise conectar un clúster de Kafka a una red privada ya existente y luego quise conectar también Kafka-UI a la misma red desde con su propio compose, no conseguía que éste encontrase a aquél debido a que al hacerlo de esa forma, en el primer caso se creaba una red fitosat_fitosat, mientras que en el segundo se creaba una red kafka-ui_fitosat, por lo que no había forma de que se reconociesen.

Es mejor hacer

service:
  image: foo:latest
  networks:
    my-network:

networks:
  my-network:
    name: my-network

para asegurarnos de que realmente es la misma red. Se crea una con el nombre especificado, sin prefijos no esperados.