Como configurar proxy no Docker (contêineres, Compose e builds)
Atualizado:
Ao executar scrapers multicontêiner, workers de automação ou nós DePIN em um único servidor host, passar as variáveis de ambiente HTTP_PROXY e HTTPS_PROXY por contêiner permite que cada serviço saia por seu próprio endereço IPv4 estático dedicado da VinaProxy sem alterar a tabela de roteamento do host.
ENV HTTP_PROXY=http://user:pass@ip:port HTTPS_PROXY=http://user:pass@ip:port- 1 IP₫ 40.000
- 5+ IPs₫ 35.000
- 10+ IPs₫ 25.000
- 20+ IPs₫ 25.000
- 50+ IPs₫ 25.000
- 100+ IPs₫ 25.000
- 200+ IPs₫ 25.000
- 500+ IPs₫ 25.000
- 1000+ IPs₫ 22.000
- 2000+ IPs₫ 20.000
- 1 IP₫ 40.000
- 5+ IPs₫ 35.000
- 10+ IPs₫ 25.000
- 20+ IPs₫ 25.000
- 50+ IPs₫ 25.000
- 100+ IPs₫ 25.000
- 200+ IPs₫ 25.000
- 500+ IPs₫ 25.000
- 1000+ IPs₫ 22.000
- 2000+ IPs₫ 20.000
Compreendendo os 3 escopos de configuração de proxy no Docker
O Docker separa o tráfego de execução do contêiner, o tráfego de build de imagens e as requisições do daemon a registros:
| Escopo do Docker | Onde configurar | O que ele roteia |
|---|---|---|
| 1. Execução do contêiner (Runtime) | docker run -e HTTP_PROXY=... ou environment: no Compose | Tráfego gerado pela aplicação dentro daquele contêiner específico |
2. Build de imagem (docker build) | --build-arg HTTP_PROXY=http://user:pass@ip:port | Downloads de gerenciadores de pacotes (apt, pip, npm) durante o build |
3. Daemon do Docker (dockerd) | /etc/systemd/system/docker.service.d/http-proxy.conf | Requisições de docker pull e docker push para registros |
Boas práticas no Docker Compose e regras de NO_PROXY
- Defina as variáveis em maiúsculas (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY) e minúsculas (http_proxy,https_proxy,no_proxy) para que todas as ferramentas CLI e runtimes do Linux as reconheçam - Sempre liste os nomes dos serviços internos do Docker Compose (ex.:
NO_PROXY=localhost,127.0.0.1,redis,postgres) para que o tráfego intercontêiner permaneça na rede bridge local - Nunca insira senhas de proxy em imagens públicas com
ENVdentro de umDockerfile— injete-as em tempo de execução via.envoudocker-compose.yml
Passo a passo
- 1
Formate seu proxy como http://user:pass@ip:port
Converta sua linha
ip:port:user:passda VinaProxy usando nosso Conversor de formato de proxy. - 2
Adicione variáveis de ambiente ao docker-compose.yml
Sob a seção
environment:do serviço, definaHTTP_PROXY,HTTPS_PROXY,http_proxy,https_proxyeNO_PROXY=localhost,127.0.0.1,redis,db. - 3
Inicie ou recrie o contêiner
Execute
docker compose up -dpara aplicar as variáveis de ambiente. - 4
Verifique o IP de saída de dentro do contêiner
Execute
docker exec -it <container> curl -s https://vinaproxy.com/api/my-ippara confirmar que o contêiner sai pelo IP do seu proxy.
Perguntas frequentes
Por que meu contêiner não consegue acessar o contêiner do Redis ou Postgres após definir HTTP_PROXY?
Sem NO_PROXY, seu cliente HTTP tenta acessar nomes internos como redis ou db através do proxy externo. Adicione NO_PROXY=localhost,127.0.0.1,redis,db (e no_proxy em minúsculas) para ignorar o proxy em hosts da bridge local.
Posso atribuir 20 proxies diferentes a 20 contêineres em um único VPS?
Sim. Defina cada serviço de contêiner (ou passe variáveis distintas do .env) com sua própria string http://user:pass@ip:port.
Por que definir variáveis de proxy em maiúsculas e minúsculas?
Algumas bibliotecas Linux (como a libcurl) verificam primeiro as minúsculas http_proxy / https_proxy, enquanto ferramentas em Go e Node costumam verificar as maiúsculas HTTP_PROXY / HTTPS_PROXY.
Atribua IPs estáticos dedicados a cada contêiner Docker
Proxies IPv4 dedicados e ISP estáticos sem limite de tráfego em 7 países.
Comprar proxies para Docker