Linuxは昔からクラウドとデータセンターに適したOSだとされてきた。しかし、クラウドやデータセンターでの使用に特化したLinuxは、「CoreOS」が登場するまで存在していなかった。
クラウドやデータセンターを管理するという場合、OSの選択肢は今まで「CentOS」か「Red Hat Enterprise Linux」(RHEL)、「SUSE Linux Enterprise Server」(SLES)、「Ubuntu」というケースが多かった。これらはすべてサーバ向けのLinuxディストリビューションとして素晴らしいものだが、いずれも数百台規模や数千台規模のサーバを同時に配備するような目的で設計されているわけではない。しかし、今ではそういったディストリビューションが存在している。それがCoreOSだ。
CoreOSでは、すべてのアプリケーションがDockerコンテナ内で稼働する。
CoreOSは2年以上の開発期間をかけ、データセンターやクラウドで活用できるOSとして設計された。しかし興味深いことに、CoreOSは「Debian」や「Red Hat」といった従来のサーバ向けLinuxファミリのいずれかに基づいたものとはなっていない。そうではなく、CoreOSはGoogleのデスクトップ向けOSである「Chrome OS」をベースにしているのだ。
なぜだろうか?CoreOSは軽量なOSとなるように設計されている。CoreOSの開発者らは、必要となるRAMがたった114Mバイトであり、平均的なLinuxサーバに比べると起動時のメモリ容量が40%少なくて済むと主張している。
CoreOSの最高技術責任者(CTO)Brandon Philips氏はLinux.comとのインタビューにおいて、「大規模サーバインフラの増強と管理を可能にする」ために同OSを設計したと述べるとともに「CoreOSは、クラスタ化されたマシンをまたがってサービスを稼働させるために、安定したLinuxカーネルとツール群を組み合わせた最小限のOSだ。またこのOSはすべてがパッケージ化され、物理ハードウェア上、あるいは『KVM』や『Amazon Elastic Compute Cloud』『Google Compute Engine』といったさまざまな仮想化プラットフォーム上で動作するようになっている」と述べている。
CoreOSは、Linuxのメモリ要求を低減するだけでなく、すべてのアプリケーションが「Docker」コンテナ内で実行されるようにもしている。コンテナは、OSのカーネル部分を共有するようになっているため、ハイパーバイザよりもずっと軽量かつ効率的に動作する。ハードウェアを仮想化するのではなく、単一のLinuxインスタンス上でコンテナが動作するわけだ。プロセッサからメモリやストレージに至るまでのコンピューティングスタック全体を仮想化するようなハイパーバイザではなくDockerコンテナを使用することで、アプリケーションが使用するシステムリソースをずっと少なくできる。
同社は「Dockerコンテナは極めて高速に(ミリ秒の単位で!)起動できるため、クラスタをまたぐ負荷管理に今までにない柔軟性がもたらされるようになる。例えば、それぞれの仮想マシン(VM)上でChefを実行するのではなく、構築したシステムからコンテナを生成し、適切な数のCoreOSホスト上で起動するようにした方が高速になり、また信頼性も高まる。そしてコンテナの動作開始時には、プロキシに対してトラフィックの送信を開始するためのシグナルを(etcd経由で)発行できる」と述べている。するとどうなるのかって?プログラムが軽量になるだけでなく、アプリケーションの応答性も高まるのだ。