Docker向けの軽量Linux OS 主要3種を比較する

2015年3月6日(金)
佐藤 司森元 敏雄

Dockerをより効率的に利用するための技術

通常Dockerを利用する場合は、Linux OSが稼働するサーバ上にDockerのパッケージを追加でインストールすることで、環境を構築している。当然ではあるが、Linux OSのインストール時に「最小限の構成」を選んだとしても、Dockerの稼働には必要のないパッケージもインストールされている状態となる。 本来Dockerを利用する最大のメリットは、「少ないリソースでたくさんのコンテナ(=実行環境)を起動させられる」ことである。たとえ最小限の構成であってもDocker実行環境としては、多くのリソースが無駄に消費されていることとなる。さらに不要なサービスが実行されていることにより、Dockerで利用しない機能に対してもセキュリティー上のリスクが残ってしまうことになり、不要な運用作業が発生することとなる。

そのため、Dockerに対してもハイパーバイザ専用OSと同様に実行環境として最低限の機能を持ったDocker専用の軽量OSのニーズが発生していた。そのニーズに答えるように、各ベンダーからDocker実行環境向けに軽量化・最適化された軽量OSが提供されている。

Docker向けの軽量OSを使うメリットとしては、以下の点が挙げられる。

(1)最低限のパッケージで構成されている

  • インストールや設定の作業時間が短い
  • ベースOSのディスク使用量が少ない
  • セキュリティーアップデートなどの運用負荷が少ない

(2)最低限のサービス(機能)のみが動作する

  • ベースOSのCPU、メモリ等のリソース使用量が少ない
  • サービスが少ないため、脆弱性のリスクが軽減される

(3)リソースの空き容量が多くなる

  • より多くのコンテナを起動できる

前回の連載「Dockerを知る -周辺ツールと業界動向-」の第2回では、コンテナ向けOSとして「CoreOS」を簡単に紹介したが、記事公開以降にOSベンダーであるRed HatやUbuntuからもDocker実行環境向けにカスタマイズされた軽量OSがリリースされている。

Docker向け軽量OSに共通した特徴

Docker向けの軽量OSは、以下に挙げる共通の特徴を備えている。

(1)パッケージの管理コマンドが存在しない

Docker向けOSには、パッケージ管理コマンド(yumやapt)が存在しない。これは機能を追加する際には、パッケージのインストールではなく、コンテナを起動して実現することが前提となっているためと考えられる。この一般的なOSとの差異は、基本点に全てのDocker向けのOSに共通する概念である。

(2)ファイルシステムの大部分が読み込み専用

ベースOSのファイルシステムは、コンテナを格納する領域以外の大部分が読み込み専用となっている。これも前項の前提と同じで、必要な機能はコンテナの起動で実現するため、更新が不要なベースOS部分を保護するためにこのようになっていると考えられる。

(3)Dockerを管理するための必要なコンポーネントが標準で提供されている

必要なコンポーネントは(一部を除き)標準でインストールが行われる。Dockerのみではなく、Docker実行環境およびコンテナの管理を行うコンポーネント群が自動でインストールされるのも、大きな特徴となっている。コンテナの可用性についての製品は、製品ごとに独自の取り組みが行われており、他ベンダーの製品も積極的に利用されている。たとえばProject Atomicでは、Googleが開発するKubernetesが選択されている。

比較するDocker向け軽量OS

今回はDocker向けの軽量OSの中から、以下の3製品を実際に動作させて検証を行い、それぞれの製品の特色や機能の差異などをまとめている。Docker環境用OSを選択する際の参考になれば幸いである。

  • CoreOS
  • Project Atomic(CentOS Atomic Host)
  • Snappy Ubuntu Core

各軽量OSの比較表

製品名CoreOSProject AtomicSnappy Ubuntu Core
開発ベンダーCoreOS, Inc.Red Hat, Inc.Canonical UK Ltd.
公式サイトhttps://coreos.com/http://www.projectatomic.io/http://developer.ubuntu.com/en/snappy/
コンセプトChrome OSから派生した、Docker専用に開発された製品で、Docker コンテナに最適化された OS の提供を目的としている既存のRed Hat系OSをDockerに最適化するためにカスタマイズされた製品。コンテナとしてRed Hat系OSを安定稼働させることを目的としているUbuntuベースの最軽量OS製品。IoTも含めた様々なプラットフォームで動作させることを目的としている
ライセンスApache License 2.0GPLv2GPL
検証に利用したバージョン(Stable)v557.2.0Test Versionubuntu-core/devel
カーネルバージョン3.18.13.10.0-123.9.3.el7.x86_643.18.0-9-generic
標準インストールされるDockerのバージョンv1.4.1v1.4.1なし
パッケージ管理ツール
(yum/apt相当)
なしなしSnappy
標準インストールされる管理ツールetcd
fleet
rpm-OSTree
systemd
geard
Kubernetes
Cockpit
-
ベンダー有償サポートの有無CoreOS Managed Linuxのみ有償サポートありRed Hat Enterprise Linux Atomic Hostのみ有償サポートありなし

CoreOS

