Docker

読み方 : どっかー

英語正式表記 : Docker

Dockerとは

アプリケーションの実装環境を仮想化するソフトウエア。2013年3月に無償のオープンソースソフトウエアとして公開された。ドワンゴやリクルートといったインターネット関連企業が導入している。

ネット企業のエンジニアを中心に「Docker(ドッカー)」と呼ぶソフトウエアが注目を集めている。Dockerは、アプリケーションの実行環境を仮想化するソフトである。企業システムで広く普及しているサーバーの仮想化と比べてみると、Dockerの仕組みや特徴を理解できる。

仕組み:アプリの実行環境を仮想化

サーバー仮想化とは、ホストOS上で異なる複数の「ゲストOS」を実行する技術である。具体的には「ハイパーバイザー」と呼ぶソフトウエアを使い、仮想的なCPUやメモリー、ハードディスクなどで構成する「仮想マシン」を作成する。作成した仮想マシン上で、ウィンドウズやLinuxといった様々なOSを実行できる。LinuxのホストOS上でウィンドウズのゲストOSを実行することも、その逆も可能だ。

一方、Dockerは「コンテナー」と呼ぶ仮想化技術を採用している。コンテナーは、ホストOSの環境を複数のグループに分割し、それぞれを独立した環境として動作させる技術である。サーバー仮想化のようなゲストOSは使わない。このため、コンテナーで実行できるアプリケーションはホストOSに対応したアプリケーションに限定される。Dockerは現在Linuxでしか動作しない。つまり、コンテナーで実行できるアプリケーションは、Linuxアプリケーションに限られる。

そういうと、ウィンドウズを含む様々なOSを実行できるサーバー仮想化の方が使い勝手が良いように見える。けれども、パフォーマンスと再現性の高さで比較すると、Dockerの方が優位になってくる。

特徴:動作が高速で再現性が高い

まずはパフォーマンスだ。サーバー仮想化は、ハイパーバイザーで仮想マシンを再現する。このため、ゲストOSの入出力処理は全てハイパーバイザーを介してホストOSとやり取りされる。このハイパーバイザーの仲介が余計な処理となって、ホストOS上で動作するアプリケーションよりもパフォーマンスが低下してしまうのである。一方、DockerのコンテナーはホストOS上で動作するので、余計な処理が生じない。

次いで再現性である。現在稼働している仮想マシンと同じ環境の仮想マシンをもう1台構築するには、OSのバージョンアップやミドルウエアの導入・設定などが必要だ。

一方、Dockerではスクリプトファイル「Dockerfile」を使って同じ環境を自動的に構築できる。しかも、Dockerfileは誰がいつどこで実行しても、インターネットにさえつながっていれば即座に同じ環境のコンテナーを再現できるのである。

Dockerは、同じ環境のサーバーを大量に使って構成するウェブシステムや、アジャイルの開発手法を取り入れて頻繁にリリースするシステムなどの構築・運用に向いている。レッドハットのクラウドエバンジェリストである岩尾はるか氏は、「Dockerとサーバー仮想化は目的に応じた使い分けが進む」と説明している。

出典:ITpro「今日のキーワード」(C)日経BP社

[2016年 2月15日 公開]