Não é possível acessar o contêiner Docker de outro contêiner Docker por meio do IP do host

Não é possível acessar o contêiner Docker de outro contêiner Docker por meio do IP do host

Eu tenho um servidor rodando uma VPN Wireguard 10.0.1.254/24e o Docker está rodando 172.17.0.1/16.

Minha docker-compose.yamlaparência é assim (simplificada):

services:
  container_a:
    image: nginx:latest
    ports:
      - '10.0.1.254:80:80'

  container_b:
    image: alpine:latest

Agora posso acessar o nginx usando wget http://10.0.1.254no host. Também posso acessá-lo da mesma maneira a partir de um peer VPN (por exemplo 10.0.1.1). Mas quando tento fazer isso de outro contêiner do Docker (por exemplo docker compose exec container_b wget http://10.0.1.254), recebo um tempo limite. No entanto, posso executar ping no host ( docker compose exec container_b ping 10.0.1.254).

Meu palpite é que isso tem algo a ver com a maneira como o Docker mapeia as portas no host. Mas não consigo encontrar muita informação sobre isso. Alguém sabe por que isso não funciona?

Responder1

Acontece que eu ainda tinha o UFW instalado, que foi configurado para permitir conexão de entrada a esta porta na wg0interface. Mas o sistema foi inteligente o suficiente para pegar um atalho diretamente de uma interface virtual do Docker para outra, ignorando esta regra ACCEPT para a wg0interface.

Eu descobri isso usando tail +1f /var/log/ufw.loge executando o wgetcomando com falha no outro contêiner do Docker.

No meu caso a solução foi simplesmente desabilitar o UFW ( sudo ufw disable), pois não estou usando mesmo.

informação relacionada