- 2013-12-10 (火) 16:00
- Advent Calendar 2013 | Docker | Vagrant
Shin x blog Advent Calendar 2013 の 10 日目です。
Vagrant 1.4 がリリースされました。Docker Provisioner を中心に新機能をざっくりと見てみました。
ダウンロードページの変更
さあ、1.4 をダウンロードしよう、と今までのダウンロードページに行くと 1.4 のリンクがありません><
新しいダウンロードページからダウンロードしましょう。
Docker Provisioner
Docker 対応として Docker Provisioner が追加されました。
このプロビジョナを使うと Docker 自体のインストールが自動で行われ(!)、その後、docker pull や docker run を実行することができます。
下記の Vagrantfile では Docker Provisioner を使って、docker run を実行する例です。
他のプロビジョナ( chef や puppet 等)と一緒に使うことも可能なようです。
precise64 Box ファイルで vagrant up してみました。Docker インストールやコンテナ実行が行われていますね。
$ vagrant up (snip) [default] Running provisioner: docker... [default] Installing Docker (latest) onto machine... [default] Starting Docker containers... [default] -- Container: ubuntu $
vagrant ssh して、VM の中に入りました。Docker は最新の 0.7.1 が入っています。
vagrant@precise64:~$ docker info Client version: 0.7.1 Go version (client): go1.2 Git commit (client): 88df052 Server version: 0.7.1 Git commit (server): 88df052 Go version (server): go1.2 Last stable version: 0.7.1 Go version (client): go1.2
docker info を見ると aufs が Driver となっています。
vagrant@precise64:~$ docker info Containers: 1 Images: 3 Driver: aufs Root Dir: /var/lib/docker/aufs Dirs: 5
docker ps -a で確認すると、Vagrantfile に書いた bash コマンドが実行されていました。
vagrant@precise64:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 54ead2bad23d ubuntu:12.04 bash -l About a minute ago Exit 0 condescending_albattani
Docker – Provisioning – Vagrant Documentation
CentOS の Box ファイル
CentOS 6.5 の Box ファイルでも試してみました。上記の Vagrantfile から box ファイルを変更しただけです。
$ vagrant up (snip) [default] Running provisioner: docker... [default] Installing Docker (latest) onto machine... Vagrant attempted to execute the capability 'docker_install' on the detect guest OS 'redhat', but the guest doesn't support that capability. This capability is required for your configuration of Vagrant. Please either reconfigure Vagrant to avoid this capability or fix the issue by creating the capability. $
あ、エラーになりました。redhat 系のゲスト OS はサポートしていないようです。。。Docker 自体は、CentOS で動くようになっているので、今後に期待ですね。
private network を設定しているとエラー
private network を設定しているとエラーが発生する場合があるようです。
“Configuring and enabling network interfaces” fails with ssh error Issue #2614 mitchellh/vagrant
他の新機能
Machine-Readable Output
システムが読み込みやすい形式で、vagrant コマンドの実行結果?を出力します。changelog を見ると –machine-readable フラグを使うようなのです。
試しに vagrant up –machine-readable を実行したのですが、何も出力されませんでした。
Machine Readable Output – Command-Line Interface – Vagrant Documentation
Enforcing a Vagrant Version
Vagrant.require_version オプションを Vagrantfile に記述することで、実行する vagrant のバージョンを指定できます。バージョンが合わないために予期せぬ挙動になることを防止します。
Synced Folder Plugins
synced_folder の実装をプラグインで行うことができるようになりました。nfs がプラグインとして提供されています。
すでに、rsync, scp, NFS(ホストがゲストをマウントするパターン))のプラグイン実装が存在するようです。
Box downloading will resume if interrupted
Box ファイルのダウンロードが中断しても、次回再開できるようになりました。
Box checksums
追加した BOX ファイルのチェックサムを検証します。
NFS on VirtualBox no longer requires a static IP
VirtualBox 上の NFS では、static IP が必要なくなりました。
Running multiple “vagrant up” commands in parallel with VirtualBox
VirtualBox での vagrant up を並行して実行できるようになりました。CI 環境などでは有効ですね。( Docker で良いかもしれませんが。)
Multiple SSH keys
複数の SSH Key を指定することが可能になりました。また、プロビジョニングで、安全ではない Vagrant のキーをより安全なキーに置き換えることもできます。
さいごに
synced_folder のプラグイン化や、Box ファイルダウンロードの resume 機能など色々な改良が施されたバージョンですが、今回の目玉は、Docker Provisioner ですね。
これまでもプロビジョニングで Docker インストールや docker コマンドの実行は可能でしたが、Docker Provisioner の登場により、さらに手軽に Docker を利用できます。
Docker を利用するベースとして Vagrant を使うというシーンが増えていきそうです。
- Newer: 技術の種を蒔こう
- Older: WordPress を Docker で動かす( OSX / Vagrant )