在代理后面的vagrant中使用docker
我想在docker容器中运行apt,在virtualbox上运行的流浪机器中运行apt,但这失败了,因为我在代理后面 我使用vagrant proxyconf允许vagrant机器本身连接到internet,这很好:在代理后面的vagrant中使用docker,docker,proxy,vagrant,http-proxy,Docker,Proxy,Vagrant,Http Proxy,我想在docker容器中运行apt,在virtualbox上运行的流浪机器中运行apt,但这失败了,因为我在代理后面 我使用vagrant proxyconf允许vagrant机器本身连接到internet,这很好: if Vagrant.has_plugin?("vagrant-proxyconf") config.proxy.http = ... config.proxy.https = ... config.proxy.no_proxy = "localhost,
if Vagrant.has_plugin?("vagrant-proxyconf")
config.proxy.http = ...
config.proxy.https = ...
config.proxy.no_proxy = "localhost,127.0.0.1,.example.com"
end
但是,这些设置不会执行到vagrant机器中启动的docker容器。当我启动一个基于debian的docker容器时
docker run -it debian /bin/bash
我在狂欢中奔跑
apt-get update
那么apt无法建立连接。我可以通过在Dockerfile中添加以下内容来解决此问题
ENV http_proxy <myproxy>
但是调整所有Dockerfile会很麻烦,我不希望将我的代理硬编码到Dockerfile中,因为它们也用于不同的设置中
我还尝试告诉docker使用什么代理:
但是,这似乎对apt在docker容器中使用的代理没有任何影响
有没有办法将http_proxy环境变量传递给默认情况下在我的机器中启动的所有docker容器?或者,是否可以将vagrant/virtualbox配置为模拟proxyless internet连接,这样我就不必通过所有虚拟化层访问代理设置?您可以在docker build命令中添加将其作为参数传递的变量。这样它就可以工作了,代理ip就不在Dockerfile上了。这样:
docker build -t --build-arg http_proxy="http://yourIp" yourImage
RUN echo ${http_proxy}
然后在Dockerfile上,必须将var设置为参数:
ARG http_proxy
自动地,var可以这样使用:
docker build -t --build-arg http_proxy="http://yourIp" yourImage
RUN echo ${http_proxy}
但在您的情况下,您不需要使用它,仅设置代理变量就足以在构建过程中使用
为了避免在DockerFile上写入密码,这种技术也非常有用
希望能有帮助