レビュー:Dockerとコンテナーに最適なLinuxディストリビューション

過去6か月間、コンテナの実行に最適化された5つの最小限のLinuxディストリビューション、Alpine Linux、CoreOS Container Linux、RancherOS、Red Hat Atomic Host、およびVMware PhotonOSを確認しました。一般に「コンテナオペレーティングシステム」として知られている、これらの簡素化された専用のLinuxディストリビューションは、本番環境でコンテナを実行する唯一の方法ではありませんが、コンテナのサポート以外にリソースを浪費しない基盤を提供します。

コンテナデプロイメントシステムを使用する業界の状態は、Linuxディストリビューションの初期の頃と非常によく似ています。 1つの重要な要素(この場合はDockerコンテナー)があり、これは多数の競合するエコシステムコンポーネントに囲まれています。従来のLinuxディストリビューションがさまざまなパッケージマネージャー、デスクトップ環境、システムユーティリティ、サービス、アプリをバンドルしていたように、ほとんどのコンテナーディストリビューションはさまざまなコンポーネントを組み合わせて組み合わせ、最適なソリューションと見なすものを作成します。分散構成とサービス検出を例にとってみましょう。これには、Etcd、Consul、ZooKeeperなどのいくつかのソリューションがあります。

各ディストリビューションは、スタックに何を含めるかについて異なるアプローチを取ります。極端な例として、CoreOS ContainerLinuxやRedHat Project Atomicなど、スタックの上位レベルのみをサポートするように設計されたディストリビューションがあります。機能の多くは独自の管理レイヤーに組み込まれているため、OSを他の目的に使用する見込みはほとんどありません。RancherOSやVMwarePhoton OSなどの他のディストリビューションは、より高い柔軟性を提供し、複数のエコシステムコンポーネントとオーケストレーションシステムをサポートします。これらは、管理者に実験の良い方法を提供し、ベンダーロックインを回避する可能性があります。

アルパインLinux

多くの公式Dockerイメージの基盤となるオペレーティングシステムであるAlpineLinuxは、このタスクに最適です。わずか5メガバイトのサイズのAlpineLinuxは、Solarisと競合し、大規模なハードウェアシステムで実行することを目的とした、数年前のフルファットLinuxディストリビューションとは反対側にあります。この新しい種類のLinuxは、組み込みハードウェアで実行するように設計されており、最小限のリソースしか消費しないため、コンテナーに最適です。

組み込みシステムOSとしてのAlpineLinuxの遺産は、私のレビューで明らかになりました。構成オプションの多くはデフォルトで組み込みシステムに設定されており、多くの領域のドキュメントがまばらであるか、存在していませんでした。明らかに、ハッカー向けに設計され、主にハッカーによって使用されるシステムであるAlpine Linuxは、企業がアプリケーションを構築するためのいくつかのハードルをクリアすることを要求します。

Alpine Linuxの実稼働展開には、迅速な起動、最小限のフットプリント、他では見られないデフォルトで安全なスタンスなど、いくつかの利点があります。システムバイナリからCライブラリまで、すべてが小規模で高速かつ安全な展開用に設計されています。ここには膨満感はありません。

Alpine Linuxの管理は、従来のLinuxシステムとは異なり、学習するのに少し時間がかかります。インストールとパッケージ管理は、よく考えられていますが、コンテナオペレーティングシステムの中でも独特です。開発ショップに投資を希望する平均以上の開発者がいる場合、Alpine Linuxは、今後長い間、アプリケーションの強固で安定した安全な基盤を提供します。

CoreOSコンテナLinux

CoreOSコンテナスタックは、分散ストレージとサービス検出にEtcd、ネットワーキングにFlannel、コンテナオーケストレーションにKubernetesを利用し、Dockerに加えて独自のコンテナ形式であるrkt(Rocket)をサポートします。Rocketは、2015年頃のDocker形式の欠点に対処するための競合するコンテナー形式の試みでしたが、これらの欠陥に対処したため、Rocketはあまり普及していません。

関連動画:Kubernetesとは何ですか?

この90秒のビデオでは、コンテナ化されたアプリケーションを自動化するためのオープンソースシステムであるKubernetesについて、テクノロジーの発明者の1人であるHeptioの創設者兼CTOであるJoeBedaから学びます。

CoreOSは、Project Atomicと同様に、従来のLinuxから根本的に逸脱することを恐れていません。Red HatのコンテナOSと同様に、CoreOS Container Linuxはほとんど不変のファイルシステムを作成しますが、GoogleのChromiumOSに触発されたディスクパーティションシステムを使用して作成します。これにより、古いファイルシステムがパーティションに保存されます。つまり、ロールバックは常に安全で高速です。

