Os contêineres do Docker não podem acessar as portas publicadas no IP do host [fechado]

2

Eu tenho dois contêineres em execução em uma rede docker bridge (isso pode ser o padrão docker0 ou uma ponte definida pelo usuário). Se eu publicar portas de um contêiner, o outro contêiner não poderá acessar essas portas publicadas por meio do endereço IP do host.

Exemplo:

$ docker run --detach -p 80:80 nginx
$ docker run --rm -it centos \
  /bin/bash -c "yum install -y wget && wget http://${HOST_IP}"
...
Connecting to ${HOST_IP}:80... failed: No route to host.

No exemplo acima, o servidor nginx pode ser acessado a partir do host e de outros servidores na rede (ou internet). No entanto, o contêiner docker centos, que possui acesso total à rede, não consegue se conectar à porta 80 no host. Todas as portas no host podem ser acessadas sem problemas, desde que não estejam em uma ponte de rede de encaixe.

Encontrei completamente a desabilitação de firewalls (firewalld e iptables) e a reinicialização do serviço de encaixe permite acesso, por isso estou razoavelmente certo de que esse é um problema de firewall. Eu encontrei este docker libnetwork PR , mas ele não viu nenhuma atividade em 6 meses.

Estou sentindo falta de algo fundamental sobre o docker aqui? Dois contêineres na mesma rede de ponte não podem se comunicar por uma porta de publicação? Devo acrescentar que, se eu tentar acessar a porta nginx diretamente usando o IP da rede privada interna (172.X.X.X) de dentro do contêiner centos, ela funcionará. É somente ao conectar-se à porta do host publicada.

Eu descobri que o acima acontece com as últimas imagens centos (7.4.1708) e fedora (28).

    
por plasmid87 07.05.2018 / 06:01

0 respostas