cómo conectarse a localhost: 9092 desde el contenedor de docker usando docker-compose y no usando docker bridge

Estoy ejecutando el server de Kafka en mi máquina local en el puerto 9092. Estoy ejecutando un service en un contenedor acoplable usando docker-compose, que necesita enviar un post al server kafka.

Traté de escribir mi productor en el código de service usando 'localhost' e IP también, pero ambos no están funcionando.

¿Alguien puede ayudarme a solucionar el problema?

Con docker-componer:

Use la opción network_mode para permitir la connection a los puertos del localhost

network_mode: "host" 

Sin docker-componer:

Use la bandera –net para permitir la connection a los puertos del host local

 docker run -it --net=host 

También puedes usar –network flag

 --network="host" 

De acuerdo con la documentation oficial de Docker, "dan al contenedor acceso total a los services del sistema local, como D-bus y, por lo tanto, se lo considera inseguro".

Por supuesto, si almacena en contenedor su service que se ejecuta en localhost: 9092, puede ejecutarlo también en un contenedor Docker y unir sus dos contenedores Docker utilizando la marca –link:

 docker run -t -d myService docker run -t -d --link myService:myService_ref myOtherService 

Podría corregir la dirección IP de su host y pasarla a la window acoplable a través de docker-compose usando la opción 'extra_hosts':

Algo como:

 sudo ifconfig lo0 alias 172.16.123.1 

Luego en docker componer:

 extra_hosts: - "service.localhost:172.16.123.1" 

Luego dentro del contenedor deberías poder:

 ping service.localhost