Docker向けの軽量Linux OS 主要3種を比較する
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
製品名 | CoreOS | Project Atomic | Snappy 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.0 | GPLv2 | GPL | |
検証に利用したバージョン(Stable) | v557.2.0 | Test Version | ubuntu-core/devel | |
カーネルバージョン | 3.18.1 | 3.10.0-123.9.3.el7.x86_64 | 3.18.0-9-generic | |
標準インストールされるDockerのバージョン | v1.4.1 | v1.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上のコンテナ情報の共有を実現する |
fleet | CoreOS上のコンテナの管理とスケジューリングを行うツール。複数の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 Host | CentOSにAtomic Hostの機能を追加し、軽量化したOS REHL Atomic Hostとは分離して、独自の開発を予定している |
本記事では、この中から最も新しいCentOS Atomic Hostについて触れていく。CentOS Atomic Hostで提供されているDocker以外の主要コンポーネントを、以下の表にまとめた。
コンポーネント | 機能と特徴 |
---|---|
rpm-OSTree | OSのアップデートを実行・管理するツール。 3way-mergeにも対応しており、Tree上のSnapshotを保持できるため、自由度の高い世代管理とロールバックが可能 |
systemd | initdに代わってサービスの起動や制御を行う。サービスの並列起動や依存関係の制御に優れている。CentOS Atomic Hostではsystemdのjournaldの機能を利用し、コンテナごとのログの出力を行っている |
geard | GO言語で作成されている。 コンテナの管理ツール。コンテナとsystemdとの連携、複数コンテナの一括デプロイ、コンテナ間のネットワーク構築などが行える。 |
Kubernetes | Google製のコンテナオーケストレーションツール。CentOS Atomic Hostのクラスタリングは本ツールで実現する。詳細は前の連載の第3回を参照 |
Cockpit | コンテナ管理用のGUI。コンテナのデプロイ、削除やリソース使用状況確認、ログの監視がGUIで行える |
まずは、軽量化によるディスク使用量の削減量について評価を行ってみる。CentOSを最小限の構成でインストールしたものと CentOS Atomic Host、Fedora Atomicのディスクの使用量は以下となる。
CentOS(最小限の構成) | CentOS Atomic Host | Fedora(21) Atomic |
---|---|---|
859MB | 1.8GB | 804MB |
現状では、CentOS Atomic Hostのディスク使用量はCentOSよりも多くなっている。これはCentOS Atomic Host自体の軽量化が進行中であるためと推察される。それは、開発が先行しているFedora(21) Atomicのインストール容量が804MBと軽量化されていることからも予想できる。将来的には、CentOS Atomic Hostのディスク使用量もより削減されるであろう。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Dockerの導入前に知っておくべきこと
- Dockerをより良く使うための3つの周辺技術
- クラウド最適化の軽量版Ubuntu Core発表、MongoDBがWiredTigerを買収、Fedora 21正式版リリース、ほか
- 注目すべきDockerの周辺技術 PanamaxとKubernetes
- Dockerを理解するための8つの軸
- Red Hat、Linuxコンテナ基盤「Red Hat Enterprise Linux 7 Atomic Host」を提供開始
- 「CoreOS Container Linux」と「Fedora Atomic Host」を組み合わせた「Fedora CoreOS」プロジェクトが始動
- コンテナをエンタープライズレディに OpenShiftにかけるRed Hatの意気込みとは?
- OpenStack Magnumとコンテナ
- Dockerの導入前の設計、CentOS 7.xとDockerのインストール