2017-07-27 3 views
8

erhalten Ich benutze Docker für Mac hinter einem Proxy. Ich konfiguriere die Proxy-Konfiguration in der Docker GUI unter "Proxies" -> "Manuelle Proxy-Konfiguration". Dadurch kann ich Docker-Images aus dem Repository hinter dem Proxy herunterladen.Docker für Mac-Proxy-Variablen durch Terminal

Als nächstes stelle ich die http_proxy und https_proxy Umgebungsvariablen und ich benutze sie in meinen Docker-compose.yml sie an den Build weitergeben müssen:

services: 
    app: 
    build: 
     context: . 
     args: 
     http_proxy: $http_proxy 
     https_proxy: $https_proxy 

Wie kann ich die Variablen bekommen, die ich durch das Set Docker GUI im Terminal, damit ich sie nicht zweimal einstellen muss? Gibt es Docker-spezifische Umgebungsvariablen, die ich verwenden kann?

Antwort

1

Wenn ich das richtig verstanden wollen Sie wollen, dann lesen Sie brauchen, um genau das, was von docker info gegeben hat:

❯ docker info | grep Proxy 
Http Proxy: http://localhost:3128 
Https Proxy: http://localhost:3128 

diese beiden in der GUI gesetzt Wenn sie am Ende der Ausgabe erscheint. Wenn sie nicht gesetzt sind, werden sie nicht, und in meinem Fall No Proxy: *.local, 169.254/16 wird stattdessen angezeigt.

+0

Oh! Das scheint genau das zu sein, was ich brauche! – elclanrs

0

Mein bestes Wissen: es ist nicht möglich.

Die einzige Idee, die ich bekomme, ist die Verwendung von iptable Regeln (ich denke, es gibt ähnliche Sachen in Mac), die externe IP-Paket umleiten, um den Proxy. Es bedeutet, dass Ihr Docker sauber ist, Sie aktivieren/deaktivieren einfach Regeln, wenn Sie hinter einem Proxy stehen oder nicht.

Es ist nicht einfach, aber es ist machbar.

4

Installieren Sie proxycap oder redsocks und entlasten Sie sich von den lästigen Proxy-Fehler für alle Ihre Werkzeuge und nicht nur Docker. Proxycap/Redsocks leiten Datenverkehr transparent an den angegebenen Proxy um, sodass Sie keine Proxyeinstellungen mehr konfigurieren.

Update: Es gibt ein Docker-Image für Redsocks, falls Sie es nicht auf dem Host-Computer installieren können. https://hub.docker.com/r/ncarlier/redsocks/

+0

Ich würde, wenn ich könnte, aber dies ist ein Programm in einer Enterprise-Umgebung ausgeführt wird, über ein VPN, und mit eingeschränkten Rechten Anwendungen zu installieren. Alles, was ich zur Verfügung habe, ist Docker and Bash. – elclanrs

+0

Ich akzeptiere diese Antwort, da es aussieht, als würde es anderen Menschen in einer ähnlichen Situation helfen. Ich denke, in meinem Fall habe ich kein Glück. Ich kann leider keine externen Anwendungen in dieser Umgebung installieren. Ich könnte möglicherweise Redsocks oder Proxycap durch den Software-Genehmigungsprozess bekommen. – elclanrs

+0

Ich denke, ich habe meine Meinung geändert, da die Antwort @Metaphox, aber ich denke, dieser Fall ist immer noch gültig für die meisten Menschen, wenn sie solche Tools installieren können, um ihre Proxy-Vars zu konfigurieren. – elclanrs

0

Entweder exportieren Sie sie oder Sie können die rechte Seite in Ihrem Skript verwenden.

export http_proxy=$(docker info | grep 'Http Proxy' | cut -f2 -d:) 
export https_proxy=$(docker info | grep 'Https Proxy' | cut -f2 -d:) 
Verwandte Themen