LoginSignup
6

More than 5 years have passed since last update.

Vagrant+Docker してホストOSのWinでもSyncしたい

Posted at

何がやりたいのか

boot2docker使わないで、vagrant でゲストOSに

  • Apache
  • PHP
  • MySQL

とか盛り込んだdockerコンテナを立てて動かす、かつ
vagrant のゲストOS内でたてたコンテナでデータをマウント、かつ
そのマウントしたデータをホストOS(Win)とsyncする。

そんな多段的なことする必要あるのかはわからない。

環境

  • Win7
  • VirtualBox
  • Vagrant
  • ゲストOS:CoreOS

CoreOSという選択

docker がすぐ使えるから。

$ git clone https://github.com/coreos/coreos-vagrant.git

vagrant up 前にやっておきたいこと

少しVagrantfile編集しておく。

ネットワーク周りを調整

Vagranfile
ip = "172.17.8.#{i+100}"
config.vm.network :private_network, type: "dhcp", ip: ip
config.vm.network :public_network, type: "dhcp"

iっていうのは今は考えない。インスタンス増えた時にマッピングできる何か。

ホスト、ゲスト間のトポートフォワーディング

Vagrantfile
config.vm.network "forwarded_port", guest: 80, host:8080

ホスト、ゲスト間でsyncするディレクトリ

Vagrantfile
config.vm.synced_folder "./app", "/app", type: "rsync"
config.vm.synced_folder "./data", "/data", type: "rsync"

(※ mac の人は type: "nfs" とか使えていいですね!
http://2no.hatenablog.com/entry/2014/10/23/033125
いろいろ調べたけど、結局Winでnfs使えなかった。)

の後に、

$ cd coreos-vagrant
$ vagrnt up

docker で起動したかったWebアプリ

joomlaです。

$ vagrant ssh
ここからゲストOS
core@core-01 $ docker run -d \
    -p 80:80 \
    -p 443:443 \
    -p 3306:3306 \
    -v /app:/var/www/html \
    -v /data/mysql:/var/lib/mysql \
    -e MYSQL_PASS="password"  \
    --name joomla \
    dell/joomla

一度runしたら、あとはdocker start joomlaとかでいいです。

この時点で、ゲストOSのディレクトリをマウントしてるんだけど、ホストOSには存在してないから、scpとかでコピーしてた。

$ scp -r -i ~/vagrant.d/insecure_private_key core@core-01:/app ./

とかですかね。mysqlのデータとかscp出来なかったら、chmodで変えてコピーしたりしてた。あんまりかっこ良くない。

アクセス

おそらく、http://172.17.8.101 でアクセスできるはず。
ネットワーク上のipのときは http://x.x.x.x:8080 とか。

このままだとホストOS側と同期しないので、ホスト側で

$ vagrant rsync-auto

でもこれ結局ホスト->ゲストの一方向なので。
ゲスト側での変更もホスト側に同期しなきゃって時は

$ vagrant plugin install vagrant-rsync-back
$ vagrant rsync-back

してください。残念、autoではない。

本日は以上です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6