質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.62%

  • Vagrant

    1141questions

    Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

  • VirtualBox

    719questions

    VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

  • Docker

    658questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Virtualbox, Vagrantで新しく作った共有フォルダが機能しません。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 3,412

kskkskksk

score 1

こんにちは。MacOSXからVirtualbox(5.0.6)とVagrant(1.8.1)を使って、Ubuntu14.04のboxを立ち上げ、その環境下でDocker(1.10.1)の使い方を勉強しています。その途中で、新たなshared folderを作っても、うまく機能しないという問題が起きました。

Quickstart: Compose and Djangoを参考に、Djangoのimageを作ったのですが、そのあと、Ubuntu(guest)とOSX(host)の間で新たにshared folderを作ろうとしたところ、共有できなくなっていることに気がつきました。Docker Composeのチュートリアル中にしたことが原因なのか、あるいはその前からできなくなっていたのかわからないのですが、状況として、

  • vagrant reloadしてもエラーは出ず、

default: Mounting shared folders...
  ...
default: /folder/path/on/guest => /folder/path/on/host

というメッセージが確認できているので、Vagrantfileの設定は正しく認識されていると思われる(Virtualboxのshared foldersにも新たなshared folderがリストされている)。

  • vagrant sshでユーザーvagrantとしてUbuntuを操作できる。
  • Ubuntu側で sudo /usr/sbin/VBoxService --version を実行すると5.0.6...と返ってくるので、
     VBoxServiceはインストールされていると思われる。
  • 以前にいくつか作成したshared folders中では、ファイルの共有は引き続きできている。
  • 新たに作成した(はずの)共有フォルダ中では、Dockerで作成したファイルだけでなく、全てのファイルが
     共有されていない。
  • 権限の問題かと思ったが、Docker ComposeのチュートリアルでDjangoのimageを作った際に chown -
     R $USER:$USER . (これを実行したのは~/docker/django_testimageというディレクトリでし
     た)を行っただけで、他はいじっていないはず。
  • Vagrantfileの当該のconfig.vm.synced_folderのところでmount_options:
     ["dmode=777", "fmode=777"]を加えてreload, sshしてみたが、やはり共有されていない。

という感じです。なにぶん、簡単なブログを作成したことがある程度のプログラミング初心者なので、他にどのような原因が考えられるのかわかりません。どのようなことが考えられるでしょうか?

VirtualboxとVagrantを再インストールしてみましたが状況は変わらず、ゲスト側で sudo /etc/init.d/vboxadd status を実行してみても The VirtualBox Additions are currently running. と返ってくるので、VirtualBox Additions はやはり正常に動いているようです。

Mac側の設定が原因でしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

始めに

Vagrant公式サイトのドキュメントに記載されています。

config.vm.synced_folder の説明として
vagrant - Synced folders - basic usage

最初のパラメータは、ホストマシン上のディレクトリへのパスです。相対パスの場合は、プロジェクトのルートからの相対です。
2番目のパラメータは、ゲストマシン内のフォルダを共有する場所の絶対パスでなければなりません。
それが存在しない場合、このフォルダは、(それがなければならない場合は、再帰的に)作成されます。

 注:機械翻訳の結果です

検証

次の環境でサンプルコードを試しましたがドキュメント通りです。
ホスト側の「~/src」フォルダとゲスト側の「/src/website」フォルダが共有されます。

  • OS X 10.11.3
  • vagrant 1.8.1 
  • CentOS 6.7
# boxの指定を追加しています
Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-6.7"
  config.vm.synced_folder "src/", "/srv/website"
end
終わりに

お使いのVagrantfileの内容が分からないので、ゲスト側の「/home/vagrant」以下に作成されたフォルダの正確な原因は分かりません。

ゲスト側で新しくフォルダ(再帰的)が作成される動作は確認された通りです。
しかし、パスにvagrantを含んでいるか否かは処理に影響を与えません。

vagrantを使用している場合、ユーザがvagrantなのでホームディレクトリとして「/home/vagrant」は始めから存在しています。
「/home/vagrant」フォルダ以下が新しく作成されたものです。

また、config.vm.synced_folder の第2パラメータに相対パスを指定すると、エラーとなり仮想マシンは起動できません。
※ 第2パラメータの先頭の/を取り相対パスとして実行

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
There are errors in the configuration of this machine. Please fix
the following errors and try again:

vm:
* The shared folder guest path must be absolute: srv/website

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/01 18:23

    大変丁寧にありがとうございました。ご指摘の通り、Vagrantfileの内容をさらすべきでした。/home/vagrantがもともと存在するというのも納得しました。

    なぜVagrantfileに書いた通りのパスではなく、/home/vagrant以下に作成されたのかわかりませんが、Vagrant触りたてだったので、自覚もなく何か奇怪な操作をしたのかもしれません。今は使えてはいるので、とりあえず勉強を先に進めることにして、追々再現を試みて明らかにしたいと思います。
    ありがとうございました。

    キャンセル

0

ゲスト側で sudo find / -name "path/to/shared_folder" を実行したところ、
/home/path/to/shared_folder と 
/home/vagrant/path/to/shared_folder 
の2つが見つかりました。おかしいなと思い、
cd /home/vagrant/path/to/shared_folder
でそこに入ってみると、ホスト側としっかり同期できているフォルダが見つかりました。

原因は、Vagrantfileで/home/配下のパスを共有フォルダとして指定したことのようです。推測ですが、vagrantで共有フォルダを設定するには、ゲスト側の共有フォルダはvagrantという名前のつくフォルダの配下にある必要があり、共有フォルダの指定パスが/vagrant/配下ではない場合(例えば/home/とか)、vagrantが自動的に、その直下にvagrantフォルダを作成(/home/vagrant/)し、さらにその下に指定されたパスの構成でフォルダを作成していく(/home/vagrant/path/to/shared_folder)ようです。(ドキュメントに書いてあるのかもしれませんが、見逃してしまったようです。)。加えて、homeでlsやlaを実行しても、そのvagrantフォルダは表示されなかったため、findするまで存在に気づきませんでした。とても基本的なことでした。お騒がせしました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Vagrant

    1141questions

    Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

  • VirtualBox

    719questions

    VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

  • Docker

    658questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです