今回は珍しくマジメな話題です。
Webシステムの開発など、サーバを構築し、その上に展開して使うものを開発するとき、業務用のPCの上にVirtualBoxなどで仮想サーバを作って、その中で動作確認をしながら開発しています。
そんな中、今年の初夏に札幌で開催されたオープンソースカンファレンス2014北海道で聴いた「Apache CloudStack概要」のセッションで「Docker」というコンテナ管理ソフトウェアについての話題が出てきて、ずっと気になっていたので、最近触ってみました。
使ってみるまでは「仮想サーバ作るのと何が違うのさ??」って漠然と思ってましたが、実際に使ってみると、似たようなことができるものの、だいぶ使い勝手が違うことがわかってきました。
この図の左側は、今まで使い慣れてきた仮想環境。
右は今回触ってみたDockerの環境。
仮想環境では、まず、ホストOSの上に仮想化ソフトウェア(VMWareやVirtualBoxなど)をインストールします。次に、仮想化ソフトウェアで仮想マシンを作成し、ゲストOS(Linuxなど)をインストールし、その上に各ミドルウェア(Apache, PHP, MySQLなどなど)をインストールし、その上に僕たちが開発しているアプリケーションを展開して動かしています。
これに対してDockerでは、ホストOSにDockerエンジンをインストールし、コンテナを作って、その中にミドルウェア、アプリケーションだけ載せて動かします。
仮想環境の場合、仮想マシンにはOSごと含むので、容量が10GB程度消費し、また、起動中はゲストOSを動かすためにハードウェアのリソースも多く消費しますが、DockerではOSの部分が入っていないため、数百MB程度で済みますし、複数の環境を同時に立ち上げても動作は軽く済むように感じました。
業務PCとしてWindowsのPCを使っているので、実際には、VirtualBoxで仮想マシンを作って、仮想マシン内にDockerエンジンをインストールしてコンテナを作り、その中にミドルウェア、アプリケーションを入れて使っています。
従来の仮想環境が左側なのに対して、Dockerを使った構成は右側のような感じです。
「わざわざ仮想化して、その中にわざわざDocker入れてコンテナなんか作ったりして、面倒だし重くね??」って声が聞こえてきそうですね。
確かに、最初はDockerエンジンをインストールして、コンテナ作って、って面倒はありましたし、勉強も必要でした。
でも、コンテナを作るためのイメージを作って、それをベースにコンテナを作るようにすると、仮想環境をコピーしながら作るより、はるかに楽に作ることができます。
動作についても、思ってたほど重くはありませんでした。
むしろ、複数の案件が並行して動いてて、複数の環境を同時に動かしたい場合は、仮想マシンを複数立ち上げるよりも、はるかに軽くサクサク動いてるようです。(あくまで私の体感です)
具体的なDocker環境の構築手順については、今後気が向いたら書いていこうと思います。
(よかった。。。次回のネタができた。。。)
というわけで、次回は仮想マシン(CentOS 6)にDockerをインストールしてコンテナを立ち上げる手順を書いてみようと思います。(気が向いたら)
M.clacla