使用Docker在Vagrant中打破了专用网络

时间:2013-11-22 21:33:15

标签: linux networking vagrant archlinux docker

我使用默认的Docker Vagrantfile通过Vagrant创建Virtualbox vm。使用vagrant up构建vm可以按预期工作,并提供一个可以使用的运行框。

然后我需要能够转发端口并将以下内容添加到Vagrantfile

Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config|
  config.vm.network :forwarded_port, :host => 5432, :guest => 5432 # postgres
  # ... more port forwardings
end

这有效,但我意识到我需要双向端口转发。我尝试为此事创建一个专用网络,而不是转发每个端口。以下对配置的补充应该可以解决这个问题:

Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config|
  config.vm.network :private_network, ip: "172.17.0.2"
end

但是,这会在创建vm时触发错误:

> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Running 'pre-boot' VM customizations...
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
The guest machine entered an invalid state while waiting for it
to boot. Valid states are 'starting, running'. The machine is in the
'poweroff' state. Please verify everything is configured
properly and try again.

If the provider you're using has a GUI that comes with it,
it is often helpful to open that and watch the machine, since the
GUI often has more helpful error messages than Vagrant can retrieve.
For example, if you're using VirtualBox, run `vagrant up` while the
VirtualBox GUI is open.

知道如何调试和解决此问题吗?

主机操作系统:Arch Linux

VM OS:Ubuntu(参见上面链接的Vagrantfile)

1 个答案:

答案 0 :(得分:4)

来自Arch Linux Wiki

  

要确保桥接网络的完整功能,请确保   vboxnetadpvboxnetfltvboxpci内核模块也被加载   已安装net-tools包。

内核模块

问题是用于在虚拟机中创建专用网络的内核模块需要单独加载:

sudo modprobe -a vboxnetadp vboxnetflt

要在每次重新启动后永久更改此更改,请在/etc/modules-load.d/virtualbox.conf中添加以下行:

vboxdrv
vboxnetadp
vboxnetflt

需要安装

net-tools

sudo pacman -S net-tools

您还需要virtualbox-host-modules软件包才能将私有网络变为现实:

sudo pacman -S virtualbox-host-modules