it-swarm.com.de

So legen Sie einen Proxy in der Docker-Toolbox fest

Ich habe gerade Docker Toolbox in Windows-Umgebungen (Windows 7 Pro) installiert und aufgrund des Entreprise-Proxys eine Netzwerk-Zeitüberschreitung erhalten. Wie kann ich den Proxy in der Docker-Toolbox einstellen?

Danke für Ihre Hilfe.

16
Corinne Kubler

Ich bin auf das gleiche Problem gestoßen. Hier ist meine Lösung.

Env:

Win7, Docker Toolbox 17.03, cmder-Terminal, hinter der Einstellung für Unternehmensproxy.

Lösung:

suchen Sie in C:\Programme\Docker Toolbox nach der Datei start.sh. Fügen Sie folgende zwei Proxy-Einstellungen hinzu:

export http_proxy="http://hostname:port/"
export https_proxy="http://hostname:port/"

Zumindest funktioniert es bei mir.

23
ShuSon

Ich habe ein ähnliches Problem für Windows 7, das jedoch durch folgende Schritte behoben wurde:

  • Schritt 1. Erstellen Sie ein Batch-Skript "C:\Programme\Docker Toolbox\kitematic_proxy.cmd" mit der folgenden Konfiguration 

    set proxy=YOUR_PROXY
    SET HTTP_PROXY=%proxy%
    SET HTTPS_PROXY=%proxy% 
    for /f %%i in ('docker-machine.exe ip default') do set DOCKER_Host=%%i
    SET NO_PROXY=%DOCKER_Host%
    set DOCKER_Host=tcp://%DOCKER_Host%:2376
    cd Kitematic
    Kitematic.exe
    
  • Schritt 2. Öffnen Sie die Oracle Virtual Machine über das Startmenü. Klicken Sie auf Show, um zum Eingabeaufforderung zu gelangen. (Stellen Sie sicher, dass Ihre Oracle-VM aktiv ist).

 enter image description here

eingeben Sudo vi/var/lib/boot2docker/profile

füge diese Zeilen hinzu 

export HTTP_PROXY=http://your.proxy.name:8080
export HTTPS_PROXY=http://your.proxy.name:8080

verwenden Sie Ihre Proxy-Adresse und Ihren Port

dieser Link hilft mir sehr https://github.com/docker/kitematic/wiki/Common-Proxy-Issues-&-Fixes

Hinweis:

  1. Vergessen Sie nicht, 192.168.99.100 ip zur Ausnahmeliste Ihrer Proxy-Einstellung hinzuzufügen (verwenden Sie inetcpl.cpl).
  2. Vergessen Sie nicht, HTTP_PROXY und HTTPS_PROXY zu Ihrer user-Variablen hinzuzufügen (Erweiterte Einstellungen-> Umgebungsvariablen)
  3. Vergessen Sie nicht, Ihren PC neu zu starten 
7
mnhmilu

