web-dev-qa-db-ja.com

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

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

私の質問は:

  1. Vagrantが/vagrant共有フォルダーをマウントするのはなぜですか?共有フォルダーは非推奨であり、同期されたフォルダーが優先されるため、Vagrantfileで共有フォルダーを定義したことはありません。
  2. 同期されたフォルダーがセットアップされないのはなぜですか?

MacOX 10.8.4でVagrantバージョン1.2.7を使用しています。

58
astropanic

共有フォルダーと同期フォルダー

基本的に共有フォルダーは、v1からv2(ドキュメント)に同期フォルダーに名前が変更されます。ボンネットの下では、ホストとゲストの間でvboxsfを使用しています(多数のファイル/ディレクトリがある場合、パフォーマンスの問題が知られています)。

ゲストに/vagrantとしてマウントされたVagrantfileディレクトリ

Vagrantは現在の作業ディレクトリ(Vagrantfileが存在する場所)をゲストの/vagrantとしてマウントしています。これはデフォルトの動作です。

docs を参照してください

注:デフォルトでは、Vagrantはプロジェクトディレクトリ(Vagrantfileのあるディレクトリ)を/ vagrantと共有します。

Vagrantfilecfg.vm.synced_folder ".", "/vagrant", disabled: trueを追加すると、この動作を無効にできます。

同期フォルダーが機能しない理由

ホストの出力/tmpに基づいて、アップタイム中にマウントされませんでした。

VAGRANT_INFO=debug vagrant upまたはVAGRANT_INFO=debug vagrant reloadを使用してVMを開始し、同期フォルダーがマウントされない理由に関する詳細な出力を取得します。許可の問題である可能性があります(ホスト上の/tmpのモードビットはdrwxrwxrwtである必要があります)。

私は次を使用してテストクイックテストを行い、それが機能しました(私はopscode弁当の浮浪者ベースボックスを使用しました)

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

VM内で、マウント情報/tmp/src on /tmp/src type vboxsf (uid=900,gid=900,rw)を確認できます。

97
Terry Wang