一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • コンテナの種類について

昨今、コンテナ技術が主流になって来ていますが、使用したことがないため、担当として任された際に対応できるよう、見識を深めたいと思います。

コンテナ周りの技術は、大きく分けると「作る」「動かす」「管理する」「クラウドで使う」というレイヤーに分かれています。
まず最初のレイヤーは、コンテナを作る・実行するための技術です。ここに当たるのがDockerです。Dockerは、アプリケーションとその実行環境をイメージとして作り、それをコンテナとして起動する機能を提供します。開発者が普段触る入口の技術であり、コンテナといえばまずDockerを指すことが多いです。ただし現在では、Docker自体というより、その内部で使われているcontainerdやCRI-Oといった「コンテナランタイム」が実際の実行を担っており、Kubernetes環境ではこちらが直接使われることも増えています。

次のレイヤーは、複数のコンテナをまとめて管理する技術です。ここに該当するのがKubernetesです。Dockerだけでもコンテナは動かせますが、実際のサービスでは複数のコンテナを同時に運用し、負荷に応じて増減させたり、障害時に自動復旧させたりする必要があります。Kubernetesはそうした運用を自動化する仕組みで、コンテナをどのサーバーで動かすか、何個動かすかといったことを全体的にコントロールします。いわば「コンテナのオーケストレーター(指揮者)」です。

さらにその上には、Kubernetesを含めたコンテナ基盤をクラウドで提供するサービスがあります。たとえばAWSのEKS、Google CloudのGKE、AzureのAKSなどです。これらはKubernetesを自分で構築・運用する手間を省き、クラウド上で簡単に使えるようにしたものです。インフラ管理をクラウドに任せつつ、コンテナ運用のメリットを活かせるのが特徴です。また、AWS Fargateのように、サーバー自体を意識せずにコンテナだけ実行できるサービスもあり、これはさらに抽象化された形といえます。

補足として、開発やローカル環境で複数コンテナをまとめて扱うためのツールもあります。たとえばDocker Composeは、複数のコンテナ(データベース、API、フロントエンドなど)を一括で起動・管理するための仕組みで、Kubernetesほど大規模ではないものの、開発環境では非常によく使われます。

このように整理すると、Dockerは「コンテナを作って動かすツール」、Kubernetesは「それを大規模に管理する仕組み」、EKSやGKEは「それをクラウドで簡単に使えるサービス」という関係になります。

The following two tabs change content below.

DSES

最新記事 by DSES (全て見る)

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア