我在代理服务器后面使用Docker for mac。我在“Proxies”下的Docker GUI中设置了代理配置 - > “手动代理配置”。这让我可以从代理后面的存储库下载Docker镜像。
接下来,我设置了http_proxy
和https_proxy
环境变量,并在docker-compose.yml中使用它们将它们传递给构建:
services:
app:
build:
context: .
args:
http_proxy: $http_proxy
https_proxy: $https_proxy
如何在终端中获取通过Docker GUI设置的变量,这样我就不需要设置两次了?我可以使用任何特定于Docker的环境变量吗?
答案 0 :(得分:3)
安装proxycap或redsocks,免除所有工具的恼人代理错误,而不仅仅是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:)