新刊ピックアップ

なぜDockerが注目されているのか

この記事を読むのに必要な時間:およそ 1 分

仮想化技術のおさらい

コンピュータ上にコンピュータを作る――これが仮想化技術です。その応用がクラウド技術で,今回取り上げるDockerは専門用語で言えば,OS上のコンテナ技術の1つです。これらの技術がスゴイところは,コンピュータの処理能力を細かく分割できる,そしてそれらを抽象的に扱うことができて,計算機資源の効率化が図られるということにあります。

身近な仮想マシンJavaVM

1995年に発表されて,もう定番中の定番となったプログラミング言語のJava。Javaはその実行環境があれば,どのOS上でも同じ動作をすることができるので,とても普及しました。Javaの実体は,JavaVM(Java仮想マシン)です。これがなければJavaのプログラムは動きません。仮想マシンとは何かと言えば,コンピュータそれ自身を作り上げたソフトウェアです。

OSの上にOSを載せる

OSの上で別OSを動かす,これも最近ではごくあたりまえになってきました。いろいろな製品があります。個人利用されているものとしては,Mac上でWindowsやLinuxをデスクトップ上で動作できるParallesがあります(いろいろなWebブラウザで動作確認をするWebデザイナー・プログラマに人気があります⁠⁠。そして無料のOracle VM VirtualboxやVMware Workstation Playerなども皆さん気軽に使っています。

昔はCPUもメモリも貧弱で1つのコンピュータで1つのOSを動かすのが精一杯だったのですが,今はマルチコアCPU,さらにメモリもGB単位で使うことができます。結果として複数のOSを1つのコンピュータで動かすことも可能になってきました。OSも1つのソフトウェアですから,アプリと思えばたしかにOSの上でOSが動くのもアリですね。

ハイパーバイザで仮想化

さて,では1つのOSの上で複数のOSを同時に何個も動かすことができたらどんなにスゴイでしょう。しばらく前よく言われていたのが,サーバOSの処理機能は40%も使われていない,いうものです。その余った処理能力を有効活用しようというのが,クラウドの始まりです。それを実現するのがハイパーバイザです。理論的にはOSが動く環境さえあれば何個でもOSがOSの上でも動くはずですが,それぞれのOSをまとめて管理するソフトウェアが必要です。それがハイパーバイザです。MicrosoftではHyper-V,VMwareではVMware ESXi,CitrixではXen(XenSource)などが使われてきました。さらにOSSのクラウド管理ソフトのOpenStackがありますが紙幅の都合で割愛します。

コンテナ技術の発想

たとえばWebサーバの場合は通信機能が主であって他の機能は要りません。必要な機能のみ稼働することができれば,すごく便利じゃないか,という発想が生まれました。Dockerはその考え方をベースにしています。Linux環境にDockerをインストールすれば,各種アプリケーションを単独で,ユーザからはあたかもサーバ上で動いているかのように見せる使い方ができるのです。さらに,Webサーバアプリも言うなればファイルの集まりです。設定ファイルさえあれば何度でも作り上げられます。そのために作られたのがDockerfileというしくみです。これらを扱う共通リポジトリ環境としてDockerHubもあります。これらをひとまとめにしてインストール作業もボタン1つで可能になります。

クラウド=データセンターの効率化が勝負を決める

すでにGoogle社では全部のソフトウェアをコンテナに乗せており,毎週20億個ものコンテナを起動しているという話もあります。未使用のコンピュータ資源をアクティブに入れ替えながら使うことでサーバの効率化ができます。少ないサーバ台数でたくさんのWebサービスを動かすことできるので,コストも削減できます。これがDockerが流行る理由です。

その他詳細な情報やしくみは本書を参照ください。