Come posso consentire a tutti i miei contenitori docker di utilizzare il mio proxy?


18

Sto eseguendo una finestra mobile su Debian Jessie che è dietro un proxy aziendale. Per poter scaricare immagini docker, devo aggiungere quanto segue al mio/etc/defaults/docker

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

Posso confermare che funziona.

Tuttavia, per poter accedere all'interwebz dal mio contenitore, devo avviare tutte le sessioni con --net hoste quindi impostare queste variabili env:

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

Idealmente, vorrei che il contenitore non avesse bisogno della rete host e non conoscesse il proxy (cioè tutte le chiamate in uscita verso la porta 20, 80, 443 nel contenitore passano attraverso la porta proxy dell'host). È possibile?

In caso contrario, è possibile avere un'impostazione del sito, che garantirà che queste variabili env siano impostate localmente ma mai esportate come parte di un'immagine?

AGGIORNAMENTO : So di poter passare queste cose con --env http_proxy=...etc, ma è goffo. Voglio che funzioni per tutti gli utenti del sistema senza usare alias.

Risposte:


5

Vedi questa risposta SO :

Il server host esegue un contenitore che esegue un proxy (calamari, in questo caso) che può eseguire il proxy trasparente. Quel contenitore ha alcune regole iptables che il traffico NAT nel server proxy - questo significa che il contenitore deve essere eseguito in modalità privilegiata.

Il server host contiene anche (ed ecco la magia) voci della tabella di instradamento ip che reindirizzano tutto il traffico da qualsiasi contenitore tranne il proxy destinato alla porta 80, attraverso il contenitore proxy.

Quest'ultimo bit essenzialmente significa che per il traffico della porta 80, il percorso dal container al resto del mondo passa attraverso il container proxy, dandogli la possibilità di NAT e proxy trasparente.

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


Questo non funzionerà per "https".
ceving
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.