Repolode
Tecnativa

Tecnativa/docker-socket-proxy

Um proxy HAProxy com foco em segurança, colocado diante do socket do Docker, que permite liberar ou bloquear seções específicas da Docker API por meio de variáveis de ambiente.

Estrelas
2,850
Forks
211
Issues abertas
57
Último commit
há 2 meses

O que é?

O Docker Socket Proxy fica entre um serviço e o socket do Docker e filtra quais requisições à Docker API são aceitas. Montar o socket bruto em um container equivale, na prática, a conceder acesso root ao host, mas alguns serviços precisam dele para reagir a eventos ou gerenciar containers. Este proxy permite expor apenas as partes da API de que um serviço realmente precisa.

O proxy é baseado na imagem HAProxy com Alpine e usa um pequeno arquivo de configuração. O acesso a cada seção da API é controlado por uma variável de ambiente: o valor 1 libera o acesso e o valor 0 o revoga. Requisições a seções bloqueadas recebem uma resposta HTTP 403. Events, ping e version são permitidos por padrão, enquanto seções críticas para a segurança, como AUTH e SECRETS, e operações de escrita via POST são bloqueadas por padrão.

A imagem não oferece TLS e foi feita para rodar em uma rede Docker privada, não para ser exposta publicamente. Ela permite configurar o caminho do socket por meio de SOCKET_PATH, para sistemas como balenaOS, e oferece a configuração LOG_LEVEL. Há suporte a várias versões da Docker API, e as imagens são publicadas no Docker Hub e no GitHub Container Registry.

Recursos principais

  • 01Permite liberar ou bloquear seções da Docker API usando variáveis de ambiente específicas para cada seção.
  • 02Retorna HTTP 403 para requisições bloqueadas.
  • 03Permite limitar o proxy a acesso somente de leitura desabilitando POST.
  • 04Oferece suporte a um caminho de socket personalizado por meio de SOCKET_PATH.
  • 05Baseado em Alpine e HAProxy, com um pequeno arquivo de configuração.
  • 06Abrange várias versões da Docker API, da 1.27 à 1.51.

Casos de uso

  • Conceder a um container de monitoramento ou de proxy reverso acesso somente de leitura aos eventos dos containers.
  • Limitar uma ferramenta de CI ou automação para que ela não possa executar operações privilegiadas no host.
  • Expor apenas as seções da Docker API necessárias para uma ferramenta de descoberta de serviços no estilo do Traefik.

Início rápido

  1. 1

    Execute o contêiner proxy com acesso ao Docker socket

    docker container run -d --privileged --name dockerproxy -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 tecnativa/docker-socket-proxy
  2. 2

    Configure o cliente Docker local para usar o proxy

    export DOCKER_HOST=tcp://localhost:2375
  3. 3

    Verifique a conexão com docker version

    docker version

Antes de usar

  • De acordo com o README, o contêiner precisa ser executado com --privileged para se conectar ao Docker socket.
  • A imagem não oferece suporte a TLS, então o tráfego é transmitido por HTTP sem criptografia e deve ficar restrito a uma rede controlada.
  • O acesso a cada seção da API do Docker fica desativado por padrão nas áreas críticas para a segurança e precisa ser concedido deliberadamente.

Em coleções

Tópicos

Perguntas frequentes

O que é docker-socket-proxy?
Um proxy HAProxy com foco em segurança, colocado diante do socket do Docker, que permite liberar ou bloquear seções específicas da Docker API por meio de variáveis de ambiente. O Docker Socket Proxy fica entre um serviço e o socket do Docker e filtra quais requisições à Docker API são aceitas. Montar o socket bruto em um container equivale, na prática, a conceder acesso root ao host, mas alguns serviços precisam dele para reagir a eventos ou gerenciar containers. Este proxy permite expor apenas as partes da API de que um serviço realmente precisa.
docker-socket-proxy é gratuito? Qual é a licença?
docker-socket-proxy é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
docker-socket-proxy ainda é mantido?
Atualizado nos últimos 6 meses. O último commit de docker-socket-proxy foi em 31 de ago. de 2026.
Para que posso usar docker-socket-proxy?
Conceder a um container de monitoramento ou de proxy reverso acesso somente de leitura aos eventos dos containers. Limitar uma ferramenta de CI ou automação para que ela não possa executar operações privilegiadas no host. Expor apenas as seções da Docker API necessárias para uma ferramenta de descoberta de serviços no estilo do Traefik.
Como instalar docker-socket-proxy?
Execute o contêiner proxy com acesso ao Docker socket: docker container run -d --privileged --name dockerproxy -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 tecnativa/docker-socket-proxy Configure o cliente Docker local para usar o proxy: export DOCKER_HOST=tcp://localhost:2375 Verifique a conexão com docker version: docker version
Onde consigo docker-socket-proxy?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/Tecnativa/docker-socket-proxy

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados