ECSでコンテナを動かしてみる
前回、ECRにコンテナを登録してみました。
ECRにdockerイメージを登録してみる - xdeveloper
今回はECRに登録したコンテナをECSで動かしてみたいと思います。
ECSとは
Amazon Elastic Container Service (ECS) はDockerコンテナの起動、停止、デプロイ、スケーリング、設定を自動化できるフルマネージドなコンテナオーケストレーションサービスです。
これまでコンテナを実行するホストマシン環境は自分で準備する必要がありましたが、ECSを利用するとホストマシン環境を簡単に作成することができます。
またコンテナの起動、停止、デプロイやこれらの自動化もECSより実施することができます。ECSを利用することでコンテナの管理を高品質で効率よく行うことができます。
起動タイプ
コンテナが動作するホストによって起動タイプは「EC2」と「Fargate」があります。
「EC2」はホストマシンがEC2上に作成されます。ホストマシンを複数台作成し冗長化することも可能です。
「Fargate」はホストマシンの管理を完全にAWSに移譲するものです。そのためホストマシンにアクセスすることはできません。
AWSに任せてしまうことでホストマシンに対するセキュリティやリソース状況などの管理を行う必要がなくなります。
タスク/サービス/クラスター
ECSを利用する上で少なくとも知っておく必要がある3つの用語です。
タスク
コンテナの管理(1タスクに複数コンテナ可)
コンテナのリソース、環境変数なども設定サービス
複数のタスクより成り立つ。タスクの起動数の設定。
ELBやデプロイやオートスケールの方法の設定。
ECSでコンテナを起動させてみよう
実際にECSでコンテナを起動してみましょう。
今回は起動タイプをEC2、コンテナは前回作成したApacheのコンテナを利用します。
クラスターの作成
AWSマネジメントコンソールからECSを選択し、メニューのクラスターを選択、「クラスターの作成」ボタンをクリックします。
クラスターテンプレートの選択では「EC2 Linux + ネットワークイング」を選び、「次のステップ」をクリックします。
画面下の「作成」ボタンをクリックします。
タスクの作成
続いてタスクを作成します。
事前にECRでデプロイしたいリポジトリのURIをECRで確認しメモしておきます。
ECSのメニューの「タスク定義」を選択、「新しいタスク定義の作成」ボタンをクリックします。
起動タイプでは「EC2」を選択します。
- タスク定義名・・・適当な名前を入力
ネットワークモード・・・bridge
タスクメモリ・・・512
- タスクCPU・・・512
「コンテナの追加」をクリックします。
「追加」ボタンで「コンテナの追加」を閉じます。
画面下の「作成」ボタンをクリックします。
サービスの作成
サービスを作成します。
ECSのメニューの「クラスタ」を選択、先ほど作成したクラスタを選択します。
サービスタブの「作成」ボタンをクリック。
画面下の「次のステップ」をクリックします。
以降はデフォルトのまま作成します。
しばらく待つとコンテナインスタンスが2つ起動しているのが分かります。
コンテナインスタンスのリンクをクリックします。
コンテナインスタンスの詳細が分かります。
EC2インスタンスよりコンテナが実行されているEC2のインスタンスが分かります。
パブリックIPに記載されているIPアドレスにブラウザからアクセスしてみます。
コンテナ上で動作しているApacheの画面にアクセスできました。