ドキュメントはかなり優れていて包括的ですが、インストールはやや面倒で、構成ファイルを取得するための2段階のプロセスが必要です。ただし、インストールされると、CoreOSは継続的な「ダウンタイムなし」のアップグレードを提供します。これは、独自のディスクパーティションレイアウトによって可能になる機能です。CoreOSはここで多くの作業を行っており、オプトアウトする機能など、ほとんどすべての組織に適したさまざまなメンテナンスオプションを提供しています。

CoreOSは、Project Atomicのように、オールオアナッシングの決定です。プラットフォームにすべてのアーキテクチャ設計上の決定が組み込まれているため、断片を分解し、基盤となるOSを使用して独自のコンテナインフラストラクチャを構築することは、実際にはオプションではありません。これらの決定を受け入れて、CoreOSの商用KubernetesディストリビューションであるTectonicにお金を払っても構わないと思っているなら、間違いなく、非常に重い作業を行うことができます。

ランチャーラボRancherOS

Rancher LabsのRancherOSは、完全にコンテナで構成されたLinuxオペレーティングシステムです。initプロセス(PID 1)でさえDockerコンテナです。これは、パッケージ管理システムの必要がないことを意味します。OSのアップグレード(およびダウングレード)は、他のコンテナーと同様にDockerで管理されます。

このアプローチは、Project AtomicやCoreOSなど、他のいくつかのディストリビューションで行われたアーキテクチャ上の決定と同じくらい急進的ですが、結果は驚くほど単純です。まったく新しいシステム管理を学ぶのは最初は気が遠くなるように思えますが、とにかくコンテナを管理するにはDockerを知っている必要があるので、両方に同じシステムを使用してみませんか?

RancherOSは急速に成熟しているようです。私のレビューでは、ドキュメントが少し不足していることがわかりましたが、Dockerコンテナーに精通している開発者または管理者は、システムのほとんどをすでに知っています。 RancherOSはフットプリントが小さく(20MB)、リソースを効率的に使用します。コンテナ管理システムのRancherとOSのRancherの間の境界線はやや曖昧ですが、コンテナ管理システムは無料でオープンソースであるため、独自にロールする理由はありません。ソースコードへのアクセスが必要な組織は、これ以上探す必要はありません。

Rancherプラットフォームは、Docker Swarm、Kubernetes、Mesosなど、コンテナー管理用のツールのエコシステムのほぼ全体をサポートしており、急速に進歩しています。従来のUNIXとは根本的に異なりますが、RancherOSは、他のコンテナOSディストリビューションよりも基本的なUNIX哲学に厳密に準拠しているようです。つまり、シンプルなツールがエレガントな方法で連携して動作します。

Red Hat Project Atomic

RedHatのProjectAtomicは、Kubernetesのサービスオーケストレーションキャンプにしっかりと参加しています。通常、このタイプの展開は、大規模で可用性の高いシナリオを対象としています。欠点は、基本的に、「言われたとおりに実行」し、慣例に従ってアプリケーションを設計する必要があることです。

ボックスには、ネットワーキング用のFlannel、分散型Key-Valueストレージ用のEtcd、およびホスト管理用のOSTreeがあります。OSTreeは、信頼性の高い分散方式でOSを大規模に展開するための比較的新しい方法です。Atomicは、OSTreeと新しいRPMパッケージマネージャーを組み合わせてRPM-OSTreeを作成します。これにより、ほとんど不変のファイルシステムが提供されます。

ProjectAtomicが課題であることがわかりました。それは非常に野心的で速く動き、多くの可動部分があります。RHEL、CentOS、Fedora、SELinux、Systemd、基盤となるホストを制御するためのカスタム「Docker」コマンドセット…これらはすべて混在しており、ドキュメントはまとまりがなく混乱しています。さらに、Chef、Salt、またはPuppetがない小さなクラスターでは、各ノードを手動で構成する必要がありました。

肝心なのは、ProjectAtomicはまだ焼くのに時間がかかるということです。ビジョンが実現されれば、それは将来の標準になる可能性があります。ただし、数百のノードを持つデータセンターではなく、数千または数万のデータセンターではそうです。この点で、ビジョンは典型的なコンテナ展開システムよりもMesosのビジョンに近いように思われます。あなたの会社がRedHatエコシステムを生きて呼吸していて、そこにとどまる予定があるなら、ProjectAtomicはおそらく始める価値があります。

