仮想化道場

Dockerコンテナの実行環境に最適化されたRHEL Atomic Host

Atomic HostはDockerにチューニングしたLinux

 Atomic HostがRHEL 7と異なるのは、Linuxカーネルなど、必要最低限のシステムソフトしか搭載されていない点だ。RHEL 7が持つ6000以上のコンポーネントから、Docker環境に必要な300コンポーネントにダイエットしている。

 その結果、使用するメモリとしては200MBほど、ディスク容量としては1GB程度と非常にコンパクトになっている(この数字はAtomic Hostを単にインストールするための容量で、もちろん、コンテナを動かすことで使用するリソースは増えていく)。

 具体的には、RHEL 7のLinuxカーネル、セキュリティ関連のSELinux、systemd、tunedなどが入っている。逆に、追加された機能としては、Dockerを動かすためのインフラ、アップデートを行うrpm、複数のDockerコンテナを管理するオーケストレーションツールのKubernetesなどがある。

Atomic Hostは、Dockerコンテナの実行に特化したLinuxディストリビューション
RHEL 7をベースにDockerコンテナを動かすことに最適化されている。Atomic Hostを利用するには、RHEL 7のライセンスがあればいい
Dockerコンテナを動かすだけインフラが提供されているため、非常にコンパクトで高いセキュリティを持つ
Red Hatでは、Dockerを使用することで、OSだけでなく、パブリッククラウドを視野に入れたポータビリティを実現する
Red Hatは、Dockerに対してもさまざまな貢献を果たしている。例えば、Thin Provisioning機能によるディスク性能の向上や、Systemdのプロセス管理機能の統合などを行った。これらの機能がAtomic Hostに入っている
Atomic Hostは、Project Atomicという名称でオープンソースとして開発されている。このため、CentOS版のAtomic Hostも存在する

 Kubernetesは、数百、数千のDockerコンテナを管理するためのオープンソースソフトウェアだ。Dockerは、アプリケーションや動作環境を一つ一つコンテナ化することはでき、個々のコンテナの起動のコントロールは行える。しかし最近のサービスは、複数のサーバーが組み合わさって出来上がっている。例えば、受発注システムなら、フロントエンドにWebサーバーが置かれ、データ処理を行うビジネスロジック部、バックエンドのデータベース、在庫システム、経理システムなどが連携することになる。

 このようなサーバー間の依存関係を考えて、起動する順番をコントロールしたり、個々のコンテナがきちんと動作しているかどうかの死活管理を行ったりする必要があるし、システムがクラッシュした場合は、リカバリを行う必要もあるだろう。さらに、Webサーバーへのアクセスが増え、一定以上の負荷がかかった場合は、複数のサーバーを自動的に起動していくオートスケールの仕組みと連携することもある。

 Kubernetesでは、こういったDockerコンテナの管理を行う役目を担っている。もともとは、Googleが自社のデータセンターの運用のために開発した管理フレームワークをオープンソース化したものだが、プロジェクトには、Microsoft、Red Hat、VMware、IBMなどが参加しており、Dockerの管理フレームワークとしてはスタンダードなソフトウェアと言っていいだろう(Kubernetesは、OpenStackで動作するようになっている)。

Kubernetesは、複数のDockerコンテナを管理・運用する仕組み

 もう1つAtomic Hostでは、RHEL 6との互換性を保証している。つまり、RHEL 6上で動作しているアプリケーションをコンテナ化して、RHEL 7ベースのAtomic Host上で動かすことができる。ユーザーとしては、RHEL 6環境を簡単にRHEL 7上に移行することができる。

 ただしRed Hatでは、RHEL 5以前のアプリケーションをAtomic Host(RHEL 7ベース)で動かすことは保証していない。古いバージョンのRHEL OSのアプリケーションは、コンテナ化しても、Atomic HostのベースOSがRHEL 7になっているため、互換性の問題で動作しないこともあるからだ。このあたりは、ハイパーバイザーによる仮想化を使って、古いRHELを仮想マシンで動かすべきだろう。

 また、LinuxのディストリビューションのCentOSやUbuntu上で作られたコンテナをAtomic Hostで動作することも保証していない。テクノロジー的には、CentOSやUbuntu上で作られたコンテナはAtomic Hostで動く可能性が高いが、Red Hatがきちんと動作保証しているのかというのは別問題だ。

RHEL 6のアプリケーションをコンテナ化して、RHEL 7上で動かすことができる。
Red Hatとしては、コンテナの互換性をRHEL 6とRHEL 7に限定している。この制限は、技術面というよりもサポート面からだろうか。

(山本 雅史)