我有一个无所事事的盒子并正在运行(已配置LAMP堆栈)。我需要将其传输到另一台PC。如何导出?我猜我可以获得一个或多个可以复制到另一台PC的文件,因此可以在其中运行一些命令来导入无业游民的盒子。
我有一个无所事事的盒子并正在运行(已配置LAMP堆栈)。我需要将其传输到另一台PC。如何导出?我猜我可以获得一个或多个可以复制到另一台PC的文件,因此可以在其中运行一些命令来导入无业游民的盒子。
Answers:
您有两种方法可以做到这一点,我将其称为“ 肮脏的”和“ 干净的”:
1. 肮脏的方式
使用以下vagrant package
命令在当前虚拟环境中创建一个框:
http://docs.vagrantup.com/v2/cli/package.html
然后将盒子复制到另一台PC上,使用进行添加,vagrant box add
然后vagrant up
像往常一样运行它。
请记住,Vagrantfile
虚拟机启动时,工作目录中的文件(带有的文件)是共享的,因此您也需要将其复制到另一台PC。
2. 清洁方式
从理论上讲,永远不需要使用Vagrant进行导出/导入。如果您具有预见性,可以使用配置来配置虚拟环境(chef,puppet,ansible),并为您的工作目录使用git之类的版本控制系统,那么在这一点上复制环境就像运行以下命令一样简单:
git clone <your_repo>
vagrant up
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时遇到了一些问题。
我用此解决方案修复了它们。
vagrant box list
:0bin.net/paste/iCiaqNhU-i3bbfY2#-KDiXYcRFni1RNgNJhOBrIs/...
这实际上很简单
VBoxManage list vms
。之后,您可以复制并执行@Phil第二步和第四步中的操作。:)是的。
scotch/box (virtualbox, 3.0)
)。我的命令-具有标识符的虚拟机,例如:"Win10 - SandBox" {bc251c06-501f-4c0f-bgfa-21f2815ba2cd}
最简单的方法是打包Vagrant框,然后将其复制(例如scp
或rsync
)到另一台PC上,添加它和vagrant up
;-)
有关详细步骤,请检查=>
是否有任何方法可以克隆已经安装的无用信息框
上面的答案对我都不起作用。我花了两天的时间来研究将Vagrant + VirtualBox Machine从一台计算机迁移到另一台计算机的方法……这是可能的!
首先,您需要了解虚拟机与同步/共享文件夹是分开的。因此,打包机器时,打包时将不带文件,而是带数据库。
你需要做什么:
1-打开计算机1主机的CMD(命令行。使用右键->“以管理员身份运行”以管理员身份打开它),然后转到无所事事的安装文件。就我而言:C:/ VVV您将看到您的Vagrantfile以及以下文件夹:
/config/
/database/
/log/
/provision/
/www/
Vagrantfile
...
/ www /文件夹是我的开发域与同步文件夹的存放位置。您可能将同步文件夹放在其他位置,只需确保了解自己在做什么即可。/ config和/ database也是同步文件夹。
2-运行以下命令: vagrant package --vagrantfile Vagrantfile
(此命令使用您的Vagrantfile配置对您的虚拟机进行打包。)
您可以在Vagrant文档中阅读有关该命令的内容:
一个常见的误解是--vagrantfile选项将打包一个Vagrantfile,当此框使用vagrant init时使用。不是这种情况。取而代之的是,在使用该框时,会加载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框(右键单击->以管理员身份运行)
现在您可能一切正常,但请记住查看主机是否符合您的预期:
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正在开发主机。
希望对您有所帮助:)如果您反馈意见,我们将很高兴。
您可能会发现我的案例的一些特殊之处:
当我无所事事时,mysql出现了问题,它无法正常工作。我必须在虚拟服务器上运行(右键单击oracle虚拟机->显示控制台):apt-get install mysql-server
此后,我再次无所事事,一切正常,但数据库中没有数据。因此,我从计算机1进行了mysqldump所有表并将其上载到计算机2。
其他说明:
我的虚拟机不完全位于计算机1和计算机2上。例如,我前段时间进行了内部配置,以使用NFS(以加速服务器同步文件夹),并且需要在计算机2上再次运行此命令主办:vagrant plugin install vagrant-winnfsd
如中所述
虚拟机状态存储在预定义的VirtualBox文件夹中。除了将vagrant-project之外的相应计算机(文件夹)复制到其他主机,应保留您的虚拟机状态。
截至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