390 Stimmen

Kann keine Docker-Images hinter einem Proxy herunterladen

Ich habe Docker auf meinem Ubuntu 13.10 (Saucy Salamander) installiert und wenn ich in meiner Konsole folgendes eingebe:

sudo docker pull busybox

erhalte ich den folgenden Fehler:

Repository busybox wird abgerufen
2014/04/16 09:37:07 Abrufen von https://index.docker.io/v1/repositories/busybox/images: Wählen Sie TCP: Zum Suchen von index.docker.io auf 127.0.1.1:53: keine Antwort vom Server

Docker-Version:

$ sudo docker version

Client-Version: 0.10.0
Client-API-Version: 1.10
Go-Version (Client): go1.2.1
Git-Commit (Client): dc9c28f
Server-Version: 0.10.0
Server-API-Version: 1.10
Git-Commit (Server): dc9c28f
Go-Version (Server): go1.2.1
Letzte stabile Version: 0.10.0

Ich bin hinter einem Proxy-Server ohne Authentifizierung, und das ist meine /etc/apt/apt.conf Datei:

Acquire::http::proxy "http://192.168.1.1:3128/";
Acquire::https::proxy "https://192.168.1.1:3128/";
Acquire::ftp::proxy "ftp://192.168.1.1:3128/";
Acquire::socks::proxy "socks://192.168.1.1:3128/";

Was mache ich falsch?

959voto

Alexandre Mélard Punkte 11789

Hier ist ein Link zur offiziellen Docker-Dokumentation für Proxy HTTP: https://docs.docker.com/config/daemon/systemd/#httphttps-proxy

Eine kurze Übersicht:

Erstellen Sie zunächst ein systemd Drop-In-Verzeichnis für den Docker-Dienst:

mkdir /etc/systemd/system/docker.service.d

Erstellen Sie nun eine Datei namens /etc/systemd/system/docker.service.d/http-proxy.conf, die die Umgebungsvariablen HTTP_PROXY und HTTPS_PROXY hinzufügt:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"
Environment="HTTPS_PROXY=http://proxy.example.com:80/"

Wenn Sie interne Docker-Registrierungen haben, die Sie ohne Proxy kontaktieren müssen, können Sie sie über die Umgebungsvariable NO_PROXY festlegen:

Environment="HTTP_PROXY=http://proxy.example.com:80/"
Environment="HTTPS_PROXY=http://proxy.example.com:80/"
Environment="NO_PROXY=localhost,127.0.0.0/8,docker-registry.somecorporation.com"

Änderungen übernehmen:

$ sudo systemctl daemon-reload

Überprüfen Sie, ob die Konfiguration geladen wurde:

$ sudo systemctl show --property Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:80/
Environment=HTTPS_PROXY=http://proxy.example.com:80/

Starten Sie Docker neu:

$ sudo systemctl restart docker

Fußnote zu HTTP_PROXY vs. HTTPS_PROXY: Lange Zeit hat es ausgereicht, nur HTTP_PROXY einzustellen. Aber mit Version 20.10.8 ist Docker auf Go 1.16 umgestiegen, was die Semantik dieser Variable ändert: https://golang.org/doc/go1.16#net/http
Für https://-URLs wird der Proxy jetzt durch die Variable HTTPS_PROXY bestimmt, ohne auf HTTP_PROXY zurückzugreifen.

97voto

mbarthelemy Punkte 11813

Ihre APT-Proxy-Einstellungen haben nichts mit Docker zu tun.

Docker verwendet die Umgebungsvariable HTTP_PROXY, wenn diese vorhanden ist. Zum Beispiel:

sudo HTTP_PROXY=http://192.168.1.1:3128/ docker pull busybox

Ich empfehle Ihnen jedoch, stattdessen Ihre Konfigurationsdatei /etc/default/docker zu überprüfen: Dort sollte eine Zeile vorhanden sein, die Sie auskommentieren (und möglicherweise anpassen) müssen, um Ihre Proxy-Einstellungen automatisch anzuwenden. Starten Sie dann den Docker-Server neu:

service docker restart

64voto

Arun Y Punkte 871

Auf CentOS befindet sich die Konfigurationsdatei für Docker unter:

/etc/sysconfig/docker

Das folgende Hinweis hat mir geholfen, den Docker-Daemon hinter einem Proxy-Server zum Laufen zu bringen:

HTTP_PROXY="http://:"
HTTPS_PROXY="http://:"

50voto

Pedro Madrid Punkte 1827

Wenn Sie das neue Docker für Mac (oder Docker für Windows) verwenden, klicken Sie einfach mit der rechten Maustaste auf das Docker-Symbol in der Taskleiste und wählen Sie Einstellungen (Windows: Einstellungen). Gehen Sie dann zu Erweitert und geben Sie unter Proxies Ihre Proxy-Einstellungen an. Klicken Sie auf Anwenden und Neustarten und warten Sie, bis Docker neu gestartet wird.

31voto

gkephorus Punkte 1134

Auf Ubuntu müssen Sie den http_proxy für den Docker-Daemon und nicht den Client-Prozess einstellen. Dies wird in /etc/default/docker durchgeführt (siehe hier).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X