Wie kann ich alle meine Docker-Container meinen Proxy verwenden lassen?

Ich verwende Docker auf Debian Jessie, das sich hinter einem Unternehmensproxy befindet. Um Docker-Images herunterladen zu können, muss ich meinem /etc/defaults/docker

http_proxy="http://localhost:3128/"

Ich kann bestätigen, dass dies funktioniert.

Um jedoch von meinem Container aus auf die interwebz zugreifen zu können, muss ich alle Sitzungen mit --net host starten und dann diese env-Variablen einrichten:

export http_proxy=http://localhost:3128/
export https_proxy=https://localhost:3128/
export ftp_proxy=${http_proxy}

Im Idealfall möchte ich, dass der Container das Hostnetzwerk nicht benötigt und nicht weiß über den Proxy (dh alle ausgehenden Anrufe an Port 20, 80, 443 im Container gehen über den Proxy-Port des Hosts). Ist das möglich?

Andernfalls ist es möglich, eine Site einzurichten, die sicherstellt, dass diese env-Variablen lokal festgelegt, aber niemals als Teil eines Images exportiert werden?

UPDATE: Ich weiß, dass ich diese Dinge mit --env http_proxy=... usw. übergeben kann, aber das ist klobig. Ich möchte, dass es für alle Benutzer auf dem System funktioniert, ohne Aliase verwenden zu müssen.

Author: fommil, 2015-03-16

1 answers

Siehe diese SO-Antwort:

Auf dem Hostserver wird ein Container ausgeführt, auf dem ein Proxy (in diesem Fall Squid) ausgeführt wird, der transparente Proxyings durchführen kann. Dieser Container hat einige iptables Regeln, die NAT-Datenverkehr in den Proxy-Server-das bedeutet, dass Container im privilegierten Modus ausgeführt werden muss.

Der Hostserver enthält auch (und hier ist die magische) IP-Routentabelleneinträge, die den gesamten Datenverkehr von jedem Container außer dem Proxy, der für Port 80 bestimmt war, über den Proxy umleiten Container.

Das letzte Bit bedeutet im Wesentlichen, dass für den Port 80-Verkehr die Route vom Container zum Rest der Welt durch den Proxy - Container führt-was ihm die Möglichkeit gibt, einen NAT-und transparenten Proxy zu verwenden.

Https://github.com/silarsis/docker-proxy

 5
Author: laktak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-12 13:48:39