Em ambientes corporativos, é muito comum que os servidores não tenham acesso direto à internet. Todo o tráfego de rede precisa passar por um proxy. Se você tentar baixar uma imagem Docker (docker pull) nesse cenário sem as configurações corretas, o comando irá falhar ou ficar travado.
Neste tutorial, você vai aprender como configurar o Docker para rodar atrás de um proxy de forma definitiva, utilizando o systemd. Vamos utilizar exemplos práticos de configuração de variáveis de ambiente (HTTP_PROXY, HTTPS_PROXY e NO_PROXY).
Pré-requisitos
Antes de começar, você vai precisar de:
- Um servidor Linux com o Docker instalado.
- Acesso ao terminal com privilégios de
sudo. - O endereço de IP e a porta do seu servidor proxy (no nosso exemplo, usaremos
http://172.24.0.254:3128/).
Passo 1: Criar o diretório de configuração do Docker
Por padrão, o Docker não lê variáveis de proxy globais do sistema. Precisamos criar um diretório específico para sobrescrever as configurações do serviço do Docker.
Abra o seu terminal e execute o comando abaixo para criar a pasta docker.service.d:
sudo mkdir -p /etc/systemd/system/docker.service.d

Passo 2: Criar e editar o arquivo de configuração do Proxy
Agora, vamos criar o arquivo que conterá as instruções de proxy. Usaremos o editor de texto nano (você pode usar o vim se preferir).
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

Dentro deste arquivo, cole o seguinte conteúdo (adapte os IPs e portas para a realidade da sua rede):
[Service]
Environment="HTTP_PROXY=http://172.24.0.254:3128/"
Environment="HTTPS_PROXY=http://172.24.0.254:3128/"
Environment="NO_PROXY=localhost,127.0.0.1,mysql-server,zabbix-server,192.168.24.0/24"

Entendendo as variáveis:
[Service]: Indica que estas configurações pertencem ao serviço do systemd.HTTP_PROXYeHTTPS_PROXY: Definem o endereço do servidor proxy que o Docker usará para acessar a internet.NO_PROXY: Lista de endereços (separados por vírgula) que não devem passar pelo proxy. Isso é crucial para comunicação interna. Incluilocalhost,127.0.0.1, nomes de containers/servidores internos (mysql-server,zabbix-server) e faixas de IP da rede local (ex:192.168.24.0/24).
Salve o arquivo e saia do editor (No nano, pressione CTRL+X, depois Y e Enter).
Passo 3: Aplicar as configurações (Passo Crucial)
Muitos tutoriais esquecem deste passo. O Docker não reconhecerá as novas configurações apenas criando o arquivo. Você precisa recarregar o daemon do systemd e reiniciar o serviço do Docker.
Execute os dois comandos abaixo:
sudo systemctl daemon-reload
sudo systemctl restart docker

Passo 4: Verificar se o Proxy foi aplicado
Para garantir que o Docker absorveu as variáveis de ambiente, você pode rodar o seguinte comando:
sudo systemctl show --property=Environment docker
A saída deve mostrar exatamente as variáveis que você configurou no Passo 2.
Passo 5: Testando a conexão (Docker Pull)
Agora vem o teste final. Vamos tentar baixar uma imagem leve, como o alpine, para validar a configuração.
Execute o comando:
sudo docker pull alpine
Se tudo estiver configurado corretamente, você verá uma saída semelhante a esta, mostrando o download sendo feito com sucesso através do proxy:

Dicas Extras e Solução de Problemas (Troubleshooting)
- Proxy com Autenticação: Se o seu proxy exigir usuário e senha, altere a URL para:
http://usuario:senha@172.24.0.254:3128/. - Erro de conexão: Se o
docker pullfalhar, verifique se o IP do proxy está correto e se o servidor Docker tem permissão de firewall para acessar a porta do proxy (3128 no nosso exemplo). - Containers não acessam a internet: Lembre-se que essa configuração afeta o Docker Daemon (para baixar imagens). Para que os containers em execução usem o proxy, você precisa passar as variáveis de ambiente (
-e HTTP_PROXY=...) no momento em que roda odocker runou configurá-las no seuDockerfile/docker-compose.yml.
Conclusão
Configurar o Docker para operar atrás de um proxy é uma tarefa essencial para ambientes corporativos restritos. Com a configuração via systemd mostrada neste guia, você garante que o serviço do Docker consiga baixar imagens da internet de forma transparente e segura, respeitando as regras de rede da sua empresa.




