As conexões são provavelmente DNAT para os contêineres. Isso significa que o host agora está agindo como um roteador entre "fora" e os contêineres. netstat
não exibirá essas conexões. Você precisará de ferramentas adicionais para os fluxos ausentes.
Uma dessas ferramentas é conntrack
, que consulta conntrack sobre conexões rastreadas. Usando este comando com a opção -j
:
conntrack -L -j
exibirá apenas conexões NAT, mostrando os fluxos atuais ativos estabelecidos entre os contêineres e o exterior e complementando a saída de netstat
.
Se você quiser uma saída semelhante a netstat
, tente usar se disponível netstat-nat
que mais ou menos depende do mesmo mecanismo.
Um outro método, para executar em um loop, seria consultar o Docker (usando docker
diretamente no host) sobre o pid principal de cada contêiner e usar o resultado para acessar a rede do contêiner, para executar uma% usualnetstat
. Isso tem a vantagem de exibir determinados estados que não aparecem mais com conntrack (como CLOSE_WAIT
, geralmente um sintoma de problemas em um aplicativo).
Dado um contêiner do Docker em execução chamado containername
, isso deve obter todas as suas conexões de rede, conforme visto de seu próprio ponto de vista, mesmo que o próprio contêiner não tenha nenhum comando útil para isso:
nsenter --target $(docker inspect --format '{{.State.Pid}}' containername) --net netstat -utn