Aktualisiert am 02/10/2018
Mit der neuen Funktion in der Docker-Option --config
müssen Sie den Proxy in Dockerfile nicht mehr festlegen. Sie können dieselbe Docker-Datei für die Verwendung in und außerhalb der Unternehmensumgebung verwenden.
--config string Location of client config files (default "~/.docker")
oder Umgebungsvariable DOCKER_CONFIG
`DOCKER_CONFIG` The location of your client configuration files.
$ export DOCKER_CONFIG=~/.docker
https://docs.docker.com/engine/reference/commandline/cli/
https://docs.docker.com/network/proxy/
Ich empfehle, den Proxy mit httpProxy, httpsProxy, ftpProxy
und festzulegen noProxy
((Im offiziellen Dokument fehlt die Variable, ftpProxy
was manchmal nützlich ist).
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"httpsProxy": "http://127.0.0.1:3001",
"ftpProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
Passen Sie die Proxy-IP und den Port bei Bedarf an und speichern Sie unter ~/.docker/config.json
Nachdem Sie es richtig eingestellt haben, können Sie Docker Build und Docker Run wie gewohnt ausführen.
$ docker build -t demo .
$ docker run -ti --rm demo env|grep -ri proxy
(standard input):http_proxy=http://127.0.0.1:3001
(standard input):HTTPS_PROXY=http://127.0.0.1:3001
(standard input):https_proxy=http://127.0.0.1:3001
(standard input):NO_PROXY=*.test.example.com,.example2.com
(standard input):no_proxy=*.test.example.com,.example2.com
(standard input):FTP_PROXY=http://127.0.0.1:3001
(standard input):ftp_proxy=http://127.0.0.1:3001
(standard input):HTTP_PROXY=http://127.0.0.1:3001
Alte Antwort (Stillgelegt)
Die folgende Einstellung in Dockerfile funktioniert für mich. Getestet habe ich in CoreOS
, Vagrant
und boot2docker
. Angenommen, der Proxy-Port ist3128
In Centos:
ENV http_proxy=ip:3128
ENV https_proxy=ip:3128
In Ubuntu:
ENV http_proxy 'http://ip:3128'
ENV https_proxy 'http://ip:3128'
Achten Sie auf das Format, einige haben http, andere nicht, andere mit einem einzigen Kontingent. Wenn die IP-Adresse 192.168.0.193 lautet, lautet die Einstellung wie folgt:
In Centos:
ENV http_proxy=192.168.0.193:3128
ENV https_proxy=192.168.0.193:3128
In Ubuntu:
ENV http_proxy 'http://192.168.0.193:3128'
ENV https_proxy 'http://192.168.0.193:3128'
Wenn Sie in Coreos einen Proxy festlegen müssen, um beispielsweise das Image abzurufen
cat /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.0.193:3128"