Às vezes, é necessário gerenciar o Docker não apenas com o comando local docker, mas também remotamente — usando a API. Neste artigo, vamos entender como habilitar o acesso à API do Docker, quais métodos de conexão existem e como garantir a segurança da conexão.
Por padrão, a API do Docker está disponível apenas por meio de um socket. Após a instalação do Docker, os contêineres são gerenciados por meio de um socket Unix: /var/run/docker.sock. Esse é um método local e não permite conexão pela rede. Se você tentar enviar uma requisição HTTP para localhost:2375, ocorrerá um erro de conexão:
curl http://localhost:2375/version
# curl: (7) Failed to connect to localhost port 2375: Connection refused
Para usar a API remotamente, é necessário alterar a configuração do Docker.
Métodos de acesso à API do Docker
O Docker pode aceitar conexões via:
- Socket Unix (/var/run/docker.sock) — padrão.
- Socket TCP sem TLS (ex: tcp://0.0.0.0:2375) — acesso aberto, NÃO recomendado.
- Socket TCP com TLS (ex: tcp://0.0.0.0:2376) — método seguro.
Configurando a API do Docker via arquivos de configuração. Primeiramente, é necessário alterar os parâmetros de inicialização do serviço Docker. Crie ou edite o arquivo:
nano /etc/docker/daemon.json
Adicione ou edite o conteúdo:
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
Como o Docker não impede conflitos de configuração, também removeremos os argumentos de inicialização do systemd, deixando conforme mostrado na captura de tela:
nano /lib/systemd/system/docker.service

Atenção: a porta 2375 é usada sem criptografia. Use apenas em ambiente de testes ou com um firewall, pois a API do Docker não oferece, por padrão, mecanismos de autenticação que validem os usuários. Por conta dessa má configuração, mais de 16 mil máquinas podem estar vulneráveis atualmente:

Aplique as alterações e reinicie o Docker:
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker
Verifique a disponibilidade da API:
curl http://localhost:2375/version

Como conectar à API a partir de outro computador
Na máquina cliente, você pode usar:
export DOCKER_HOST=tcp://IP_DO_SERVIDOR:2375
docker ps
Se a conexão não for estabelecida, verifique se:
- O servidor está escutando na porta 2375 (ss -tuln | grep 2375);
- A porta está liberada no firewall (ufw allow 2375/tcp);
- O Docker está realmente em execução com o parâmetro -H necessário;
- A opção segura é usar TLS;
- Gerando certificados SSL.
Para acesso seguro via rede, utilize TLS. Especifique os caminhos dos certificados ao iniciar o Docker:
dockerd \
-H=unix:///var/run/docker.sock \
-H=0.0.0.0:2376 \
--tlsverify \
--tlscacert=/etc/docker/ssl/ca.pem \
--tlscert=/etc/docker/ssl/server-cert.pem \
--tlskey=/etc/docker/ssl/server-key.pem
O que fazer se a API não funcionar?
- O Docker não está escutando na porta TCP. Verifique os argumentos de inicialização:
ps aux | grep dockerd
Certifique-se de que existe o parâmetro -H tcp://0.0.0.0:2375.
- A porta está bloqueada. Verifique o firewall:
sudo ufw allow 2375/tcp
- O SELinux ou o AppArmor está bloqueando a conexão.
Em sistemas com SELinux ou AppArmor, permissões adicionais podem ser necessárias.
A API do Docker é uma ferramenta poderosa para gerenciar contêineres, mas exige uma configuração cuidadosa. Jamais exponha a porta 2375 para redes públicas sem proteção. O ideal é utilizar TLS ou configurar um proxy seguro com HTTPS, como o Nginx.