ECSについて
ECSは AWSが提供する、kurbernetes・Swarmに似た、コンテナ管理サービスのうちの1つです。
普段開発環境でDockerを使用している方、kubernetes・SwarmなどでDocker Clusterを構築している方でも、ECS独自の用語などのため、混乱する方が一定数以上いると思います。
ここでは、そのような方を対象に*1、ECSの概要とECSで用いられる用語の概念について説明していきます。
前提として、dockerを使ったことがある人が対象です。
公式ドキュメント
http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/Welcome.html
なにはともあれ、公式ドキュメントをしっかり読みましょう。 ECSは日本語ドキュメントがしっかり用意されているので、効率の面から言ってもまずは日本語資料を読み切ってしまいましょう。
コンテナ
ECSで使われる コンテナ
という用語は、Dockerで使われている コンテナ
と同等の意味ですので、ここでは解説しません。
イメージ
ECSで使われる イメージ
という用語は、Dockerで使われている イメージ
と同等の意味ですので、ここでは解説しません。
タスク定義
普段使っている例で言うと、docker-compose.yml
の記述に近い。
実際に、 ecs-cli
では、 docker-compose.yml
の形式で記述したタスク定義を、ecs-cli compose
コマンドでdeployすることが出来る
タスク
実際の例で説明すると、docker-compose.yml
で定義したタスク定義をインスタンス化したもの。
ECSクラスター上では、タスクを最小単位として、ECの実インスタンス上にタスクが配置される。
スケジューリング
上述のタスクはスケジューリングが出来るため、例えばバッチ処理は、スケジューラでタスクを定期実行することで実現できる。
クラスター
タスクが実行される環境をまとめた概念。 実装上は、複数のEC2インスタンスをグループ化して、同じグループ内では共通インターフェースを通して協調できるようにしたものと言える。
コンテナエージェント
クラスター内のインスタンスでタスクのスーパーバイザーとして動作し、タスクの管理、Docker レジストリからDっockerImageのプル、ECSコンソールや ECS APIを介してのECSからの制御を受け付ける。
まとめ
ECS
はEC2
上で動作するEC2
上では、タスク
のスーパーバイザーとして、コンテナエージェント
が動作しているタスク定義
をテンプレートとして、タスク
が生成され、タスク
を管理しているのがコンテナエージェント
でタスク
はコンテナエージェント
を介して、クラスター
内の他のタスクと協調動作をする
*1:実際は自分の理解の確認とメモという側面が大きいですが