ちょい前にVagrantの使い方を覚えたところだったんですが、最近の仮想化はDockerだ!っていう声が大きくなってきたのでこっちもやってみることに。
DockerはVagrantに比べると仮想環境の起動が早いっていう話なんだけど、そもそも仕組みが違う。DockerはホストOSのLinuxカーネルを共有して動かすのに対して、VagrantはゲストOSのカーネルごと仮想化する点で異なるので、パフォーマンスに大きな違いが出るみたい。
実際色々調べてみると、同じ仮想化といえども若干用途の違いがあってVagrantの知識が無駄になるわけでもないみたい。
インストール
前述したようにDockerはLinuxカーネル上で動作するので通常はMac OSXでは動かせない。そこでMac OSX上にDockerサーバを立てて、その上でDockerを動かすというやりかたをする。
ここらへんを参考にした。
http://qiita.com/k2works/items/926c4a3f5798c47b4088
http://dev.classmethod.jp/tool/docker/getting-started-docker-on-osx/
http://qiita.com/tukiyo3/items/b0821c2ff8cfffaa7f4e
Mac用のインストーラーもあるけど愛用しているhomebrewを使う方法で行きます。homebrew自体のインストールについては割愛します。
homebrewを最新にしてdockerとboot2dockerをインストールする
1 2 3 |
$ brew update $ brew install docker boot2docker |
ちなみにboot2dockerはdockerサーバを管理するもので、dockerはdockerクライアントです。前述した参考サイトにこの辺の概念が図解されているのでわかりやすかった。
Dockerサーバを初期化して起動
1 2 3 4 |
$ boot2docker download $ boot2docker init $ boot2docker up |
なんかエラーでたけど。何回かstopしたりdeleteしたりupしたりしているうちに発生しなくなった。理由はわからない。
1 2 3 4 5 6 |
Started. Trying to get Docker socket one more time Error requesting socket: exit status 1 Auto detection of the VM's Docker socket failed. Please run `boot2docker -v up` to diagnose. |
エラーがでなかったときのログ。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ boot2docker up Waiting for VM and Docker daemon to start... .. Started. Writing /Users/haradaatsushi/.docker/boot2docker-vm/ca.pem: Writing /Users/haradaatsushi/.docker/boot2docker-vm/cert.pem: Writing /Users/haradaatsushi/.docker/boot2docker-vm/key.pem: To connect the Docker client to the Docker daemon, please set: export DOCKER_HOST=tcp://192.168.○○.○○○:2376 export DOCKER_CERT_PATH=/path/to/user_home/.docker/boot2docker-vm |
環境変数を設定しろと言われているようなので言う通りにします。WEB上の情報をみるとDOCKER_HOSTは tcp://localhost:4243 にしろっていうもありましたが、それだと動かなかった。
1 2 3 4 5 6 |
$ vim .bash_profile export DOCKER_HOST=tcp://192.168.○○.○○○:2376 export DOCKER_CERT_PATH=$HOME/.docker/boot2docker-vm $ source .bash_profile |
環境変数の設定がうまくいってないと docker version でこんな感じになったみたい。
1 2 3 4 5 6 7 8 |
$ docker version Client version: 1.2.0 Client API version: 1.14 Go version (client): go1.3.1 Git commit (client): fa7b24f OS/Arch (client): darwin/amd64 2014/10/30 15:40:38 Cannot connect to the Docker daemon. Is 'docker -d' running on this host? |
起動していることを確認
1 2 3 |
$ boot2docker status running |
dockerサーバにSSHしてubuntuのイメージを取得し、ubuntuを起動してみる。
1 2 3 4 5 6 7 |
$ boot2docker ssh $ docker pull ubuntu $ docker run -i -t ubuntu:12.04 /bin/bash # cat /etc/issue Ubuntu 12.04.5 LTS \n \l |
出来たあああああ!!
あれ、12.04?古くね?
余談
boot2docker ssh をしないで、docker run してて、しばらくあれれ??ってなってた。ご注意を。

原田 敦

最新記事 by 原田 敦 (全て見る)
- Rails Engineでブログ機能追加するgemを作る - 2015年3月15日
- WEBエンジニア一人だけでサービスを作りきる方法-夫婦のための自動ごはん予定お知らせサービス「GoHaaan」制作でやったこと - 2015年3月7日
- CentOS6でMariaDBのDynamic Columnsを試してみた - 2015年2月28日