LoginSignup
30
30

More than 5 years have passed since last update.

VagrantのDocker ProviderでhostVMをCoreOSにする

Last updated at Posted at 2014-06-04

Vagrant 1.6からサポートされたDocker Provider。
Dockerホストを務めるhostVMとDockerコンテナ両方をVagrantが一括して取り扱います。

デフォルトではhostVMはboot2docker 0.4.0で起動しますが、CoreOSが提供しているcoreos-vagrantにリプレースして起動まで成功したので備忘録を。

ひとまずDockerコンテナのVagrantfileを置くディレクトリを作ります。

$
mkdir vagrant-docker-coreos
cd vagrant-docker-coreos
git init .

Vagrantfileを作成します。

vagrant-docker-coreos/Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.vagrant_vagrantfile = "coreos-vagrant/Vagrantfile"
    d.vagrant_machine = "core-01"
    d.image = "centos"
  end
  [80, 8080, 443, 3306].each do |port|
    config.vm.network :forwarded_port, guest: port, host: port
  end
end

d.vagrant_vagrantfileに別個Vagrantfileを設定することでhostVMを指定できます。
ここに記述するポートフォワーディングはguest: dockerコンテナ → host: hostVM の設定になります。お好みで。

上述したcoreos-vagrantを取り寄せます。

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

ここで立ち上げるCoreOSをboot2dockerのようにホストOSから使うために、user_dataconfig.rbをコピーしてtcp://127.0.0.1:4243にdockerソケットが通るようにします。

vagrant-docker-coreos/coreos-vagrant$
cp user_data.sample user_data
cp config.rb.sample config.rb
config.rb
--snip--
# You can then use the docker tool locally by setting the folloing env var:
#   export DOCKER_HOST='tcp://127.0.0.1:4243'
$expose_docker_tcp=4243

# Setting for VirtualBox VMs
--snip--

Docker Providerの現行の仕様では、hostVMのnameはdefaultしか見ていない様子でした。
coreos-vagrant/Vagrantfileに修正を加えます。

2014/06/09 追伸
Docker側Vagrantfileにd.vagrant_machine = "core-01"を追記すれば良かった話でした。

vagrant-docker-coreos/coreos-vagrant/Vagrantfile
--snip--
  (1..$num_instances).each do |i|
    # config.vm.define vm_name = "core-%02d" % i do |config|
    config.vm.define vm_name = "default" do |config|
      config.vm.hostname = vm_name

      (49000..49169).each do |port|
        config.vm.network :forwarded_port, guest: port, host: port
      end
      [80, 8080, 443, 3306].each do |port|
          config.vm.network :forwarded_port, guest: port, host: port
      end

      if $enable_serial_logging
--snip--

$num_instancesが2以上の場合はコンフリクトしないようによしなにお願いします。

vagrant-docker-coreos/coreos-vagrant$
cd ..
vagrant up --provider docker

これで起動するハズ。
docker psとハッシュは共有しませんが、vagrant global-statusで全体像を一覧できます。

参考:
Vagrant1.6のDocker provider | SOTA
タイトルとか決めてないけどこのままでもいいかもしんない: Vagrant1.6のDockerの機能使ってコンテナにSSH接続してWebサーバー立ててみたよ
Vagrant 1.6 が出たので Docker Provider を試してみた – I'm Sei.
Vagrant 1.6 Feature Preview: Docker-Based Development Environments - Vagrant

30
30
0

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
30
30