我有一个流浪盒正在运行(配置了LAMP堆栈)。我需要将它转移到另一台PC。我该如何出口? 我想我可以得到一个可以复制到另一台PC的文件(或文件),所以我可以运行一些命令来导入流浪盒。
答案 0 :(得分:110)
你有两种方法可以做到这一点,我会称之为脏的方式和干净的方式:
<强> 1。 脏方式
使用vagrant package
命令从当前虚拟环境创建一个框:
http://docs.vagrantup.com/v2/cli/package.html
然后将该框复制到另一台电脑,使用vagrant box add
添加,并照常使用vagrant up
运行。
请记住,当虚拟机启动时,工作目录中的文件(具有Vagrantfile
的文件)将被共享,因此您还需要将其复制到另一台PC。
<强> 2。 clean 方式
理论上,永远不需要使用Vagrant进行导出/导入。如果您有远见使用配置来配置虚拟环境(chef,puppet,ansible),以及像工作目录的git这样的版本控制系统,那么复制环境就像运行一样简单:
git clone <your_repo>
vagrant up
答案 1 :(得分:26)
我的Mac中的硬盘驱动器在项目中间发出哔哔声,所以我决定安装一个SSD。我需要将我的项目从一个磁盘移动到另一个磁盘。需要考虑的一些事项:
这对我有用:
1.) Copy your ~/.vagrant.d directory to your new machine.
2.) Copy your ~/VirtualBox\ VMs directory to your new machine.
3.) In VirtualBox add the machines one by one using **Machine** >> **Add**
4.) Run `vagrant box list` to see if vagrant acknowledges your machines.
5.) `git clone my_project`
6.) `vagrant up`
我在VB Guest添加中遇到了一些问题。
我修复了它们with this solution。
答案 2 :(得分:14)
这实际上很简单
包裹你的流浪汉机器
vagrant package --base [machine name as it shows in virtual box] --output /Users/myuser/Documents/Workspace/my.box
将此框复制到您的遥控器
运行
启动远程计算机上的框 vagrant init [machine name as it shows in virtual box] /Users/myuser/Documents/Workspace/my.box
运行vagrant up
答案 3 :(得分:6)
最简单的方法是打包Vagrant框,然后将其复制(例如scp
或rsync
)到另一台PC,添加它并vagrant up
; - )
有关详细步骤,请查看=>
Is there any way to clone a vagrant box that is already installed
答案 4 :(得分:1)
如
所述How can I change where Vagrant looks for its virtual hard drive?
虚拟机状态存储在预定义的VirtualBox文件夹中。将vagrant-project之外的相应计算机(文件夹)复制到其他主机应保留虚拟机状态。
答案 5 :(得分:1)
上述答案都不适合我。我已经有2天时间将Vagrant + VirtualBox机器从计算机迁移到另一台......这是可能的!
首先,您需要了解虚拟机与同步/共享文件夹是分开的。因此,当您打包机器时,您将打包它而不使用您的文件,而是使用数据库。
您需要做什么:
1-打开计算机1主机的CMD (命令行。使用右键打开管理员 - &gt;“以管理员身份运行”)并转到流浪汉安装的文件。在我的情况下:C:/ VVV 您将看到您的Vagrantfile以及这些文件夹:
/config/
/database/
/log/
/provision/
/www/
Vagrantfile
...
/ www /文件夹是我的开发域名的同步文件夹。你可能在其他地方有你的同步文件夹,只要一定要了解你在做什么。 / config和/ database也是同步文件夹。
2-运行此命令: vagrant package --vagrantfile Vagrantfile
(此命令使用Vagrantfile配置执行虚拟机的程序包。)
以下是关于该命令的Vagrant文档的内容:
一个常见的误解是--vagrantfile选项将打包a 当vagrant init与此框一起使用时使用的Vagrantfile。这个 事实并非如此。相反,Vagrantfile作为一部分加载和读取 使用该框时的Vagrant加载过程。欲获得更多信息, 阅读有关Vagrantfile加载顺序的信息。
https://www.vagrantup.com/docs/cli/package.html
完成后,您将拥有package.box文件。
3-复制所有这些文件(/ config,/ database,Vagrantfile,package.box等)并将它们粘贴到您要安装虚拟机的计算机2上(打开)我的情况D:/ VVV)。
现在您拥有计算机2主机所需的一切副本。
4-运行此: vagrant box add package.box --name VVV
( - name用于命名虚拟机。在我的情况下,它名为VVV) (如果您已经拥有一个具有此名称的虚拟机并且想要覆盖它,则可以使用--force。(小心使用!)
这会解压你的新流浪汉虚拟机。
5-完成后,运行:
vagrant up
计算机将安装,您应该在“Oracle虚拟机盒管理器”上看到它。如果您看不到虚拟机,请尝试以管理员身份运行Oracle VM框(右键单击 - &gt;以管理员身份运行)
现在你可能已经把一切都搞定了,但要记住你的主机是否符合预期:
c:/windows/system32/hosts
6-将主机文件从计算机1复制到计算机上可能是个好主意2.或者复制所需的行。 就我而言,这些是我需要的主机:
192.168.50.4 test.dev
192.168.50.4 vvv.dev
...
192.168.50.4是我的虚拟机的IP,test.dev和vvv.dev正在开发主机。
我希望这可以帮助你:)如果你反馈你的话,我会很高兴。
您可能会发现我的案例的一些特殊情况:
当我运行vagrant时,mysql出现了问题,它无法运行。我必须在虚拟服务器上运行(右键单击oracle虚拟机 - &gt;显示控制台):apt-get install mysql-server
在此之后,我再次跑了,并且一切正常,但没有关于数据库的数据。所以我从计算机1做了一个mysqldump all-tables并将它们上传到Computer 2。
其他说明: 我的虚拟机并不完全在计算机1和计算机2上。例如,我前段时间内部配置使用NFS(以加速服务器同步文件夹),我需要在计算机2主机上再次运行此命令:{ {1}}
答案 6 :(得分:0)
从2019年开始,有一个子命令:vagrant box repackage
vagrant box repackage --help
Usage: vagrant box repackage <name> <provider> <version>
-h, --help Print this help
通过运行name
可以找到provider
version
和vagrant box list
vagrant box list
macinbox (virtualbox, 10.14.5)
vagrant box repackage
的输出是一个名为package.box
的文件,它基本上是一个tgz文件,其内容可以列出如下:
tar tzf package.box
./metadata.json
./box.ovf
./Vagrantfile
./box-disk001.vmdk