2017-07-27 21 views
8

我在代理後面使用Docker for mac。我在Docker GUI中的「代理」 - >「手動代理配置」下設置了代理配置。這使我可以從代理後面的存儲庫下載Docker鏡像。通過終端獲取Docker for mac代理變量

接下來,我設置了http_proxyhttps_proxy環境變量和我用他們在我的搬運工,compose.yml將它們傳遞到構建:

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

我怎樣才能像我通過設置變量在終端的Docker GUI,所以我不必將它們設置兩次?是否有我可以使用的特定於Docker的環境變量?

回答

1

如果我理解正確想你想,那麼你只需要讀什麼用docker info給出:

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

如果這兩個在GUI設置,它們將出現接近的輸出端。如果他們沒有設置,他們將不會,而在我的情況下,將會出現No Proxy: *.local, 169.254/16

+0

哦!這似乎正是我需要的! – elclanrs

0

我的最佳知識:這是不可能的。

我得到的唯一想法是使用某種iptable規則(我猜在mac中有類似的東西),將外部ip包重定向到代理。這意味着你的碼頭是乾淨的,如果你是在代理之後,你只需激活/停用規則。

這並不容易,但它是可行的。

4

安裝proxycapredsocks並從所有工具的煩人代理錯誤中解脫出來,而不僅僅是Docker。 Proxycap/Redsocks將流量透明地重定向到您擁有的指定代理,因此您不再配置任何代理設置。

更新: 有一個碼頭圖像紅襪子,如果你不能在主機上安裝它。 https://hub.docker.com/r/ncarlier/redsocks/

+0

我會如果我能,但這是一個程序運行在企業環境中,通過VPN,並且有限的權限來安裝應用程序。我所有可用的是Docker和Bash。 – elclanrs

+0

我接受這個答案,因爲這看起來會幫助處於類似情況的其他人。我想我的情況我運氣不好。我不能在這個環境中安裝任何外部應用程序。我可能通過軟件批准流程獲得redsocks或proxycap。 – elclanrs

+0

我想我已經改變了主意@Metaphox的答案,但我認爲這種情況對於大多數人來說仍然有效,只要他們可以安裝這些工具來配置代理變量。 – elclanrs

0

要麼導出它們,要麼可以在腳本中使用右側。

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