升级Vagrant后执行vagrant up命令报错怎么办?
Vagrant启动报错UID不匹配解决方案
首先将报错内容翻译如下:
VirtualBox虚拟机的创建用户与当前运行Vagrant的用户不匹配。VirtualBox要求管理虚拟机的用户必须和创建用户一致,请使用对应用户重新运行Vagrant。这不是Vagrant本身的问题。
创建虚拟机所用的UID为:0
当前用户的UID为:1001
报错本质是你之前用root用户(UID=0)创建过同目录下的虚拟机,现在切换到了UID为1001的普通用户执行启动命令,VirtualBox的用户校验规则不允许跨用户操作同一虚拟机,可根据自身需求选择以下方案解决:
方案1:不需要保留原有虚拟机数据(最快修复)
- 切换到root用户,进入对应Vagrantfile所在目录,执行以下命令停止并销毁原有虚拟机:
su root vagrant halt vagrant destroy -f
- 退回普通用户,重新执行启动命令即可:
vagrant up
方案2:需要保留原有虚拟机内的数据
- 切换到root用户,在Vagrantfile目录执行导出命令,将现有虚拟机打包为镜像文件:
vagrant package - 执行完成后会生成
package.box文件,将该文件的所有权修改为当前普通用户:chown 1001:1001 package.box - 退回普通用户,将打包的镜像添加到本地box仓库(把命令里的<原有box名>替换为你之前用的box名称,比如centos/7):
vagrant box add --name <原有box名> package.box - 重新执行
vagrant up即可恢复原有虚拟机的所有数据和配置
方案3:临时用root身份启动(不推荐长期使用)
直接在启动命令前加sudo,用root身份执行操作:sudo vagrant up
注意:该方案会导致工作目录下新生成的文件归属root用户,后续普通用户操作仍会触发权限问题,仅适合临时验证场景使用。
额外校验操作
修复完成后可以执行以下命令修改整个工作目录的所有权,避免后续残留权限问题:sudo chown -R 1001:1001 <你的Vagrant工作目录路径>
内容的提问来源于stack exchange,提问作者shado
相关产品推荐
相关产品推荐

