コンテナはエンタープライズテクノロジの鍵となります
2016年の早い段階で、500を超えるITオペレーションと開発者を対象にアンケートを実施し、アプリケーションの構築方法をなどについてエンタープライズアプリケーションチームの主要な鍵となる要素を調査/集計しました。3つの主要なエンタープライズイニシアチブには、クラウドの採用、マイクロサービス、およびDevOpsが含まれています。
コンテナは、アプリケーションの新しいアプローチを用い、アプリケーションとすべての依存関係をパッケージ化し、機敏性、可搬性、制御性を実現するソフトウェアです。
近年のテクノロジの環境変化
2000年以前〜それ以降で主流であった大型なモノリシックなシステム構成は、近年ビジネス変化のスピードに順応していく必要性により小型化、疎結合化されています。現段階においてその環境をより適切に効率的に実現するテクノロジーがコンテナであると言えます。
コンテナとは
コンテナは、実行する必要があるすべてのファイルシステム(コード、ランタイム、システムツール、システムライブラリなど)を含む完全なファイルシステム内のソフトウェアを包括しています。
すべてをコンテナ内にカプセル化し隔離することで、実行中の環境にかかわらずコンテナは常に同じものを実行することが保証されます。
コンテナはコンテナイメージから構築されます。コンテナイメージは、union filesystemを使用し、複数のレイヤーで構成されています。
”docker run”コマンドを実行すると、コンテナエンジンは指定されたイメージからコンテナを起動します。コンテナエンジンには、新しいコンテナの作成、既存のコンテナのスケーリング、停止、削除など、すべてのコマンドが含まれています。
docker run ubuntu:14.04 echo "Hello World"
docker run ubunto ps ax

コンテナは仮想化の替わりになるか?
何年もの間、エンタープライズチームは仮想化テクノロジを利用してIT環境を最適化してきました。仮想化はアプリケーションのパッケージ化と実行の現実解と見なされていますが、VMは重く動作する為にOSすべてが必要です。
コンテナのアーキテクチャは、VMや軽量VMとはまったく異なります。次の図は、コンテナと仮想化の主な違いを示しています。コンテナはホスト上でOSカーネルを共有し、仮想化では各VMはVM内にOSのフルコピーを保持しています。
コンテナと仮想化が互いに排他的であるという意味ではありません。コンテナは、コンテナランタイムがインストールされている環境(vSphere、Hyper-VのVMやAWS、Azure、Googleなどのクラウドも含む)であればどこでも実行できます。また、コンテナはアプリケーションを再コーディングすることなく、任意の環境から別の環境に移植可能であることを特徴としています。
さらに、多くのユーザーがコンテナを既存の仮想インフラストラクチャに追加して、VMごとに可能なワークロードの密度を向上させています。一部のエンタープライズチームは、インフラストラクチャの最適化で20倍の密度を実現しました。
便利なコンテナを効率的に管理する
コンテナは、アプリケーションを集約して実行することに適していますが、本番環境ではダウンタイムが発生しないようコンテナを管理する必要があります。例えばコンテナがダウンした場合には、即座に他のコンテナを起動しなければなりません。このような動作があらかじめシステムに組み込まれていればコンテナの管理が容易になります。これを助けてくれるソフトウェアがオーケストレータであり、オープンソースであるKubernetesが広く使われています。
Kubernetesをはじめとしたこれらオープンソースのコンテナソリューションに、Mirantisではさまざまなサブスクリプションサポートを提供しています。