コンテナはどこで動くのか?
コンテナは単体で動くものではありません。
本質は「隔離されたプロセス」であり、必ずOSの上で実行されます。
つまり、コンテナを動かすには 実行基盤となるマシン(物理 or 仮想サーバー) が必要です。
クラウドでは、この実行基盤をサービスとして利用します。
AWSの場合は:
- Amazon EC2(サーバーを自分で管理)
- AWS Fargate(実行基盤の管理をAWS側に任せる)
どちらも裏側ではマシンが存在しており、違いは「誰が管理するか」です。
この前提を押さえると、ECSやFargateの役割が整理しやすくなります。
ECSとは(管理レイヤー)
Amazon ECS は、コンテナを管理するためのサービスです。
ECS自体がコンテナを直接動かすわけではなく、次のような役割を担います。
- どのコンテナを動かすか(タスク定義)
- いくつ動かすか(スケーリング)
- どこで動かすか(EC2 or Fargate)
- 障害時にどう復旧するか
つまりECSは、コンテナの“実行場所”ではなく、コンテナの状態をコントロールする司令塔です。
実際に動かす基盤はEC2やFargateですが、それらを統括して「望ましい状態を保つ」のがECSの役割です。
実行基盤の違い(EC2 / Fargate)
コンテナを実際に動かす基盤には、主に次の2つがあります。
- Amazon EC2
- AWS Fargate
違いはシンプルで、サーバーを誰が管理するかです。
EC2の場合
- 仮想サーバーを自分で用意
- OSやパッチ管理も自分で行う
- インスタンスタイプを自由に選べる
柔軟性は高いですが、運用責任も大きくなります。
Fargateの場合
- サーバーを意識しない
- CPU・メモリを指定するだけで実行
- OS管理は不要
インフラ管理を抽象化し、コンテナ実行に集中できます。
ECRとは(保管場所)
Amazon ECR は、コンテナイメージを保存するためのレジストリサービスです。
Dockerイメージをビルドしたあと、
- 開発環境からECRへ push
- ECS(EC2 / Fargate)がECRから pull
- 取得したイメージを実行
という流れになります。
ECRはコンテナを動かすサービスではなく、あくまで イメージの保管場所(倉庫) です。
実行はEC2やFargate、管理はECS、その元になる“設計図”を置いておくのがECRの役割です。
まとめ
ECSはコンテナの状態を管理する司令塔であり、EC2やFargateは実際にコンテナを動かす実行基盤です。
ECRはその元になるイメージを保管する場所であり、これらを「管理・実行・保管」というレイヤーで捉えると関係性が整理できます。