Vagrant共享和同步文件夹

ast*_*nic 61 vagrant

我创建了一个Vagrantfile,其中包含以下内容:

Vagrant::Config.run do |config|

  config.vm.define :foo do |cfg|
    cfg.vm.box     = 'foo'
    cfg.vm.host_name = "foo.localdomain.local"
    cfg.vm.network :hostonly, "192.168.123.10"
  end

  Vagrant.configure("2") do |cfg|
    cfg.vm.customize [ "modifyvm", :id , "--name", "foo" , "--memory", "2048", "--cpus", "1"]
    cfg.vm.synced_folder "/tmp/", "/tmp/src/"
  end

end
Run Code Online (Sandbox Code Playgroud)

之后vagrant up或者vagrant reload我得到:

[foo] Attempting graceful shutdown of VM...
[foo] Setting the name of the VM...
[foo] Clearing any previously set forwarded ports...
[foo] Fixed port collision for 22 => 2222. Now on port 2200.
[foo] Creating shared folders metadata...
[foo] Clearing any previously set network interfaces...
[foo] Preparing network interfaces based on configuration...
[foo] Forwarding ports...
[foo] -- 22 => 2200 (adapter 1)
[foo] Booting VM...
[foo] Waiting for VM to boot. This can take a few minutes.
[foo] VM booted and ready for use!
[foo] Setting hostname...
[foo] Configuring and enabling network interfaces...
[foo] Mounting shared folders...
[foo] -- /vagrant
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 为什么Vagrant会挂载/vagrant共享文件夹?我读了共享文件夹,不赞成同步文件夹,我从来没有在我的Vagrantfile中定义任何共享文件夹.
  2. 为什么没有设置同步文件夹?

我在MacOX 10.8.4上使用Vagrant版本1.2.7.

Ter*_*ang 102

共享文件夹VS同步文件夹

基本上共享文件夹被重命名为从v1到v2(docs)的同步文件夹,vboxsf在主机和客户机之间仍在使用的引擎盖下(如果存在大量文件/目录,则存在已知的性能问题).

Vagrantfile目录/vagrant在guest中挂载

Vagrant正在挂载当前工作目录(Vagrantfile驻留位置)/vagrant,这是默认行为.

查看文档

注意:默认情况下,Vagrant将共享您的项目目录(具有Vagrantfile的目录)到/ vagrant.

您可以通过添加cfg.vm.synced_folder ".", "/vagrant", disabled: true您的Vagrantfile.禁用此行为.

为什么synced文件夹不起作用

基于/tmp主机上的输出未在正常运行时安装.

使用VAGRANT_INFO=debug vagrant upVAGRANT_INFO=debug vagrant reload启动VM以获取有关未安装同步文件夹的原因的更多输出.可能是权限问题(/tmp主机上的模式位应该是drwxrwxrwt).

我使用以下方法进行了测试快速测试并且它有效(我使用了opscode bento raring vagrant base box)

config.vm.synced_folder "/tmp", "/tmp/src"

产量

$ vagrant reload
[default] Attempting graceful shutdown of VM...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Available bridged network interfaces:
1) eth0
2) vmnet8
3) lxcbr0
4) vmnet1
What interface should the network bridge to? 1
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Running 'pre-boot' VM customizations...
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant
[default] -- /tmp/src
Run Code Online (Sandbox Code Playgroud)

在VM中,您可以看到挂载信息/tmp/src on /tmp/src type vboxsf (uid=900,gid=900,rw).

  • `vagrant up --debug`或`vagrant reload --debug`可能很有用 (31认同)
  • cfg.vm.synced_folder".","/ vagrant",禁用:true禁用默认挂载非常有帮助,谢谢 (3认同)
  • 我必须将 `config.vm.synced_folder ".", "/vagrant", disabled: false` 添加到 `Vagrantfile` 以使其工作。我猜默认值已经改变了。 (2认同)