Die Installation des Dockers unter windows 7 (Docker 18.09.0) hinter einem Unternehmensproxy war für mich ziemlich kompliziert. Hier sind die Schritte, die ich befolgt habe:

  1. setzen Sie die Variable HTTP_PROXY in Ihrer Windows-Umgebung (HTTP_PROXY = http: // your_proxy: port )
  2. installieren Sie Docker Toolbox mit dem Installationsprogramm oder führen Sie Powershell als Administrator aus: choco install docker-toolbox (Warnung! Verwenden Sie Docker nicht für Windows, da es auf Windows 10 abzielt).
  3. stellen Sie sicher, dass Sie keine vorherigen VM erstellt haben, die von Ihren vorherigen Versuchen erstellt wurden (docker-machine ls sollte leer sein. Wenn nicht, führen Sie Folgendes aus: docker-machine rm default)
  4. in Powershell als Benutzer ausführen: docker-machine --native-ssh create -d virtualbox --engine-env HTTP_PROXY=$HTTP_PROXY --engine-env HTTPS_PROXY=$HTTPS_PROXY default.
  5. C:\Program Files\Docker Toolbox\start.sh ausführen
  6. Führen Sie nun docker pull busybox aus. Das sollte funktionieren.
2
Mapad

Ich hatte ein Problem bei der Installation meiner Windows 7 Docker-Toolbox

$ docker --version
Docker version 18.09.3, build 774a1f4eee

$ docker-compose --version
docker-compose version 1.23.2, build  1110ad01

Als ich es versuchte

docker run hello-world

Ich erhielt

Das Bild "Hallo-Welt: Neueste" kann lokal nicht gefunden werden. C:\Programme\Docker Toolbox\docker.exe: Fehlerantwort vom Dämon: Get https://registry-1.docker.io/v2/ : net/http: Anforderung abgebrochen, während auf Verbindung gewartet wird (Client.Timeout überschritten, während auf Header gewartet wird). Siehe 'C:\Programme\Docker Toolbox\docker.exe run --help'.

Laut https://docs.docker.com/toolbox/faqs/troubleshoot/ habe ich meinen Unternehmens-Proxy in /var/lib/boot2docker/profile Auf dem Docker-Computer registriert:

  1. Verwenden Sie ssh, um sich bei der virtuellen Maschine anzumelden. Dieses Beispiel meldet sich bei der Maschine default an.

    $ docker-machine ssh default
    [email protected]:~$ Sudo vi /var/lib/boot2docker/profile
    

Dann habe ich meinen Enterprise-Proxy am Ende des profile hinzugefügt.

export "HTTP_PROXY=http://Host:port"
export "HTTPS_PROXY=http://Host:port"

danach habe ich die anweisungen fortgesetzt

  1. Fügen Sie am Ende der Datei eine Einstellung NO_PROXY Hinzu, ähnlich wie im folgenden Beispiel.

      export "NO_PROXY=192.168.*.*"
    
  2. Starten Sie Docker neu. Nachdem Sie profile auf Ihrer VM geändert haben, starten Sie Docker neu und melden Sie sich vom Computer ab.

      [email protected]:~$ Sudo /etc/init.d/docker restart
      [email protected]:~$ exit
    

Danach funktioniert der Befehl docker run hello-world Gut

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (AMD64)
3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

Konfiguration nach PC-Neustart verloren

Wie bei @ rsb2097 erwähnt, gehen bei jedem Neustart von Docker Machine die Einstellungen in /var/lib/boot2docker/profile Verloren. Ich habe auch das gleiche Problem und weiß nicht, wie ich das vermeiden soll, aber ich habe ein Skript erstellt, um diese Einstellungen einfacher zu schreiben.

Ich dachte, das passiert, weil ich den PC heruntergefahren habe, ohne den Docker-Computer anzuhalten (VirtualBox sagt, dass beim Herunterfahren aktive Verbindungen bestehen): Es wird angenommen, dass dies schadet. Ich habe versucht docker-machine stop, Aber es hilft nicht.

Als Ergebnis habe ich ein AddDockerMachineProxy.cmd Skript geschrieben, das die Proxy-Einstellungen mit plink.exe Von PuTTY ( https://www.chiark.greenend.org.uk/~sgtatham/PuTTY/) schreibt. latest.html ).

Verwendung

  1. Starten Sie den PC neu.
  2. Führen Sie Docker Quickstart Terminal Aus, ich habe folgende Ausgabe:

    Starting "default"...
    (default) Check network to re-create if needed...
    (default) Windows might ask for the permission to configure a dhcp server. 
    Sometimes, such confirmation window is minimized in the taskbar.
    (default) Waiting for an IP...
    Machine "default" was started.
    Waiting for SSH to be available...
    Detecting the provisioner...
    Started machines may have new IP addresses. 
    You may need to re-run the `docker-machine env` command.
    Regenerate TLS machine certs?  
    Warning: this is irreversible. (y/n): Regenerating TLS certificates
    Waiting for SSH to be available...
    Detecting the provisioner...
    Copying certs to the local machine directory...
    Copying certs to the remote machine...
    Setting Docker configuration on the remote daemon...
    
  3. Führen Sie das Skript AddDockerMachineProxy.cmd Aus (plink.exe Muss sich in %PATH% Befinden):

    @echo off
    
    echo Was "Docker Quickstart Terminal" run after the reboot to init the machine?
    echo If not this script fails.
    pause
    
    set "exePlink=plink.exe"
    set "connectionString=-pw tcuser [email protected]"
    
    echo Profile BEFORE:
    call "%exePlink%" %connectionString% cat /var/lib/boot2docker/profile
    if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
    
    echo APPENDING PROXY
    call "%exePlink%" %connectionString% Sudo bash -c "'echo export \"HTTP_PROXY=http://Host:port\">> /var/lib/boot2docker/profile'"
    if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
    
    call "%exePlink%" %connectionString% Sudo bash -c "'echo export \"HTTPS_PROXY=http://Host:port\">> /var/lib/boot2docker/profile'"
    if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
    
    call "%exePlink%" %connectionString% Sudo bash -c "'echo export \"NO_PROXY=192.168.*.*\">> /var/lib/boot2docker/profile'"
    if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
    
    echo Profile AFTER:
    call "%exePlink%" %connectionString% cat /var/lib/boot2docker/profile
    if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
    
    echo Restart docker service:
    call "%exePlink%" %connectionString% Sudo /etc/init.d/docker restart
    if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
    
    echo Testing connection
    call docker image pull hello-world || ( echo ERROR: docker image pull is failed !!! & goto BadExit )
    
    echo Done!
    exit /b 0
    
    :BadExit
    echo ERROR !!!
    exit /b 1
    
1
and1er

Ah! Tatsächlich ist mit Docker Toolbox Windows ein Teil nur eine sehr dünne Schicht über der erstellten virtuellen Maschine. Meine Methode ist es, die virtuelle Maschine selbst so zu konfigurieren, dass alles funktioniert. Damit.

0) Legen Sie globale Umgebungsvariablen auf dem Windows-Host-Computer fest

HTTP_PROXY = "http://login:[email protected]:8080"
HTTPS_PROXY = "http://login:[email protected]:8080"

Großbuchstaben beachten! (Sie können auch FTP_PROXY und NO_PROXY)

1) Starten Sie Docker Quickstart Terminal. Es erstellt eine virtuelle Maschine mit dem Namen default unter Ihrer VirtualBox oder was auch immer. Es wird auch die Adresse Ihres neu erstellten VM like

