Appearance
第2章 Docker関連サービスとコンテナ運用
2.1 ECR(Elastic Container Registry)の役割
ECRは、自分で作成したDockerイメージ(コンテナを作るためのパッケージ)をAWS上で安全に保存・管理するための保管庫(プライベートレジストリ)サービスです。
自分のパソコンで開発したアプリケーションをDockerイメージとして書き出し、それをECRへ送信(プッシュ)して保存します。実際にAWS上でアプリケーションを動かす際には、後述するECSやEKSなどの実行サービスが、このECRから保存されたイメージを取り出してコンテナを起動する仕組みになっています。
2.2 ECS(Elastic Container Service)とFargateによるコンテナ実行
ECSは、AWS上で多数のDockerコンテナを効率よく整理し、起動や停止、監視を行うためのマネージドサービスです。
コンテナを動かす土台として「Fargate(ファーゲート)」という仕組みを組み合わせるのが一般的です。Fargateは、コンテナを実行するための仮想サーバーマシンの管理をすべてAWS側が裏で自動で行ってくれる「サーバーレス」の技術です。これにより、開発者はサーバー自体のアップデートやセキュリティ対策に頭を悩ませることなく、コンテナプログラムを配置するだけで安全に動かすことができます。
2.3 EKS(Elastic Kubernetes Service)の概要
EKSは、大規模なコンテナの群れを高度に連携させて動かすためのシステムである「Kubernetes(クバネティス)」を、AWS上で簡単に使えるように調整したマネージドサービスです。
EKSを使うことで、複数のコンテナ間で複雑な通信を行ったり、アクセス数に応じて自動でコンテナの数を数十倍に増やしたりする作業(オーケストレーション)が簡単になります。前述のECSに比べて設定が複雑ですが、業界標準のKubernetesの知識をそのまま活用できるため、他社クラウドとの連携や、極めて大規模なシステムにおいて選ばれます。
2.4 ECR・ECS・EKSの関係図
コンテナ開発におけるこれら3つのサービスの関係性は、以下のようになります。ローカル環境で作成したイメージをECRに保存し、それをECSやEKSが取り出して実行します。