/vagrant文件夹中没有文件

6

我已经配置了Vagrant(1.7.4),使用最新版本的VirtualBox(5.0.16 r105871)在OS X(10.11.4)上,并使用最新的ubuntu/trusty64 box版本(v20160323.0.0)进行默认配置,与此同时我的虚拟机也安装了匹配版本的guest additions。但是我似乎无法使共享目录/vagrant正常工作。在虚拟机中,/vagrant/目录是存在的,但是如果我在其上运行ls命令,它完全是空的。如果我在其中创建一个文件,它会出现在/vagrant目录下的虚拟机中,但不会同步回我本地的项目文件夹中,并且在重新启动后会消失。VirtualBox GUI显示了共享文件夹:

http://i.imgur.com/yM1wuj5.png

编辑:Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
  # The most common configuration options are documented and commented below.
  # For a complete reference, please see the online documentation at
  # https://docs.vagrantup.com.

  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://atlas.hashicorp.com/search.
  config.vm.box = "ubuntu/trusty64"

  # Disable automatic box update checking. If you disable this, then
  # boxes will only be checked for updates when the user runs
  # `vagrant box outdated`. This is not recommended.
  # config.vm.box_check_update = false

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # config.vm.network "forwarded_port", guest: 80, host: 8080

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.33.10"

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on 
  # your network.
  # config.vm.network "public_network"

  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  # config.vm.synced_folder "../data", "/vagrant_data"

  # Provider-specific configuration so you can fine-tune various
  # backing providers for Vagrant. These expose provider-specific options.
  # Example for VirtualBox:
  #
  # config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
  # end
  #
  # View the documentation for the provider you are using for more
  # information on available options.

  # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
  # such as FTP and Heroku are also available. See the documentation at
  # https://docs.vagrantup.com/v2/push/atlas.html for more information.
  # config.push.define "atlas" do |push|
  #   push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
  # end

  # Enable provisioning with a shell script. Additional provisioners such as
  # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
  # documentation for more information about their specific syntax and use.
  # config.vm.provision "shell", inline: <<-SHELL
  #   sudo apt-get update
  #   sudo apt-get install -y apache2
  # SHELL
end

@BrianMorton 这是默认设置,但我已将其添加到帖子中。 - user4493402
@FrédéricHenri 共享文件夹不起作用 - Vagrantfile在我的项目根目录中,应该填充文件,但是它是空的。如果我在客户机上创建一个文件,它在主机上是不可见的。我从VirtualBox直接运行得到相同的结果。 - user4493402
如果您使用 vagrant up --debug 启动计算机并查看输出以查看与同步文件夹相关的任何问题,会发生什么情况?您还可以将此信息输出到文件以进行 grep/搜索:vagrant up --debug > vagrantlog.txt - Brian Brownton
@BrianMorton 我没有看到任何关于共享文件夹的问题建议,但这里是相关的日志条目:https://gist.github.com/defectivebit/7a2972db388da102fd21ff0c7913477f - user4493402
@BrianMorton 很遗憾,没有成功。以下是相关输出:`==> default: Mounting shared folders...` `default: /vagrant => /Users/defectivebit/Code/md-wellness-apps`我在一个新目录中尝试了一下,并确保删除了 .vagrant 目录,但仍然得到相同的结果。 - user4493402
显示剩余6条评论
2个回答

7
我已经找到问题所在 - 虽然机器上存在/vagrant目录,但是由于自动挂载功能在GUI中设置为开启,且调试输出显示已经挂载,但VirtualBox仍然没有自动挂载共享文件夹导致此问题。
手动运行sudo mount -t vboxsf vagrant /vagrant可以解决这个问题。我将这一行代码放入我的upstart工作的prestart脚本中以启动我的服务器。

1
这在终端上运行,通过MacOS 10.12.5。谢谢! - Po Rith
1
在 Windows 10 上使用 PowerShell 工作。 - Crackerjack

5

如果虚拟机是在虚拟机内部关闭或重新启动,这种情况更有可能发生。

使用“vagrant halt”停止虚拟机,然后使用“vagrant up”重新启动虚拟机。这应该会自动将其挂载到“/vagrant”下。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接