Com base na documentação oficial do Docker sobre configuração de proxy HTTP e HTTPS.
A motivação partiu da necessidade de utilizar o Docker dentro da rede da Dataprev sem utilização de proxy interno na máquina do usuario.
- Crie o arquivo
/etc/systemd/system/docker.service.d/http_proxy.conf
- Em seu conteúdo insira o seguinte:
[Service]
Environment="HTTP_PROXY=http://[[usuario][:senha]@ProxyAdress[:porta]]"
Onde:
[usuario]
e[senha]
são campos obrigatórios caso a máquina host esteja sob proxy que necessite autenticação.proxyAdress
é o endereço da maquina de proxy(testado apenas com nome do endereço)
- Execute os comandos
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
$ systemctl show --property=Environment docker
O comando acima exibirá no console exatamente o valor de Environment
em http_proxy.conf
:
Environment="HTTP_PROXY=http://[[usuario][:senha]@ProxyAdress[:porta]]"
- Execute o comando
$ docker info | grep HTTP
- verifique que será exibido:
# Caso [usuario] e [senha] tenham sido informados, ou pelo menos o @ esteja na url:
HTTP Proxy: http://xxxxx:xxxxx@ProxyAdress[:porta]]
ou
# Caso [usuario] e [senha] tenham sido informados, ou pelo menos o @ esteja na url:
HTTP Proxy: http://ProxyAdress[:porta]]
- Realizar um
run
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
Recomenda-se que, caso a senha utilize algum caracter especial, a utilização do HTML Encoding Reference para substituir o caracter em questão deve ser feita.
Porém, caso a senha inserida em http_proxy.conf
contenha alguns destes caracteres, a variável será ignorada, e nem na execução do comando docker info | grep HTTP
retornará o esperado.
Para a definição da variável no arquivo não é necessário utilizar HTML Encoding Reference