我怎样才能使所有的docker集装箱使用我的代理?

我正在Debian Jessie上运行docker,这是一个公司代理的背后。 为了能够下载docker镜像,我需要将以下内容添加到我的/etc/defaults/docker

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

我可以证实这个工作。

但是,为了能够从我的容器中访问interwebz,我需要使用--net host启动所有会话,然后设置这些envvariables:

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

理想情况下,我希望容器不需要主机networking,也不需要知道代理(即通过主机的代理端口对容器中的端口20,80,443的所有出站呼叫)。 那可能吗?

否则,是否有可能进行网站设置,这将确保这些envvariables是在本地设置的,但从不导出为图像的一部分? 我知道我可以通过--env http_proxy=...等传递这些东西,但这是笨重的。 我希望它可以为系统上的所有用户工作,而不必使用别名。

(免责声明:我在https://superuser.com/posts/890196上询问了这个问题,但是目前docker问题的docker有点模糊)。

请参阅代理所有容器 :

主机服务器运行一个运行代理的容器(在这种情况下是鱿鱼),可以做透明的代理。 那个容器有一些iptables规则,NATstream量进入代理服务器 – 这意味着容器需要以特权模式运行。

主机服务器还包含(这里是神奇的)IP路由表条目,通过代理容器重新路由来自任何容器的所有stream量,但是指向端口80的代理。

最后一点本质上意味着对于端口80的stream量来说,从容器到世界其他地方的路由通过代理容器 – 给它NAT和透明代理的机会。

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