コンテナとは?

コンテナ化はアプリケーションレベルでの仮想化の一種で、一つのカーネル上でユーザーごとに分離された複数インスタンスの動作が可能になります。これらのインスタンスはコンテナと呼ばれます。
コンテナは、アプリケーションのコード、実行環境、ツール、ライブラリ、設定ファイルを一つのインスタンスにパッケージ化して提供します。また、ハードウェアにインストールされている一つのカーネル(オペレーティングシステム)は複数のコンテナで共有されます。

コンテナのメリット

  • 軽い動作
    コンテナは、仮想マシンよりもサーバー上で使用するスペースが少なく、起動にかかる時間はわずか数秒です。
  • 弾力性
    コンテナは非常に弾力性があり、常に一定量のリソースを割り当てておく必要はありません。一つのコンテナに対する需要が減少すると、余分なリソースは他のコンテナによって使用できるよう解放されます。これによって、コンテナはサーバーからのリソースをより効率的かつ動的に使用することができます。
  • 密度
    一つの物理サーバーが一度に実行できるオブジェクトの数を密度とすると、コンテナ化により、サーバーのリソースをフルに活用する高密度環境が可能になります。従来の仮想化と比較して、それぞれのコンテナでオペレーティングシステムをホストする必要がないため、より高密度の環境が可能になりします。
  • パフォーマンス
    負荷が高い場合、アプリケーションのパフォーマンスはハイパーバイザーよりもコンテナの方がはるかに優れています。従来の仮想化では、それぞれのゲスト OS 用にメモリが必要にあるため、その分アプリケーションで利用可能なメモリは減ることになります。
  • 運用容易性
    オペレーティングシステムのカーネルが一つの場合、すべてのコンテナに変更が反映される、オペレーティングシステムレベルでの更新またはパッチの適用は一回だけで済みます。これにより、サーバーの運用保守の効率が向上します。
  • コンテナオーケストレーションとは?

    アプリケーションをサポートするためのコンテナの配置や構成はコンテナオーケストレーションと呼ばれ、これはコンテナオーケストレーションツールによって実行されます。いくつかの人気のあるオープンソースのコンテナオーケストレーションツールにとして、Kubernetes、Docker Swarm、LXC などがあります。

    コンテナの利用シーン

    頻繁に変更があり、すばやく再デプロイする必要があるアプリケーションのほとんどは、コンテナ化に適しています。 マイクロサービスアーキテクチャを使用するアプリケーションにとってもコンテナ化は自然な選択です。
    Alibaba Cloud は Containers as a Service としてContainer Service for Kubernetesを提供しています。

    関連情報