通过terminal获取用于mac代理variables的Docker

我在代理后面使用Docker for Mac。 我在Docker GUI中的“代理” – >“手动代理configuration”下设置了代理configuration。 这使我可以从代理服务器后面的存储库下载Docker镜像。

接下来,我设置了http_proxyhttps_proxy环境variables,并在docker-compose.yml中使用它们将它们传递给构build:

 services: app: build: context: . args: http_proxy: $http_proxy https_proxy: $https_proxy 

我怎样才能得到我通过在terminal的Docker GUI设置的variables,所以我不必将它们设置两次? 有没有我可以使用的特定于Docker的环境variables?

如果我正确理解了你想要的,那么你只需要阅读docker info给出的内容:

 ❯ docker info | grep Proxy Http Proxy: http://localhost:3128 Https Proxy: http://localhost:3128 

如果这两个在GUI中设置,它们将出现在输出结尾附近。 如果他们没有设置,他们将不会,而在我的情况下, No Proxy: *.local, 169.254/16将会出现。

安装proxycap或redsocks,并从您烦恼的代理错误中解脱出所有的工具,而不仅仅是Docker。 Proxycap / Redsocks将stream量透明地redirect到指定的代理服务器,因此您不再configuration任何代理服务器设置。

更新 :如果你不能在主机上安装,有一个红袜子的docker镜像。 https://hub.docker.com/r/ncarlier/redsocks/

我的知识最好:这是不可能的。

我得到的唯一想法是使用sorting的iptable规则(我猜在mac中有类似的东西),redirect外部ip包到代理。 这意味着你的docker是干净的,你只需要激活/停用规则,如果你在代理后面或没有。

这并不容易,但它是可行的。

要么导出它们,要么可以在脚本中使用右手边。

 export http_proxy=$(docker info | grep 'Http Proxy' | cut -f2 -d:) export https_proxy=$(docker info | grep 'Https Proxy' | cut -f2 -d:)