そして、ここで唐突に VMware ESXiDebian ( wheezy ) の仮想マシンを立てて、その上で Docker 経由の UbuntuCentOS を立ててみることにする。といっても、仕事で欲しかったわけなんだけど。

まずはともあれ ESXi の環境が必要なんだけど、これはこのページでは割愛(なぜなら業者さんがやってくれたから)。
ということで、データストアや仮想スイッチ等は準備されてる前提からスタート。

仮想マシンについては当初 CoreOS を採用しようと色々操作してみたんだけど、コンソールで操作するにもStaticなIPアドレスを登録するにも面倒すぎるのでパス。セキュリティ面とか自動アップデートとかを見るといい感じなんだけど、お手軽に使うにはちょっとって感じ。
ということで、以前から使い慣れてる Debian を採用することにした。使い慣れてるって言っても随分前のことだから今更なんだけど、やっぱり apt 周りのパッケージ管理は分かりやすい。

最近になって DockerDebian とかにも対応してくれたみたいで、下記のページの通りでスムーズに導入できる。

適当にまとめると、

  • Debianのページから netinst.iso をダウンロード
  • vSphereクライアント経由でデータストアにアップロード
  • 新しい仮想マシンを「その他のLinux」で作成
  • 作成した仮想マシンにアップロードした netinst.iso をマウント
  • 仮想マシンを起動
  • 途中の追加パッケージはすべて外してDebianをインストール
  • インストール後にマウントしたISOをアンマウントして再起動
  • apt-get curl sudo でパッケージを追加
  • visudosudoers を編集
  • http://get.docker.io からスクリプトをダウンロードしてインストール
  • 自分をdockerグループに追加
  • ipフォワードを有効にする

てな感じ。
他には openssh-server を入れておけば、ホストOSはいいんじゃないかなと思う。

ここまで来たら、こんな感じでCentOS6.4とUbuntu12.10の環境がすぐ構築できる。

nobuhito@debian:~$ docker pull ubuntu:12.10
Pulling repository ubuntu
b750fe79269d: Download complete
27cf78414709: Download complete

nobuhito@debian:~$ docker pull centos
Pulling repository centos
539c0211cd76: Download complete

nobuhito@debian:~$ docker images
REPOSITORY     TAG         IMAGE ID        CREATED         VIRTUAL SIZE
centos         6.4         539c0211cd76    8 months ago    300.6 MB
centos         latest      539c0211cd76    8 months ago    300.6 MB
ubuntu         12.10       b750fe79269d    9 months ago    175.3 MB

ちなみに、各コンテナのカーネルを見てみると、すべて同じDebianのカーネルで動いてることがわかる。

nobuhito@debian:~$ uname -a; cat /etc/issue
Linux debian 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux
Debian GNU/Linux 7 \n \l

nobuhito@debian:~$ docker run -rm -t ubuntu:12.10 uname -a; docker run -rm -t ubuntu:12.10 cat /etc/issue
Linux 3d0a5cfb67cd 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 x86_64 x86_64 GNU/Linux
Ubuntu 12.10 \n \l

nobuhito@debian:~$ docker run -rm -t centos:6.4 uname -a; docker run -rm -t centos:6.4 cat /etc/issue
Linux a31c8732af28 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 x86_64 x86_64 GNU/Linux
CentOS release 6.4 (Final)

この2つのOS(ホスト合わせて3つ)の合計容量もこんな感じで、フットプリントもかなり軽い。

nobuhito@debian:~$ sudo df -h
Filesystem                  Size  Used Avail Use% Mounted on
rootfs                      7.6G  1.2G  6.0G  17% /
udev                         10M     0   10M   0% /dev
tmpfs                       202M  164K  202M   1% /run
/dev/disk/by-uuid/2edfb...  7.6G  1.2G  6.0G  17% /
tmpfs                       5.0M     0  5.0M   0% /run/lock
tmpfs                       480M   12K  480M   1% /run/shm
none                        7.6G  1.2G  6.0G  17% /var/lib/docker/aufs/mnt/b7....

以前はPerlやRubyのモジュールがバージョン違いでおかしくなったり、Webサービスを複数起動するとApacheのディレクティブ毎にサブドメインを切らなきゃいけなかったりで結構面倒なことが多かったけど、Docker だったらサービスごとに個別のモジュールやポートを割り当てることも容易に出来る。

新しい技術っていうとデカくて最先端の企業だけが使うものって感じもするけど、そういう新しい仮想環境の技術こそお金もリソースも限られてる中小企業で有意義に使うべきだと思ったり思わなかったり。使い出したのに作業だけが増えても責任負えません。