有没有办法克隆已安装的流浪盒

Mat*_*sgf 46 virtualbox vagrant

我必须在其他计算机上拥有相同的VM,但我不想下载整个盒子,php mysql等...

我已经按照它应该的方式配置了一个盒子,我想在其他计算机上运行这个VM.

当用户运行"vagrant up"时,机器应该启动而不下载任何内容.

有人有解决方案吗?

Ter*_*ang 88

最简单的方法是打包预先配置的流浪盒并将.box文件传输到另一台机器,添加盒子并运行vagrant up.

所以步骤如下所示:

  1. 打包预先配置的框=> vagrant package --base preconfigured_vm --output /path/to/mybox.box.请注意,根据文档,--base选项应该是机器的UUID,或者VirtualBox给机器的名称(在打开VirtualBox应用程序时找到).
  2. 通过使用盒子传输到计算机上scp,rsync或任何...(你也很快通过启动Web服务器python -m http.server PORTruby -run -e httpd /path/to -p PORT)
  3. 初始化并开始 vagrant init preconfigured_vm /path/to/mybox.box
  4. 完成

  • 要将preconfigured_vm的UUID传递给Vagrant 1.1+中的--base参数,我按照[tip](http://stackoverflow.com/questions/9434313/how-do-i-associate-a-vagrant- project-directory-with-an-existing-virtualbox -vm#comment23660947_9437813):"对于Vagrant 1.1,UUID存储在.vagrant/machines/{name}/{provider}/id的机器特定文件中.实际上. ,文件中唯一包含的是UUID." (6认同)
  • 如果您正在使用VirtualBox,您还可以从命令`VBoxManage list vms`中获取UUID /名称. (5认同)
  • 此外,要添加该框,您可以运行命令`vagrant box add --name ="boxname"mybox.box`,其中`name`是您的Vagrant文​​件的`config.vm.box`属性和`mybox的值. box`是特里答案中第1步创建的框. (2认同)

Rob*_*ert 5

您只需下载一次VM框,然后进行所需的所有更改和配置,然后将其重新打包在一个名为“ myVM.box”的新框上。

然后在Vagrantfile中注释以下行

#config.vm.box_url = "https://site_of_boxes..."
Run Code Online (Sandbox Code Playgroud)

并使用

config.vm.box = "myVM"
Run Code Online (Sandbox Code Playgroud)

它无需下载任何VM即可启动。