Isso geralmente ocorre porque o iptables no host está bloqueando o acesso das redes docker. Você pode olhar para iptables -S ou iptables -nvL para ver suas regras atuais.
Dito isso, se você abrir a API do docker, precisará ter cuidado com quem pode acessar essa API. Usar a porta 2375 normalmente significa que você não configurou mTLS, consulte guia do docker para configurar mTLS. Isso significa que qualquer pessoa com acesso à porta pode enviar chamadas de API, o que significa que um usuário local não privilegiado, ou qualquer outro contêiner, tem a capacidade de obter root em seu host. No seu caso, isso é tão fácil quanto:
A solução recomendada é usar DinD para executar o mecanismo docker dentro de um contêiner ou compartilhar o soquete docker como uma montagem de arquivo/volume com o acesso UID/GID apropriado ao arquivo. Isso garante apenas que o contêiner tenha acesso ao mecanismo docker, em vez de todos os usuários e qualquer contêiner em execução no host. Para lidar com os problemas de acesso UID/GID com arquivos montados em um volume, fiz isso especificamente para imagens Jenkins em meu jenkins-docker repo, e há uma solução mais genérica no meu fix-perms script no meu repositório docker-base.
@ BMitch-eu descobri - mas você também acertou (você deve postá-lo como uma resposta, aceitarei e excluirei o meu) o iptables bloqueou o acesso. uma vez que eu abri - lo-funcionou como esperado.
Além disso, expor o soquete docker à rede torna trivial hackear o servidor. Qualquer pessoa com acesso à rede, seja um usuário local não privilegiado ou remoto, pode executar docker-h tcp://172.17.0.1:2375 run-it --rm --privileged --PID host debian nsenter-t 1-m-u-n-i bash para obter root. Dê acesso ao arquivo de soquete com permissões de grupo e uma montagem de volume ou configure mTLS. Redirecting…