为什么我无法从Vagrant VM中parsingdocker.io和其他主机

我运行与2docker容器里面的stream浪汉,它不工作的公司代理工作正常,但当我在公司代理,并尝试运行vagrant了,我不断得到:

https://index.docker.io/v1/repositories/dockerfile/ubuntu/images: dial tcp: lookup index.docker.io: no such host 

我有在stream浪者使用的代理集

 VAGRANT_HTTP_PROXY="http://proxy.example.com:8080/" vagrant up 

我也无法使用公司代理上的stream浪汉来解决使用nslookup主机

我已经尝试在vagrantfile中包含以下内容:

 config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] end 

我也尝试使用桥接连接,重新启动docker服务器的build议这里,并交换我的DNS我的Mac(我看到build议的地方,但找不到链接)

我真的很感谢一些帮助/方向,并在案件其relavent我正在运行macbook运行OSX 10.9的虚拟箱与vargrant 1.6.5,这是我的stream浪文件:

 $start = <<SCRIPT #service docker stop #HTTP_PROXY=http://proxy:8080/ docker -d & service docker restart #stop and remove any existing containers docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) echo "Building from Dockerfiles" # Build containers from Dockerfiles docker build -t sapvagrant/web_app /var/local/app/webApp docker build -t sapvagrant/node /var/local/app/nodeService echo "Running & linking containers" # Run and link the containers docker run -d --name node myvagrant/node docker run -d -P -p 49166:80 --name web --link node:db myvagrant/web_app docker start node docker start web SCRIPT VAGRANTFILE_API_VERSION = "2" Vagrant.configure("2") do |config| =begin if Vagrant.has_plugin?("vagrant-proxyconf") config.proxy.http = "http://proxy:8080/" config.proxy.https = "http://proxy:8080/" config.proxy.no_proxy = "localhost,127.0.0.1" end =end #config.vm.network :bridged config.vm.provider :virtualbox do |vb| #vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] #vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] end # Port Forwarding config.vm.network "forwarded_port", guest: 49166, host: 3000 # Ubuntu config.vm.box = "precise64" config.vm.box_url="http://files.vagrantup.com/precise64.box" # Install latest docker config.vm.provision "docker" config.vm.synced_folder ".", "/var/local/app" #, type: "nfs" config.vm.provision :shell, inline: "/etc/init.d/docker restart" #config.vm.provision "shell", inline: $setup config.vm.provision "shell", run: "always", inline: $start end 

没有必要在Internet上parsing名称,因为您的代理服务器parsing了名称。 但是,如果没有安装docker,vagrant-proxyconf不会configuration代理。 你有两种方法来解决这个问题。

在docker供应之前configuration代理

Vagrant泊坞窗configuration器不能更改configuration文件。 (例如, /etc/default/docker/etc/sysconfig/docker )您需要在configurationshell provisioner之前configuration代理,如下所示。

  # If you use RHEL write to /etc/sysconfig/docker config_proxy = 'echo export http_proxy=$http_proxy >> /etc/default/docker' config.vm.provision('shell', inline: config_proxy) config.vm.provision 'docker' 

我简化了你的Vagrantfile

 VAGRANTFILE_API_VERSION = '2' Vagrant.configure('2') do |config| if Vagrant.has_plugin?('vagrant-proxyconf') config.proxy.http = 'http://proxy:8080/' config.proxy.https = 'http://proxy:8080/' config.proxy.no_proxy = 'localhost,127.0.0.1' end config.vm.synced_folder '.', '/var/local/app' # Ubuntu config.vm.box = 'precise64' config.vm.box_url = 'http://files.vagrantup.com/precise64.box' # If you use RHEL write to /etc/sysconfig/docker config_proxy = 'echo export http_proxy=$http_proxy >> /etc/default/docker' config.vm.provision('shell', inline: config_proxy) config.vm.provision 'docker' do |d| d.build_image '/var/local/app/webApp', args: '-t sapvagrant/web_app' d.build_image '/var/local/app/nodeService', args: '-t sapvagrant/node' d.run 'sapvagrant/node', args: '--name node' d.run 'sapvagrant/web_app', args: '-P -p 49166:80 --name web --link node:db' end end 

使用docker安装的VM框

如果没有安装docker,Vagrant-proxyconf不会configuration代理。 Vagrant-proxyconfconfiguration代理,如果你使用docker安装的VM框。

  • 注意:
    • Vagrant-proxyconf 1.4.0总是重新启动docker,所以有时docker容器可能被破坏。
    • Vagrant-proxyconf 1.4.2(不在2014年12月22日发布)只有在代理configuration发生变化时才会重新启动docker。

您可以在ATLAS上finddocker安装的虚拟机箱。 我find了jess / ubuntu-precise-nginx-docker。

我简化了你的Vagrantfile

 VAGRANTFILE_API_VERSION = '2' Vagrant.configure('2') do |config| if Vagrant.has_plugin?('vagrant-proxyconf') config.proxy.http = 'http://proxy:8080/' config.proxy.https = 'http://proxy:8080/' config.proxy.no_proxy = 'localhost,127.0.0.1' end config.vm.synced_folder '.', '/var/local/app' # Ubuntu config.vm.box = 'jess/ubuntu-precise-nginx-docker' config.vm.provision 'docker' do |d| d.build_image '/var/local/app/webApp', args: '-t sapvagrant/web_app' d.build_image '/var/local/app/nodeService', args: '-t sapvagrant/node' d.run 'sapvagrant/node', args: '--name node' d.run 'sapvagrant/web_app', args: '-P -p 49166:80 --name web --link node:db' end end