通过terminal获取用于mac代理variables的Docker
我在代理后面使用Docker for Mac。 我在Docker GUI中的“代理” – >“手动代理configuration”下设置了代理configuration。 这使我可以从代理服务器后面的存储库下载Docker镜像。
接下来,我设置了http_proxy
和https_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:)