見出し画像

AWSのコンテナ管理サービスを理解する

DockerコンテナをAmazon ECSで立ち上げたくて調べだしたら
あまりに知らない言葉が多すぎて訳が分からなくなったので
実践のまえに用語の理解に時間を割くことにした

AWSのコンテナ関係のサービス

AWSにはDockerコンテナをコントロールするサービスとして
ECS(Elastic Container Service)
EKS(Elastic Kubernetes Service)
の2つの選択肢がある
EKSはそのままKubernetesだが、ECSはアマゾンオリジナルだがDocker Swarmに似たもの
どちらも高度なマイクロサービスのための複雑なコンテナの管理を実現するために生まれたアプリケーションで、コンテナオーケストレーションツールなどとも呼ばれるもの

また、AWSにはDockerコンテナを稼働させるインフラサービスとして
EC2
Fragate
という2つの選択肢がある
EC2は仮想サーバー、Fargateはサーバレスサービス

どのような組み合わせも選択できるがFargate + ECSはセットアップもメンテナンスも簡単で料金も安くすむとのことで、初心者のスモールプロジェクトには最適な選択肢だ

ECSとは

AWSでコンテナを専門にあつかうサービスだ

調べるとよくこんな感じの図を見かけるのだが、ECS自体がこのような入れ子構造をしているのではなく、ECSを利用するためには4種類の定義情報を必要とし、それぞれの扱う概念的な広さが
クラスター>サービス>タスク>コンテナ と広くなってゆく
という意味らしい

コンテナ

Dockerコンテナの事

タスク

コンテナの実行の仕方をいろいろ定義するもの
以下のような内容を指定できるとのことだ

  • タスクの各コンテナで使用する Docker イメージ

  • 各タスクで、またはタスク内の各コンテナで使用する CPU とメモリの量

  • 使用する起動タイプ(EC2かFargateか)

  • タスクのコンテナで使用する Docker ネットワーキングモード

  • タスクで使用するログ記録設定

  • コンテナが終了または失敗した場合にタスクを実行し続けるかどうか

  • コンテナの開始時に実行するコマンド

  • タスク内でコンテナが使用するデータボリューム

  • タスクで使用される IAMロール

サービス

コンテナの管理を自動化するための定義
ロードバランサーを使った負荷分散や、スケーリング、コンテナがクラッシュしたときの再起動、モニタリングの方法といったことをスケジューリングするもの

クラスター

タスクやサービスをひとまとめにしたもので
どのリージョンで起動するか?
どの仮想ネットワークを利用するか?
といったもっとも広い範囲の設定情報を扱うもの

ECRとは

Amazon Elastic Container Registryの略で、コンテナイメージを登録しておくDockerHubのようなもの



この記事が気に入ったらサポートをしてみませんか?