通过终端获取MAC代理变量的Docker

时间:2017-07-27 03:05:29

标签: docker docker-compose

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

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

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

如何在终端中获取通过Docker GUI设置的变量,这样我就不需要设置两次了?我可以使用任何特定于Docker的环境变量吗?

4 个答案:

答案 0 :(得分:3)

安装proxycapredsocks,免除所有工具的恼人代理错误,而不仅仅是Docker。 Proxycap / Redsocks透明地将流量重定向到您拥有的指定代理,因此您不再需要配置任何代理设置。

<强>更新: 如果无法将其安装在主机上,则会有一个redsocks的docker镜像。 https://hub.docker.com/r/ncarlier/redsocks/

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

据我所知:这是不可能的。

我得到的唯一想法是使用一些iptable规则(我猜在mac中有类似的东西)将外部ip数据包重定向到代理。这意味着您的泊坞窗是干净的,如果您在代理之后,只需激活/停用规则。

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

答案 3 :(得分:0)

导出它们,或者您可以在脚本中使用右侧。

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