このサイトは、特にやりたいこともなく無気力に生きる汚い中年おじさんデザイナー佐藤文彦のポートフォリオサイトです。
応援よろしくお願いします。

ECS Fargateにdockerイメージを利用してコンテナを立ててみる為のメモ

2020/10/14

ECS Fargateにdockerイメージを利用してコンテナを立ててみる為のメモです。
自分用のメモなので、手順だけ書いています。

前提

VPCやサブネットは作成ずみ。

dockerイメージを作成する

適当なフォルダを作成。

$ mkdir ecs_sample
$ cd ecs_sample

Dockerfileを作成。
nginxのdockerコンテナを作成する為のイメージ。

FROM nginx:latest

COPY ./src /usr/share/nginx/html

srcディレクトリと表示確認用にhtmlを作成。

$ mkdir src

src/index.htmlの中身は何でもよい。

Hello!

dockerイメージを作成する。

$ docker build . -t ecs-test$

イメージが作成できているか確認。

$ docker images

REPOSITORY                                                            TAG                 IMAGE ID            CREATED             SIZE
ecs-test                                                              latest              7fdbd8fef5df        26 seconds ago      132MB

ローカルでdockerイメージからコンテナを起動してみる。
オプションの--rmはコンテナを停止したら、コンテナを削除する指定。

$ docker run --rm -p 8080:80 ecs-test -d

http://localhost:8080/で「Hello!」と表示されていればOK。

ECRにイメージを登録

作成したdockerイメージをECRに登録します。
ECRに登録したイメージはECSから利用することができます。

まずは登録用のリポジトリを作成(githubのリポジトリみたいなもの)。

ECRにイメージを登録

作成したリポジトリに、イメージをpushします。
push方法は、「プッシュコマンドを表示」のコマンドを実行していくだけです。

ECRにイメージを登録

イメージがプッシュされるとリポジトリに以下のように表示されます。

ECRにイメージを登録

ECSを作成

クラスターを作成

クラスター > クラスターを作成 > ネットワーキングのみ(AWS Fargateを使用)を選択して「次のステップへ」

クラスター名と、タグだけ設定して「作成」。

クラスターを作成

クラスターが作成される。

クラスターを作成

タスクを作成

タスクとはdocker-composeみたいなもの。

タスク定義 > 新しいタスク定義を作成 > FARGATEを選択して「次のステップへ」。

タスクの設定はこんな感じ。
タスクの実行 IAM ロールは初めての場合は、「新しいロールを作成」を選択すると自動で「ecsTaskExecutionRole」ロールが作成される。

タスクを作成

コンテナを追加します。
イメージには、ECRで登録したイメージのURI、 もしくはngins:latestのようにdocker hubにあるイメージを指定することもできる。

タスクを作成

タグ(Name:ecs-sample-taskとか)だけ追加して「作成」ボタンを押す。

サービスを作成する

サービスはクラスターとタスク定義を結びつけるようなもの。

クラスター > 作成したクラスタ > 「サービス」タブ > 「作成」を押す。

サービスを作成する

以下のような設定をして 「次のステップへ」を押す。

サービスを作成する

VPCやサブネット、セキュリティグループ(インターネットにつながる)を設定して「次のステップへ」を押す。

サービスを作成する

Auto Scaling はそのままの設定で「次のステップへ」を押し「サービスの作成」を押す。

サービスが作成され、「タスク」が起動します。
コンテナが起動すると、ステータスがRUNNINGになります。

サービスを作成する

タスクのパブリックIPから表示を確認することができます。

サービスを作成する

カテゴリ

新規記事