使用Vagrant时,如何在Windows和Linux之间共享相同的VM?

时间:2014-10-21 00:38:36

标签: vagrant

我有两个主机,一个Windows和一个Linux,都安装了Vagrant和VMware Workstation,一切都在他们自己的环境中完美运行。但是,当我在Linux中创建来宾VM并在Windows中进行vagrant up时,Vagrant将删除(!).vagrant目录中的所有内容并尝试获取基本映像。如果我在Windows中执行vagrant initvagrant up,然后在Linux中执行vagrant up,则会发生同样的情况。我该如何防止这种情况发生?无论如何使用Vagrant在Windows和Linux之间共享相同的VM?

我正在运行Windows 7,Ubuntu 14.04,Vagrant 1.6.5,VMware Workstation 10.0.3。所有客户机操作系统都会出现此问题。

2 个答案:

答案 0 :(得分:1)

.vagrant目录的内容可以是特定于操作系统的,也可以是VMware的内部状态。

我不认为在两台主机之间共享同一个VM实例的方法很简单。 Vagrant方式是provision VM,因此您只共享基本框,然后每个用户/操作系统都会旋转自己的实例。

另一种选择是使用vagrant packagevagrant box add来传输已配置的邮箱,但这并不适用于VMware提供商。

另一种方法是使用像AWSDigital Ocean这样的云提供商,然后将ssh放入框中。或者甚至可以使用vagrant-managed-servers插件。你的问题并没有暗示你使用Vagrant VM的是什么,所以很难说出什么是最好的解决方案。

答案 1 :(得分:0)

以下内容已在带有共享NTFS驱动器的双启动设置中使用VirtualBox Vagrant提供程序与Windows 10和Ubuntu 18.04进行了测试,其中Windows中的D:\在Linux中可作为/mnt/d/

首先(但我没记错,这不是必不可少的),请将Windows和Linux中的VAGRANT_HOME环境变量设置在同一位置,例如:

  • Windows,D:\.vagrant.d
  • Linux,/mnt/d/.vagrant.d

然后在以下示例中从一个操作系统(从Linux)创建新计算机:

$ cd /mnt/d/vagrant_machines/machine1
$ vagrant init
$ vagrant up

然后在Windows中启动并首先备份D:\vagrant_machines\machine1\.vagrant,以防万一其内容被意外删除。

然后从VirtualBox注册现有的VM,例如D:\virtualbox_machines\machine1_default_1587262647987_91775\machine1_default_1587262647987_91775.vbox

然后运行以下命令:

>vagrant.exe status
The VirtualBox VM was created with a user that doesn't match the
current user running Vagrant. VirtualBox requires that the same user
be used to manage the VM that was created. Please re-run Vagrant with
that user. This is not a Vagrant issue.

The UID used to create the VM was: 1000
Your UID is: 0

并将D:\vagrant_machines\machine1\.vagrant\machines\default\virtualbox\creator_uid更新为您当前的UID(在此示例中为0)。

然后启动机器:

>vagrant status
>vagrant up

最后,请注意,您每次切换操作系统都可能需要自动更新creator_uid