Wai*_*owe 7 windows virtualbox vagrant laravel
我的环境:
情况:我注意到在"vagrant suspend"和计算机重启(第二天的工作)之后,当我运行"vagrant up"时,.vagrant目录中的所有文件在"up"过程中被删除并且新的VBox实例被建造.这意味着我丢失了以前的所有配置,例如DB,npm installs和mounts.是的,丢失的配置大部分都是通过保存的脚本提供的,但每次都是真的很痛苦!
我目前的修复:目前每次发生这种情况我都需要运行"VBoxManage list vms"来检索正确的ID.然后我"流浪汉暂停"新的不需要的实例,将其从Oracle VM VirtualBox Manage中删除,将旧ID粘贴到".vagrant"中的"id"文件中,然后再次运行"vagrant up".这次它有效!
我在每次运行"vagrant up"之前检查了id文件,并且正确的id在那里.我也试过"流浪汉的简历",但这没有任何区别.
Vagrantfile和配置文件几乎是Homestead包附带的标准文件.我所做的唯一更改是在Vagrantfile中允许符号链接(这是一个完全独立的问题,NODE,npm和windows限制为260个char目录路径).这是我为此dir长度问题添加的额外位.
config.vm.provider "virtualbox" do |vb|
# SEE https://github.com/fideloper/Vaprobash/issues/183
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
end
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?为什么Vagrant每次都会创建一个新的VM实例?
更新:
我发现这个问题与运行CLI(我通常使用cygwin)和具有管理员权限的Oracles VBox管理器有关.我还发现我的一些VM保存在C:\ cygwin64\home下......我可以在运行cygwin终端时使用它们作为管理员.如果我以管理员身份运行它,我可以在Oracle VirtualBox Manager中看到它们.其他VM存储在C:\ Users ....中我可以看到那些运行oracle VBox管理器作为我的普通用户(具有管理员权限).
我仍然有点困惑这一切都发生了.
我找到了问题的答案,希望对其他人有帮助。
问题是一些虚拟机位于我的 C:/cygwin64/home 目录中,它们属于管理员,如果我“以管理员身份”打开它,它们也只能在 Oracle VirtualBox Manager 上看到。其他虚拟机位于 C:/Users/[用户名]/VirtualBox 虚拟机中,它们由我的用户帐户拥有,只有在我正常打开应用程序时才能看到。
我正常打开 Cygwin,因此无法正确恢复虚拟机(仍然有点困惑为什么每次重置 ID 似乎都有效)。
我的解决方案:在thomthom的回答的帮助下
在 Oracle VirtualBox Mangager 中,我将默认计算机文件夹(文件 -> 首选项 -> 常规)更改为 C:/Users/[用户名]/VirtualBox VMs。然后,我克隆了每个虚拟机,以便它们最终位于新目录中。然后,我完全删除了 cygwin 文件夹中的旧虚拟机(右键单击 -> 删除)。然后我关闭了 Cygwin 和 VirtualBox Manager,并以普通用户身份重新打开(VirtualBox Manager 没有显示任何内容!)
最后,我进入新目录并双击每个虚拟机,以便将其添加回 VirtualBox 管理器中,然后,从命令行运行 VBoxManage list vms 以获取克隆的新 ID,将该 ID 复制到 id 文件中我的项目(类似于 PROJECT\.vagrant\machines\default\virtualbox\id
现在我可以以普通用户身份使用 cygwin 运行 vagrants“vagrant up”命令,一切都很好。
教训:要非常了解您运行初始虚拟机创建的用户身份,还要非常了解 VirtualBox 管理器存储虚拟机的位置。
归档时间: |
|
查看次数: |
2592 次 |
最近记录: |