コンテナ向けOSの先駆者であり、前回の連載第2回に実際のインストール手順や特徴などをまとめているので、合わせてご一読いただきたい。CoreOSはDockerの機能拡大の路線を受け、「従来のコンセプトであるシンプルで自由に構成できるコンポーネントではなくなりつつある」とし、Dockerの当初の基本コンセプトを踏襲したコンテナ実行エンジンである「Rocket」の開発を宣言した。2014年12月1日にはRocket Ver 0.1.0がプロトタイプ版として公開されている。Rocketの最新版は、2015年2月6日にリリースされたVer 0.3.1である。ただし現状では、大半の利用者はRocketには移行しておらず、CoreOS + Dockerを利用しているものと考えられる。CoreOSが独自に開発しているRocketについても、別の機会があればご紹介したい。

CoreOSの特徴として、以下のコンポーネントが標準でインストールされていることが挙げられる。

コンポーネント機能と特徴
etcd高可用性KVS、複数のCoreOS上のコンテナ情報の共有を実現する
fleetCoreOS上のコンテナの管理とスケジューリングを行うツール。複数のCoreOSをインストールしたノードでクラスタを構成し、コンテナのデプロイが可能。コンテナが停止した場合、生きているノードで自動的にコンテナを再デプロイする

この2つの機能を組み合わせることで、コンテナのクラスタリングも可能である。なおfleetの機能を応用することによってコンテナの死活監視は行うが、リソース使用量等の監視までしたい場合は、別のツールを検討する必要がある。

CoreOSは製品の更新頻度が非常に高く、2015年1月は11回ものバージョンアップのリリースが行われている。利用者は「Stable」「Beta」「Alpha」版から任意のバージョンを利用可能である。Dockerのバージョンアップから約10日間程度で、最新版のDockerが入ったCoreOSがAlpha Channelで提供されるため、Dockerの新機能を試すのが目的であればCoreOSを選択するのは非常に有用である。
今回の比較検証では新機能による不具合等を回避するため、Stable版を利用している。 

Project Atomic

Project Atomicは、Red Hatが開発しているDocker専用の軽量OSを作成するためのプロジェクト名である。Project Atomicの開発コンセプトは、Red Hat系の各ディストリビューションで作成されたコンテナを安定稼働させることに最適化した実行環境実現である。
Project Atomic内にはRed Hat系のディストリビューションごとにプロジェクトが存在している。

ディストリビューション特徴
Fedora Atomic次世代のRed Hatに取り込まれる新機能の開発ベースとなる。更新頻度が非常に高い
Red Hat Enterprise Linux Atomic Host商用版のOSでサポートが付属する有償OS(現在はミッションクリティカル非推奨とされている)。現状のサポート範囲は、RHELホスト上でRHELコンテナを動作するケースのみである
CentOS Atomic HostCentOSにAtomic Hostの機能を追加し、軽量化したOS
REHL Atomic Hostとは分離して、独自の開発を予定している

本記事では、この中から最も新しいCentOS Atomic Hostについて触れていく。CentOS Atomic Hostで提供されているDocker以外の主要コンポーネントを、以下の表にまとめた。

コンポーネント機能と特徴
rpm-OSTreeOSのアップデートを実行・管理するツール。
3way-mergeにも対応しており、Tree上のSnapshotを保持できるため、自由度の高い世代管理とロールバックが可能
systemdinitdに代わってサービスの起動や制御を行う。サービスの並列起動や依存関係の制御に優れている。CentOS Atomic Hostではsystemdのjournaldの機能を利用し、コンテナごとのログの出力を行っている
geardGO言語で作成されている。
コンテナの管理ツール。コンテナとsystemdとの連携、複数コンテナの一括デプロイ、コンテナ間のネットワーク構築などが行える。
KubernetesGoogle製のコンテナオーケストレーションツール。CentOS Atomic Hostのクラスタリングは本ツールで実現する。詳細は前の連載の第3回を参照
Cockpitコンテナ管理用のGUI。コンテナのデプロイ、削除やリソース使用状況確認、ログの監視がGUIで行える

まずは、軽量化によるディスク使用量の削減量について評価を行ってみる。CentOSを最小限の構成でインストールしたものと CentOS Atomic Host、Fedora Atomicのディスクの使用量は以下となる。

CentOS(最小限の構成)CentOS Atomic HostFedora(21) Atomic
859MB1.8GB804MB

現状では、CentOS Atomic Hostのディスク使用量はCentOSよりも多くなっている。これはCentOS Atomic Host自体の軽量化が進行中であるためと推察される。それは、開発が先行しているFedora(21) Atomicのインストール容量が804MBと軽量化されていることからも予想できる。将来的には、CentOS Atomic Hostのディスク使用量もより削減されるであろう。

株式会社アーベルソフト

インフラ基盤の設計・構築・運用までの全ての工程を担当。最近は、OSS製品を活用したインフラ基盤の提供を行っている。利用するOSS製品の調査・研究も行っており、現在は、DockerとTerraformに注目している。
>株式会社アーベルソフト

TIS株式会社

R&D部門である戦略技術センター所属。
金融系の大規模システム開発やプライベートクラウド開発環境の構築・運用の経験を生かし、OSS製品を中心としたの技術調査・検証を担当。
> TIS株式会社

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています