プラットフォーム プラットフォーム記事一覧へ

[ITリーダーが知るべきコンテナ技術]

コンテナ技術の“本質”を簡潔に理解する【第2回】

2017年4月7日(金)三木 雄平(レッドハット テクニカルセールス本部エンタープライズソリューションアーキテクト部 部長)

前回はコンテナを取り巻く現在の状況と、その重要性について解説しました。今回はもう一歩深く、コンテナの技術に踏み込んでみます。あくまで技術概要を知ることが目的であり、細かなメカニズムや実際のオペレーションについては言及しない点は、ご了承ください。

 前回、デジタル時代のシステム(サービス)開発、つまりSoE(Systems of Engagement)の開発にあたって、採用が必須になりつつあるコンテナ技術の意義を説明しました。繰り返しトライし、迅速に修正するためにスピードが最重要であること、そのためにDevOpsという取り組みが広がっていること、DevOpsの実践にはデプロイメントが鍵になり、それを実現するのがコンテナ技術だということでした。今回はコンテナの技術的側面に少しだけ踏み込みます。

「Docker」はコンテナではない

 UNIXやLinuxに詳しい方ならご存知ですが、実はコンテナという技術自体は決して新しいものではありません。旧Sun Microsystems(現在の米Oracle)の「Solarisコンテナ」や「Linuxコンテナ」など、それぞれに名前は違いますが様々な技術があり、利用されてきました。いずれも、1つのOS上に隔離された複数の区画領域を用意し、アプリケーションを実行するための技術です。

 「隔離された複数の区画領域」というと難しく聞こえますが、要は次のようなものです。コンテナなしでは、1つのOS上で動く複数のアプリケーション(その開発者)から見えるシステム環境は同一です。例えばファイルを格納するディレクトリは共有ですし、サーバーに設定された同じIPアドレスで通信します。サーバー上のOSの管理下で複数のアプリケーションが同時に起動している状況がこれに当たります。

 この場合、あるアプリケーションから別のアプリケーションが使用しているシステム資源、例えばディレクトリを見ることができます。IPアドレスも同じものを使います。同じOS上で動いているから当然ですが、これではセキュリティ上の問題が生じる可能性があります。

 これに対しコンテナ技術を使用すると、OSやディレクトリ、IPアドレスなどのシステム資源を、個々のアプリケーションが占有している状況にできました。とは言っても、少し便利なOSの1機能という程度であり、少し前までのコンテナは、どちらかと言えば、ひっそりと限定されたエンジニアに利用される技術にすぎませんでした。

 そこに改良を加えて登場したのが「Docker」です。コンテナを利用する先進企業の1社だったDotCloud(Docker)が、自社のPaaS(Platform as a Service)の顧客を獲得するために開発しました。元々はエンジニアに馴染みのある技術を使って、アプリケーションを簡単にDotCloudのPaaSに移植し、実行可能にするために設計されましたが、これがコンテナを利用したデプロイの有効性を示すことになったのです(図1)。

図1:「Docker」の役割。開発したアプリケーションのデプロイメントを容易にする図1:「Docker」の役割。開発したアプリケーションのデプロイメントを容易にする
拡大画像表示

 しかも同社は2013年、Dockerをオープンソースとして公開します。これにより、多くのエンジニアや企業から評価・支持されてコンテナ管理技術のデファクトになったのです。これが現状につながっています。このことから明らかなように、Dockerはコンテナそのものではありません。「Docker = コンテナ」として語られていることも多く、勘違いしている方も少なくないので否定しておきます。正しくは「Docker = コンテナの管理技術 」です。

Dockerの価値は「イメージ化とポータビリティ」

 もう少し詳しく見てみましょう。前述の通り、Dockerはコンテナの管理技術です。基本的には「Linuxコンテナ」というLinuxカーネルで提供されている既存技術をうまく活用したものであり、技術的には、それほど先進的だとは言えません。そんなDockerが、多くのエンジニアや企業の支持を得られたポイントは、「イメージ化とポータビリティ」というアイデアを具現化したためだと言えます。

バックナンバー
ITリーダーが知るべきコンテナ技術一覧へ
関連記事

コンテナ技術の“本質”を簡潔に理解する【第2回】前回はコンテナを取り巻く現在の状況と、その重要性について解説しました。今回はもう一歩深く、コンテナの技術に踏み込んでみます。あくまで技術概要を知ることが目的であり、細かなメカニズムや実際のオペレーションについては言及しない点は、ご了承ください。

PAGE TOP