AWS運用 Docker編 ECS入門
AWSフルマネージド型のコンテナオーケストレーションサービスである ECS をご利用されてますでしょうか? docker-compose などで EC2 を利用した運用から ECS への切替を検討しても、実際に使用するのにハードルがあったりして難しい場合もあるのではないでしょうか。
自分も初めて触った時は苦労しました。せっかくなので今回は ECS をこれから利用されたい、学習されたい方向けによくある構成を説明していきたいと思います。
目次
AWS運用 Docker編 1 – ECSの構成、概要
今回の構成イメージは以下になります
- ECR というレポジトリにコンテナイメージを登録します。
- ECR のイメージを利用して Dockerコンテナ を ECS クラスターで起動します。
- WEBサービスではドメインのエンドポイントがコンテナになるようにルーティングします。
構成図では以下のようになります。次の項目から概要を説明していきます。
AWS運用 Docker編 2 – ECRへコンテナイメージを登録する
これまで Docker を使っていた方には馴染みやすいサービスかと思います。
ECR でリポジトリを作成します。
リポジトリ作成後にチェックを入れてプッシュコマンドの表示をクリックします。
ECR に push するためのコマンドが確認できます! 便利ですね!
コマンドに沿って ECR 権限の IAM がついた端末から push することができます。 Dockerfile をご用意の上お試し下さい。
無事に push できるとリポジトリ内にイメージがあることが確認できます。
AWS運用 Docker編 3 – ECSクラスター作成
ECS のクラスター( ECS で使用する EC2 グループの概念)を作成します。
ここでは EC2 Linux + ネットワーキング のテンプレートで作成します。空のクラスターにチェックを入れるとクラスターだけを作成できます。
より理解を深めるためにクラスターだけ作成して後から EC2 を参加させてみます。
EC2 が入っていない、空のクラスターが作成できたことが確認できます。
ECS 用の AMI からインスタンスを起動、ユーザーデータに /etc/ecs/ecs.config に所属させるクラスターを記載することで、クラスターに EC2 を参加させます。
(起動後に SSH 接続後、編集することでも可能です)
しばらくすると EC2 がクラスターに参加できていることが確認できます。
AWS運用 Docker編 4 – ECSタスク定義とサービス設定
ECSで一番分かりづらいなと感じたのが、ECS のタスク定義とサービスについてでした。自分では以下の考え方が一番しっくりきました。
タスク定義・・・どの Dockerイメージ をどのような設定で使うか、コンテナの定義。
サービス・・・タスク定義とECSクラスターの紐付け。
タスク定義で ECR のイメージを使用したり、別の場所にあるイメージを使用することができます。サービスの定義で作成したタスク定義を動かすクラスター及び ALB を設定できます。
そこまで出来たら DNS で ALB に名前解決させたり、ALB 前段に CloudFront を挟むなどすることでコンテナにあるアプリケーションを公開することができます。
AWS Docker運用について
ECS を使った AWS Docker 運用はコンテナのスケーリングや EC2 のスケーリングもAWSコンソールで完結できるのも強みです。
大規模なサービスで docker を使用されたい場合候補に入れてみてはいかがでしょうか!
元記事発行日: 2020年09月09日、最終更新日: 2024年02月28日