Eu tenho um contêiner em uma rede em ponte. Ele pode alcançar o host sem problemas e conectar-se a todas as portas do host, EXCETO para portas que foram publicadas por outros contêineres.
Eu tenho o proxy userland desabilitado, então acho que pode ter algo a ver com a forma como o docker configura as regras do iptable.
Existe uma maneira simples de permitir que o contêiner alcance as portas publicadas por outros contêineres (executando em diferentes redes em ponte)?
Gostaria de evitar colocar os dois contêineres na mesma rede ou alternar para a rede de host.
Não consigo reproduzir seu problema.
Eu tenho duas redes em ponte do Docker definidas:
Eu inicio o container
c1
na redenet1
, publicando a porta do container para a porta8080
do host8081
:Eu inicio o container
c2
na redenet2
, publicando a porta do container para a porta8080
do host8082
:Agora de dentro do container
c1
eu posso acessar o web service no containerc2
acessando host port8082
:E do container
c2
eu posso acessar o web service no containerc1
acessando host port8081
:Tudo parece funcionar como anunciado. Se você obtiver resultados diferentes repetindo o mesmo conjunto de etapas, a primeira coisa que eu verificaria é ver se você tem regras de firewall em seu host que podem estar interferindo no tráfego.
Atualizar
Como esperado, o comportamento é o mesmo se eu apenas escolher um endereço de host em vez de usar a
--add-host
opção. Por exemplo, se eu tiver:Então tudo isso funciona:
etc.
Essa é uma mudança de configuração bastante substancial em relação ao padrão :).
Se eu desabilitar o proxy userland, tudo para de funcionar.
Este artigo pode ser interessante: