10.07.2025

Como configurar o acesso à API do Docker?

À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:

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

Captura de tela nº 1 — Systemd

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:

Captura de tela nº 2 — Shodan

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

Captura de tela nº 3 — Conexão do cliente

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:

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?

  1. 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.

  2. A porta está bloqueada. Verifique o firewall:
    sudo ufw allow 2375/tcp
  3. 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.