You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04下Vagrant与Docker无法挂载文件问题求助

解决Vagrant共享文件夹挂载失败及相关权限问题

从你描述的情况来看,不管是Vagrant还是Docker的挂载问题,核心都和权限匹配、内核模块/依赖缺失有关。先重点解决Vagrant的问题:

一、Vagrant挂载失败(vboxsf No such device)的根因

你的错误日志明确指出/sbin/mount.vboxsf: mounting failed with the error: No such device,这说明虚拟机内的vboxsf内核模块没有正常加载。结合你第二次运行脚本的警告信息,问题出在:

系统缺少匹配当前内核版本的头文件,导致Guest Additions无法编译对应的内核模块

分步解决办法:

  1. 在虚拟机内安装内核头文件和编译工具
    进入虚拟机(如果能通过vagrant ssh连接的话),执行以下命令:

    sudo apt update
    # 自动安装匹配当前内核的头文件、编译依赖
    sudo apt install -y linux-headers-$(uname -r) build-essential dkms
    

    如果无法直接连接虚拟机,可以在Vagrantfile里添加provision脚本,让虚拟机启动时自动安装:

    host.vm.provision "shell", inline: <<-SHELL
      apt update
      apt install -y linux-headers-$(uname -r) build-essential dkms
    SHELL
    
  2. 用Vagrant插件自动管理Guest Additions版本
    手动安装Guest Additions很容易出现Host和Guest版本不匹配的问题,推荐安装vagrant-vbguest插件来自动同步:

    # 在你的Ubuntu宿主机上执行
    vagrant plugin install vagrant-vbguest
    

    安装后,下次执行vagrant up时,插件会自动检测并安装与Host端VirtualBox版本匹配的Guest Additions,同时自动编译vboxsf模块。

  3. 验证模块加载情况
    虚拟机启动后,执行以下命令检查vboxsf是否加载:

    lsmod | grep vboxsf
    

    如果有输出说明模块正常;如果没有,手动加载:

    sudo modprobe vboxsf
    
  4. 优化Vagrant同步配置
    你的同步配置可以加上权限参数,确保挂载后的文件权限和你的用户一致:

    host.vm.synced_folder "salt/", "/srv/salt", 
      owner: "vagrant", 
      group: "vagrant",
      mount_options: ["uid=1000", "gid=1000"]
    host.vm.synced_folder "pillar/", "/srv/pillar", 
      owner: "vagrant", 
      group: "vagrant",
      mount_options: ["uid=1000", "gid=1000"]
    

二、关于Docker挂载权限问题

虽然你提到这是另一个独立问题,但可以给你几个排查方向:

  • 检查宿主机挂载目录的权限:确保目录的UID/GID和容器内运行用户的UID/GID一致(比如容器用root的话,宿主机目录至少要有读权限)
  • 检查Ubuntu默认的AppArmor限制:可以临时关闭AppArmor测试是否是它导致的:sudo systemctl stop apparmor
  • 挂载时显式指定权限参数:比如docker run -v /host/path:/container/path:rw,确保读写权限正确

内容的提问来源于stack exchange,提问作者Petrus K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:14:10