¿Cómo puedo dejar que todos mis contenedores acoplables usen mi proxy?

18

Estoy ejecutando Docker en Debian Jessie, que está detrás de un proxy corporativo. Para poder descargar imágenes de docker, necesito agregar lo siguiente a mi/etc/defaults/docker

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

Puedo confirmar que esto funciona.

Sin embargo, para poder acceder a la interwebz desde mi contenedor, necesito comenzar todas las sesiones --net hosty luego configurar estas variables env:

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

Idealmente, me gustaría que el contenedor no necesitara la red de host y que no supiera sobre el proxy (es decir, todas las llamadas salientes al puerto 20, 80, 443 en el contenedor pasan por el puerto proxy del host). ¿Es eso posible?

De lo contrario, ¿es posible tener una configuración del sitio, lo que garantizará que estas variables env se establezcan localmente pero nunca se exporten como parte de una imagen?

ACTUALIZACIÓN : Sé que puedo pasar estas cosas con --env http_proxy=...etc., pero eso es torpe. Quiero que funcione para todos los usuarios del sistema sin tener que usar alias.

fommil
fuente

Respuestas:

5

Vea esta respuesta SO :

El servidor host ejecuta un contenedor que ejecuta un proxy (squid, en este caso) que puede hacer proxy transparente. Ese contenedor tiene algunas reglas de iptables que trafican NAT en el servidor proxy; esto significa que el contenedor debe ejecutarse en modo privilegiado.

El servidor host también contiene (y aquí está la magia) entradas de la tabla de ruta IP que redirigen todo el tráfico desde cualquier contenedor, excepto el proxy que estaba destinado al puerto 80, a través del contenedor proxy.

Ese último bit esencialmente significa que para el tráfico del puerto 80, la ruta desde el contenedor al resto del mundo pasa por el contenedor proxy, lo que le da la oportunidad de NAT y proxy transparente.

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

laktak
fuente
Esto no funcionará para "https".
ceving