docker is configured to use the default machine with IP 192.168.99.104

2) SSH an diese Adresse (d. H. Mit PuTTY). Login: docker Passwort: tcuser

3) Laufen

echo '
{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://login:[email protected]:8080",
     "httpsProxy": "http://login:[email protected]:8080"
   }
 }
}' > /home/docker/.docker/config.json

Dadurch wird der Docker-Client (auf VM!) Gezwungen, Container mit korrekten Envs auszuführen.

4) Jetzt können Sie den Docker-Client in VM verwenden. Um den Windows Docker-Client (sowie Docker-Compose) zu zwingen, auch in laufenden Containern die richtigen Envs zu setzen, geben Sie dasselbe config.json wie in S.3 auf dem Windows Host-Computer an C:\User\<yourhomedir>\.docker Verzeichnis.

Überprüfen Sie nun die Umgebung im laufenden Container

docker run -ti ubuntu env

HTTPS_PROXY=http://login:[email protected]:8080
https_proxy=http://login:[email protected]:8080
HTTP_PROXY=http://login:[email protected]:8080
http_proxy=http://login:[email protected]:8080

Beachten Sie, dass sowohl Groß- als auch Kleinbuchstaben korrekt eingestellt sind!

Endkontrolle für alles ist in Ordnung:

docker run -ti ubuntu apt-get update

5) Ein Problem, dem Sie möglicherweise gegenüberstehen, ist, dass die Adresse Ihres Proxys vom Netzwerk stammt, das der Docker beim Erstellen eigener Netzwerke verwendet, sodass die Route zu Ihrem Proxys direkt nach dem Ausführen von docker network create. Stellen Sie daher sicher, dass die Proxy-Adresse nicht 172.18.x.x lautet. Wenn dies der Fall ist, erzwingen Sie, dass Docker einen anderen Adressraum für erstellte Netzwerke verwendet, indem Sie eine andere Konfiguration auf der VM vornehmen

Sudo -i
echo '
{
  "default-address-pools": [
    {"base":"172.80.0.0/16","size":24}
  ]
}' > /etc/docker/daemon.json

Dann starte dockerd /etc/init.d/docker restart

6) Starten Sie Ihre virtuelle Maschine nicht neu, sondern halten Sie sie bei Bedarf an.

0