VMware Photon OS

VMwareのPhotonOSは、フットプリントが小さく、VMwareハイパーバイザー用に調整された最小限のLinuxコンテナーホストです。そのため、PhotonOSは仮想環境でのみ実行されます。物理ハードウェアへの展開はできません。 Photon OSは、コンテナ管理を容易にするようにカスタマイズされていますが、AtomicやCoreOSほど根本的にはありません。 Photon OSは、より進化的なステップです。

私のテストに基づくと、PhotoOSはVMware仮想環境での約束を果たしています。 (Photon OSは、GoogleやAmazonのクラウドだけでなく、他のハイパーバイザーでも実行できます。)Photon OSはハードウェア(仮想)について想定できるため、エコシステムは標準のLinuxに非常によく似ており、学習曲線はそれほど急ではありません。ネットワークとストレージはSystemdと互換性があり、コンテナネットワークについて文書化されたさまざまなオプションがあります。 Photon OSのドキュメントは、レビューされた製品の中で最高かもしれません。

VMwareは、従来の環境向けのコンテナーの生産を主導しており、これを考えると理にかなっています。コンテナとVMの違いを説明するように求められる頻度はどれくらいですか。Photon OSでは、すぐに違いはありません。コンテナは、同じツールでデプロイおよび管理される軽量のVMになります。Photon OSは、DockerおよびRocketコンテナー、Docker Swarm、Kubernetes、Mesos、Google Cloud Engine、Amazon EC2など、コンテナーエコシステムのほぼすべての主要部分をサポートします。

私がレビューしたすべてのディストリビューションの中で、VMware Photon OSは最も先見の明があり、現在最も完全で使いやすいようです。あなたがコンテナ化を模索しているVMwareショップなら、私は他に何も考えないでしょう。VMwareショップでない場合でも、PhotonOSは一見の価値があります。

コンテナオペレーティングシステムの比較

Alpine Linuxは、そこにあるほとんどすべてのDockerイメージを支えています。組み込みアプリケーションに最適なAlpineLinuxは、コンテナーを実行する方法と考えるべきではありません。代わりに、ある意味で、AlpineLinuxコンテナです。Alpine Linuxでのアプリケーションの構築に精通している開発者は、より優れたコンテナアプリケーションを作成します。

初期のコンテナオペレーティングシステムの1つであるCoreOSは、Googleテクノロジースタックを採用しています。これは、信頼できる、しかし意見のある、コンテナインフラストラクチャを管理する方法を提供します。 CoreOSは多くのコンポーネントをオープンソースとして利用できるようにしますが、このような大規模なスタックの学習は複雑であるため、ユーザーは本番環境に展開するために独自のTechtonicオーケストレーションシステムを購入する必要があります。お金に問題がなく、Googleサイズのアプリケーションをデプロイする必要がある場合は、CoreOSが論理的な選択です。

RancherOSは純粋なコンテナです。独自のコンテナインフラストラクチャを展開する場合、または最小限のコンテナ管理スタックが必要な場合は、RancherOSから始めてください。Docker Swarm、Kubernetes、Mesosなどのオープンソースのオーケストレーションおよびスケジューリングツールがすべて無料で利用できるため、Rancherスタックはオープンソース指向の日曜大工企業にアピールします。

RedHatのProjectAtomicは、企業がインフラストラクチャを展開する方法を再構築する包括的なプロジェクトです。この野心的なプロジェクトは、企業がアプリケーションの展開について考える方法を変える可能性がありますが、道のりは長いものです。Project Atomicは、RedHatテクノロジーに多額の投資を行っているアーリーアダプターに最適です。

VMwareのPhotonOSは、そのベンダーの仮想マシン管理テクノロジーと経験をコンテナにもたらします。Photon OSは仮想マシンとして展開され、従来のVMツールで管理されます。VMwareは、おそらく従来のVMの壁に書かれていることを見て、コンテナテクノロジーを心から受け入れ、最先端技術を急速に進歩させています。現在VMwareショップである場合、PhotonOSよりも優れたコンテナプラットフォームを見つけるのは難しいでしょう。

コンテナLinuxのレビューを読む: 

  • レビュー:AlpineLinuxはDocker用に作られています
  • CoreOSレビュー:コンテナとKubernetes用のLinux
  • RancherOS:Docker愛好家のためのよりシンプルなLinux
  • レビュー:RedHatはDockerを難しい方法で実行します
  • レビュー:VMwareのPhotonOSがDockerコンテナに最適