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?

29voto

zummed Punkte 291

Um Antwort von Arun zu erweitern, musste ich die "export"-Befehle entfernen, damit dies in CentOS 7 funktioniert. Also bearbeite

/etc/sysconfig/docker

Und füge hinzu:

HTTP_PROXY="http://:"
HTTPS_PROXY="https://:"
http_proxy="${HTTP_PROXY}"
https_proxy="${HTTPS_PROXY}"

Dann starte Docker neu:

sudo service docker restart

Die Quelle ist dieser Blog-Beitrag.

14voto

Rockallite Punkte 15487

Warum ein lokal gebundener Proxy nicht funktioniert

Das Problem

Wenn Sie einen lokal gebundenen Proxy verwenden, z.B. der auf 127.0.0.1:8989 hört, funktioniert er NICHT in Docker für Mac. Laut der Docker-Dokumentation:

Ich möchte von einem Container aus mit einem Dienst auf dem Host verbinden

Der Mac hat eine sich ändernde IP-Adresse (oder keine, wenn Sie keinen Netzwerkzugriff haben). Unsere derzeitige Empfehlung ist, eine ungenutzte IP an die lo0-Schnittstelle auf dem Mac anzuschließen. Zum Beispiel: sudo ifconfig lo0 alias 10.200.10.1/24 und stellen Sie sicher, dass Ihr Dienst auf dieser Adresse oder 0.0.0.0 (d.h. nicht 127.0.0.1) hört. Dann können Container eine Verbindung zu dieser Adresse herstellen.

Gleiches gilt für die Docker-Serverseite. (Um die Serverseite und die Clientseite von Docker zu verstehen, versuchen Sie, docker version auszuführen.) Und die Serverseite läuft auf einer Virtualisierungsebene, die ihr eigenes localhost hat. Daher wird keine Verbindung zum Proxy-Server auf dem localhost des Host-Betriebssystems hergestellt.

Die Lösung

Wenn Sie also einen lokal gebundenen Proxy wie ich verwenden, müssen Sie im Wesentlichen die folgenden Dinge tun, um ihn mit Docker für Mac zum Laufen zu bringen:

  1. Lassen Sie Ihren Proxy-Server auf 0.0.0.0 anstatt auf 127.0.0.1 hören. Vorsicht: Sie benötigen eine angemessene Firewall-Konfiguration, um einen böswilligen Zugriff zu verhindern.

  2. Fügen Sie der lo0-Schnittstelle eine Loopback-Alias hinzu, z.B. 10.200.10.1/24:

     sudo ifconfig lo0 alias 10.200.10.1/24
  3. Setzen Sie den HTTP- und/oder HTTPS-Proxy auf 10.200.10.1:8989 in den Einstellungen im Docker-Tray-Menü (vorausgesetzt, dass der Proxy-Server auf dem Port 8989 hört).

Überprüfen Sie anschließend die Proxy-Einstellungen, indem Sie einen Befehl in einem neuen Container ausführen, der aus einem nicht heruntergeladenen Image erstellt wurde:

$ docker rmi -f hello-world
  ...

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world

c04b14da8d14: Pull complete 
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
  ...

Hinweis: Der durch ifconfig gesetzte Loopback-Alias bleibt nach einem Neustart nicht erhalten. Um ihn dauerhaft zu machen, ist ein anderes Thema. Bitte lesen Sie diesen Blog-Beitrag auf Japanisch (Google Translate kann helfen): diesen Blog-Beitrag.

13voto

n3o Punkte 2746

Dies ist die Lösung, die für mich funktioniert hat: Ubuntu, Docker-Version: 1.6.2

Fügen Sie in der Datei /etc/default/docker die Zeile hinzu:

export http_proxy='http://:'

Starten Sie Docker neu

sudo service docker restart

11voto

Marcel Friedmann Punkte 354

Um Docker für die Arbeit mit einem Proxy zu konfigurieren, müssen Sie die HTTPS_PROXY / HTTP_PROXY Umgebungsvariable zur Docker-Sysconfig-Datei (/etc/sysconfig/docker) hinzufügen.

Je nachdem, ob Sie init.d oder das Services-Tool verwenden, müssen Sie die "export" Anweisung hinzufügen (aufgrund des Debian Bug-Berichtslogs - #767441. Beispiele in /etc/default/docker sind irreführend bezüglich der unterstützten Syntax):

HTTPS_PROXY="https://:@:"
HTTP_PROXY="https://:@:"
export HTTP_PROXY="https://:@:"
export HTTPS_PROXY="https://:@:"

Das Docker-Repository (Docker Hub) unterstützt nur HTTPS. Um Docker mit SSL-Unterbrechungsproxys zum Laufen zu bringen, müssen Sie das Root-Zertifikat des Proxys dem System-Trust-Store hinzufügen.

Für CentOS kopieren Sie die Datei nach /etc/pki/ca-trust/source/anchors/ und aktualisieren Sie den CA-Trust-Store und starten Sie den Docker-Dienst neu.

Wenn Ihr Proxy die NTLMv2-Authentifizierung verwendet - müssen Sie Zwischenproxys wie Cntlm verwenden, um die Authentifizierung zu überbrücken. Dieser Blogbeitrag erläutert es im Detail.

6voto

Marcello de Sales Punkte 19324

Nach der Installation von Docker führen Sie folgendes aus:

[mdesales@pppdc9prd1vq ~]$ sudo HTTP_PROXY=http://proxy02.ie.xyz.net:80 ./docker -d &
[2] 20880

Dann können Sie ziehen oder irgendetwas machen:

mdesales@pppdc9prd1vq ~]$ sudo docker pull base
2014/04/11 00:46:02 POST /v1.10/images/create?fromImage=base&tag=
[/var/lib/docker|aa088847] +job pull(base, )
Pulling repository base
b750fe79269d: Download complete
27cf78414709: Download complete
[/var/lib/docker|aa088847] -job pull(base, ) = OK (0)

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