【问题标题】:Is there any way to clone a vagrant box that is already installed有没有办法克隆一个已经安装的流浪盒
【发布时间】:2013-10-06 07:18:50
【问题描述】:

我必须在其他电脑上拥有相同的虚拟机,但我不想下载整个盒子,php mysql 等...

我已经按照应有的方式配置了一个机器,我想在其他计算机上运行这个 VM。

当用户运行“vagrant up”时,机器应该在不下载任何内容的情况下启动。

有人有解决办法吗?

【问题讨论】:

标签: virtualbox vagrant


【解决方案1】:

最简单的做法是到package the pre-configured vagrant box 并将.box 文件传输到另一台机器,添加box 并运行vagrant up

所以步骤如下所示:

  1. 打包预配置的盒子 => vagrant package --base preconfigured_vm --output /path/to/mybox.box注意,根据文档,--base 选项应该是机器的 UUID,或者是 VirtualBox 为机器提供的名称(在打开 VirtualBox 应用程序时找到)。
  2. 使用scprsync 或其他任何方式将盒子传输到计算机...(您还可以使用python -m http.server PORTruby -run -e httpd /path/to -p PORT 快速启动Web 服务器)
  3. 初始化并启动vagrant init preconfigured_vm /path/to/mybox.box
  4. 完成

【讨论】:

  • 为了将 preconfigured_vm 的 UUID 传递给 Vagrant 1.1+ 中的 --base 参数,我遵循tip:“对于 Vagrant 1.1,UUID 存储在特定于机器的文件中.vagrant/machines/{name}/{provider}/id。事实上,该文件包含的唯一内容就是 UUID。”
  • 如果你使用的是VirtualBox,你也可以从命令VBoxManage list vms获取UUID/name。
  • 另外,要添加框,您可以运行命令 vagrant box add --name="boxname" mybox.box 其中 name 是来自 Vagrant 文件的 config.vm.box 属性的值,mybox.box 是从步骤 1 创建的框特里的回答。
  • 另外,将你的 Vagrantfile 也发送给其他用户,因为它存储了 vagrant 在启动新盒子时使用的重要细节。
  • 很好的说明,但会导致文件很大。尝试使用dd 擦除任何空白空间,如下所示:scotch.io/tutorials/… 我的区别是 3.1GB 和 2.2GB。
【解决方案2】:

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

然后你在 Vagrantfile 中注释以下行

#config.vm.box_url = "https://site_of_boxes..."

使用过

config.vm.box = "myVM"

无需下载任何虚拟机即可启动。

【讨论】:

    猜你喜欢
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多