仮想化道場

新しい仮想化「Docker」を搭載したRed Hat Enterprise Linux 7

 日本国内では7月に正式発表されたRed Hat Enterprise Linux(RHEL) 7は、新しい仮想化システムのDocker、Windows環境との相互運用性、スケーラブルなファイルシステムといったの3つが、大きな機能強化となっている。

 RHEL 6に比べるとOSカーネルのチューニングが進み、同じハードウェアでも、RHEL 7では10~20%の性能アップ(サーバーサイドJAVAでは25%の性能アップ)を果たしている。ただRHEL 6がリリースされたときのように、サポートCPU数やメモリのスケーラビリティが劇的に向上した、といったことはない(サポートCPU数は、RHEL 6の4096から最大5120へと、拡張自体はされている。サポートメモリ容量はRHEL 6と同じく64TB)。これは、RHEL 6で現在のサーバー環境において十分な拡張が行われたからだろう。このため、RHEL 7では、RHEL 6のOSカーネルをよりチューンして、パフォーマンス向上やバグフィックスに注力したのだといえる。

RHEL 7は、エンタープライズOSを再定義する、大きなターニングポイントになるOS。Dockerコンテナがデプロイメントを大きく変える
10年にわたるRHELの進化の到達点だ
RHEL 7の新機能。大きいのは、Docker、Windowsとの相互運用性、ファイルシステムだ
RHEL 7では、CPUのサポート数などのOSカーネルの拡張よりも、Dockerの追加、安定性、信頼性の向上にフォーカスが当てられた

アプリケーションのコンテナ化を行うDocker

Dockerコンテナにより、新しい仮想化が提供される

 RHEL 7で搭載されたDockerは、LinuxのKVMやXen、WindowsのHyper-V、VMwareのESXiなどのハイパーバイザーとは違った方式で仮想化を行う。

 Dockerは、アプリケーションをカプセル化(コンテナ化)し、ほかのOS上で動作しているアプリケーションと切り離して動作させることができる。具体的には、アプリケーションだけでなく、アプリケーションフレームワークやシステムソフトウェア、ライブラリのバージョンなど、アプリケーションを動作させるためのソフトウェアの依存関係をまるごとコンテナ化する。

 これによって、例えば、異なるバージョンのPHPとアプリケーションをコンテナ化し、1つのOS環境で複数のPHPバージョンを動かす、といったことが可能になるのだ。

 また、アプリケーションフレームワークやアプリケーション自体をコンテナ化されるので、デプロイメントが非常に簡単になっている。例えば、開発環境で動作しているコンテナイメージを実行環境にコピーすれば、すぐにでもアプリケーションを動かすことができる。

 コンテナイメージにアプリケーションの動作環境がすべてインストールされているのだから、ライブラリの依存関係やバージョンの差などで動作しないということはなくなる。加えて、コンテナそれぞれにコンテナIDが付与されており、コンテナIDが異なれば別のコンテナとして動作する。このため、コンテナにインストールされたアプリケーションのパラメータを細かく変更して、最も最適な動作環境をチューニングすることもできるだろう。

 一方でDockerでは、ハイパーバイザー型の仮想化とは異なり、OS部分はホストOSをそのまま利用する。コンテナの中にOSがないため、コンテナで動作するアプリケーションのパフォーマンスも高いし(ハイパーバイザーを用いた仮想化のように、仮想マシンでOSが動作しないのでオーバーヘッドが小さい)、アプリケーションとその周辺部しかコンテナ化されないことから、コンテナのサイズも小さい。

 ただし、OSはホストOSが唯一の存在となっていることから、ホストOSと異なる種類のOSや、同種のOSでも複数のバージョンを動かすことはできない。またコンテナ化を行うDockerはLinux OSのカーネルと深くかかわるため、Linux OSでしか動作しない。

Dockerは、デプロイメントの柔軟化、運用の効率化など、ハイパーバイザー仮想化に比べると手軽にアプリケーション配置が行える。異なるバージョンのフレームワークもコンテナ化で共存可能
Dockerのコンテナ化により、アプリケーションが動作するためのライブラリなどをひとまとめにできるので、アプリケーションの配布が簡単になる。ハイパーバイザーによる仮想化とは違い、各コンテナにはOSが必要ない

 Red Hatでは今回、RHEL 7にDockerを搭載したが、Dockerでコンテナ化されたイメージを動作させるには、ホストOSがフルファンクションのRHELでなくてもいい。

 このため、Dockerイメージの動作にチューニングしたRed Hat Enterprise Linux Atomic Host(Atomic Host)というRHELのエディションを提供する予定にしている。Atomic Hostは、Dockerコンテナだけを動かすことにチューニングされたRHELといえる。

 これを使えば、フルファンクションのRHEL 7上でDockerコンテナを動かすよりもオーバーヘッドが小さく、RHEL 7より多くの数のDockerコンテナを、満足のいくパフォーマンスで動かせるだろう。

Red Hatでは、Docker専用のRed Hat Enterprise Linux Atomic Hostの開発を進めている

(山本 雅史)