こんにちは。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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
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
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
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で質問しよう!
- ただいまの回答率 88.19%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/03/01 18:23
なぜVagrantfileに書いた通りのパスではなく、/home/vagrant以下に作成されたのかわかりませんが、Vagrant触りたてだったので、自覚もなく何か奇怪な操作をしたのかもしれません。今は使えてはいるので、とりあえず勉強を先に進めることにして、追々再現を試みて明らかにしたいと思います。
ありがとうございました。