我在公司代理后面的Debian Jessie上运行docker。为了能够下载docker镜像,我需要添加以下内容/etc/defaults/docker
http_proxy="http://localhost:3128/"
我可以确认这有效。
但是,为了能够从容器中访问interwebz,我需要以开始所有会话,--net host
然后设置以下env变量:
export http_proxy=http://localhost:3128/
export https_proxy=https://localhost:3128/
export ftp_proxy=${http_proxy}
理想情况下,我希望容器不需要主机网络,并且不了解代理(即,对容器中端口20、80、443的所有出站调用都通过主机的代理端口进行)。那可能吗?
如果失败,是否可以进行站点设置,以确保这些env变量在本地设置,但从不作为映像的一部分导出?
更新:我知道我可以通过--env http_proxy=...
etc传递这些东西,但这很笨拙。我希望它适用于系统上的所有用户,而不必使用别名。
主机服务器运行一个容器,该容器运行可以进行透明代理的代理(在本例中为鱿鱼)。该容器具有一些NAT流量进入代理服务器的iptables规则-这意味着该容器需要在特权模式下运行。
主机服务器还包含(这就是魔术)ip路由表条目,这些条目通过代理容器重新路由来自除目的地为端口80的代理之外的任何容器的所有流量。
最后一点本质上意味着对于端口80流量,从容器到世界其他地方的路由通过代理容器-为它提供了到NAT和透明代理的机会。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句