如何无需执行vagrant add box导入Vagrant?跨设备访问虚拟机数据
1. 不执行
vagrant add box命令导入Vagrant的方法 - 直接通过Vagrantfile指定本地box路径:
在你的Vagrantfile里配置本地box文件的绝对路径,启动时Vagrant会自动加载该文件,无需提前执行vagrant add box,示例代码如下:Vagrant.configure("2") do |config| config.vm.box = "ubuntu/focal" config.vm.box_url = "/home/user/boxes/ubuntu-focal.box" end - 手动放置box到Vagrant默认存储目录:
- 找到Vagrant的box存储路径:
- Windows:
C:\Users\<你的用户名>\.vagrant.d\boxes - macOS/Linux:
~/.vagrant.d/boxes
- Windows:
- 按规则创建子目录结构:比如针对
ubuntu/focal,需创建ubuntu-VAGRANTSLASH-focal文件夹,再在其中新建版本号子目录(如1.0.0),最后是provider目录(如virtualbox) - 将
.box文件放入provider目录,同时创建metadata_url文件,内容填写任意有效URL(如https://vagrantcloud.com/ubuntu/focal)
完成后Vagrant会自动识别该本地box,无需执行添加命令。
- 找到Vagrant的box存储路径:
2. 跨电脑访问VirtualBox Vagrant虚拟机的存储信息
针对基于VirtualBox的ubuntu/focal虚拟机,可通过以下方式获取存储内容:
- 导出虚拟磁盘文件挂载访问
- 在原电脑关闭虚拟机:
vagrant halt - 找到虚拟机的
.vdi格式磁盘文件,路径通常在Vagrant项目目录下的.vagrant/machines/default/virtualbox/,或VirtualBox默认存储目录 - 将
.vdi文件复制到目标电脑,在目标电脑的VirtualBox中:- 新建虚拟机时选择“使用已有的虚拟硬盘文件”挂载该
.vdi - 或在现有虚拟机中添加硬盘,选择该
.vdi文件,即可访问其中存储内容
- 新建虚拟机时选择“使用已有的虚拟硬盘文件”挂载该
- 在原电脑关闭虚拟机:
- 通过共享文件夹同步后传输
- 在原电脑的Vagrantfile中添加共享文件夹配置,将虚拟机内目标目录同步到本地:
Vagrant.configure("2") do |config| config.vm.synced_folder "/var/app/data", "/local/app/data" end - 执行
vagrant reload生效,本地目录会同步虚拟机内内容 - 将本地同步目录的文件复制到目标电脑即可
- 在原电脑的Vagrantfile中添加共享文件夹配置,将虚拟机内目标目录同步到本地:
- 通过局域网直接访问虚拟机
- 在原电脑的Vagrantfile中配置桥接网络,让虚拟机接入局域网:
Vagrant.configure("2") do |config| config.vm.network "public_network" end - 启动虚拟机后,在虚拟机内执行
ip addr show获取局域网IP - 在目标电脑上:
- 若已复制Vagrant项目目录,直接执行
vagrant ssh连接 - 或用SSH直接连接:
ssh vagrant@<虚拟机IP>(默认用户名/密码均为vagrant) - 连接后可直接查看存储内容,或用SCP传输文件:
scp vagrant@<虚拟机IP>:/path/to/file /local/target/path
- 若已复制Vagrant项目目录,直接执行
- 在原电脑的Vagrantfile中配置桥接网络,让虚拟机接入局域网:
内容的提问来源于stack exchange,提问作者DIRKK
相关产品推荐
相关产品推荐

