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

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

新規登録して質問してみよう
ただいま回答率
85.48%
VirtualBox

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

Vagrant

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

Docker

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

Q&A

解決済

2回答

7198閲覧

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

kskkskksk

総合スコア7

VirtualBox

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

Vagrant

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

Docker

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

0グッド

1クリップ

投稿2016/02/22 13:20

編集2016/02/23 03:16

こんにちは。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側の設定が原因でしょうか?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

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

ruby

1# boxの指定を追加しています 2Vagrant.configure("2") do |config| 3 config.vm.box = "bento/centos-6.7" 4 config.vm.synced_folder "src/", "/srv/website" 5end

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

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

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

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

bash

1$ vagrant up 2Bringing machine 'default' up with 'virtualbox' provider... 3There are errors in the configuration of this machine. Please fix 4the following errors and try again: 5 6vm: 7* The shared folder guest path must be absolute: srv/website

投稿2016/02/26 20:09

編集2016/02/26 20:15
StupidDog

総合スコア263

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kskkskksk

2016/03/01 09:23

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

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するまで存在に気づきませんでした。とても基本的なことでした。お騒がせしました。

投稿2016/02/23 05:10

kskkskksk

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問