2017-04-24 92 views
1

我想在docker容器內運行apt(在virtualbox上運行),但由於我在代理之後,因此無法運行。在代理服務器後面的流浪者中使用docker

我用的無業遊民,proxyconf,讓無業遊民機器本身連接到互聯網,它工作得很好:

if Vagrant.has_plugin?("vagrant-proxyconf") 
    config.proxy.http  = ... 
    config.proxy.https = ... 
    config.proxy.no_proxy = "localhost,127.0.0.1,.example.com" 
end 

但是,這些設置都沒有得到貫徹,以Docker容器開始顛沛流離的機器內。當我開始一個基於Debian的搬運工容器

docker run -it debian /bin/bash 

,並在bash中我跑

apt-get update 

那麼容易無法建立連接。我可以通過添加以下到我的Dockerfile

ENV http_proxy <myproxy> 

但調整所有Dockerfile的會很麻煩解決這個問題,我不想硬編碼我的代理到Dockerfile的本身,因爲這些也以不同的使用建立。

我也試着告訴泊塢窗使用使用什麼代理:https://docs.docker.com/engine/admin/systemd/

然而,這似乎不會對代理的任何效果泊塢窗容器內易於使用。

有沒有辦法將http_proxy環境變量傳遞給默認情況下在我的機器內啓動的所有docker容器?另外,是否可以將vagrant/virtualbox配置爲「模擬」「無代理」互聯網連接,以便我不必通過所有虛擬化層訪問代理設置?

回答

1

您可以添加將它們作爲參數添加到docker build命令中的變量。這樣它就可以工作,代理ip不會在Dockerfile上。通過這種方式:

docker build -t --build-arg http_proxy="http://yourIp" yourImage 

然後在Dockerfile您必須設置VAR作爲參數:

ARG http_proxy 

自動VAR能夠以這種方式被使用:

RUN echo ${http_proxy} 

但在你的情況你不需要使用它,只需要設置代理變量足以在構建過程中使用。

此技術也可能非常有用,以避免在Dockerfiles上寫入密碼。

希望它有幫助

相關問題