The Doppler Quarterly (日本語) 春 2018 | Page 61

「私に反対する人の論法は、 何が世界を支えているのかという質問に『亀』、 そして『その亀は何に支えられているのか』 という質問に 『別の亀』 と答えた異教徒のことを思い出させます。 これと同じように、バーカーさんも無限後退に陥っている のではないですか。」( 熱烈かつ大きな称賛 ) を活用することによって、基盤となるハードウェアとは無関係 に - Second Evening: バーグ牧師 / 博士の言葉 が、 IBM 360 や 370、 CP/CMS のタイムシェアリングオペレー コンテナーのことを知っている人は、それがアプリケーション を仮想化してハードウェアから分離するためのさらにもう 1 つ の方法であると考えているかもしれません。しかし何より、コン テナーは、最新のクラウドネイティブアプリケーションの開発 者の大部分が顧客に迅速に価値を提供するために使用してい る、進化を続ける数多くのツールやテクノロジーのもう 1 つの 分散したオペレーティング環境全体を動作させることができる ようになりました。とはいえ、仮想化は何ら新しいものではあり ません。メインフレームでは、 1960 年台の終わりから 1970 年 代の初めに IBM 社が開発したタイムシェアリングシステムで 数十年にわたって仮想化が使用されてきました。それ以前のメ インフレームコンピューターはシングルユーザーシステムでした ティングシステムなどの革新的な製品によって画期的なテクノ ロジーが市場に投入され、シングルユーザーコンピューターか らマルチユーザーシステムやマルチタスキングシステムへのシフ トが起きました。その後、 x86 プロセッサーと MMU が登場し、 VMware 社のハイパーバイザーテクノロジーが商用化されたこ とで、メインフレーム仮想化は広く普及しました。 レイヤーとしての役割を果たしています。これについて、 Inter- 現在、 Docker とコンテナーテクノロジーが大ブームとなってい continental Hotels Group の CIO である Eric Pearson 氏 ますが、コンテナーが VM に代わるものであると混同されてい は、次のように簡潔に述べています。 るケースは少なくありません。それどころか、コンテナーは、 VM 「戦いとは、もはや大規模な組織が小規模な組織を しのぐのではなく、迅速に対応できる組織が 対応の遅い組織を打ち負かすということなのです。」 クラウドネイティブアプリケーションを構築したことがある人の 誰もが知っているように、クラウドへの移行はコストを最適化 するということではなく、デリバリのスピードとアジリティを向 上させることであり、コンテナーは先進的なアプリケーション の構築方法を進化させています。またそれは氷山の一角であ り、オープンソースによってかつてないほどイノベーションが促 進されています。読者の皆さんは、 IT プロフェッショナルとして コンテナーがなぜ重要なのか、そしてそれらが仮想化や巨人 の肩の上に構築されているエコシステムとどのような関係にあ るのかを理解しておく必要があります。 VM とコンテナー 仮想マシン (VM) は、 IT 業界に大きな革命をもたらしてきま した。主要な製品としては、 VMware ESX ハイパーバイザー、 OpenStack の基 盤である Linux KVM ハイパーバイザー、 Microsoft Hyper-V、そして主に AWS IaaS の基盤となって いる Xen ハイパーバイザーなどがあり、多くの組織は、これら で動作しているかベアメタルサーバーで起動したかどうかに かかわらず、どのようなオペレーティングシステムでも問題なく 実行できます。そしてむしろコンテナーは、アプリケーションの ランタイム環境とその依存関係を基盤となる OS カーネルから 分離するための手法であり、そうすることでソフトウェアのポー タビリティの問題に対処します ( 図 1 を参照 )。コンテナーは、 1 回作成すればどこでも実行することが可能です。 コンテナーの中核をなす Docker は、 Linux コンテナー (LXC) 上に構築されます。Linux コンテナーは、 ( メモリ上限や優先 度などで ) 一連のリソースの使用量の上限を制御して名前空間 を提供する、 cgroups で構成されます。これらの制御により、 PID のような構成要素の分離、ルートファイルシステム ( コン テナーに chroot された書き込み可能なスナップショット )、お よびプライベートユーザー/ グループ ID の領域を通じて、一 連のプロセスに効果的に独自のサンドボックスが提供されま す。Docker コンテナーは、これらの Linux カーネル機能、お よびコードとその依存関係のすべてを Docker 対応マシン内 で移動させることができる単一のアーチファクトにバンドルす ることが可能なアプリケーション指向のパッケージングシステ ムをベースに構築されます。さらに、オブジェクト指向プログラ ミング言語のオブジェクトと同じように、コンテナーはレイヤー 2018 年春号 | THE DOPPLER | 59