DockerHubにあるexpressのイメージをECSで動かす

  • 2020.06.07
  • AWS
DockerHubにあるexpressのイメージをECSで動かす

EKSを導入することになったので、コンテナの復習としてECSの使い方をメモ。80番ポートにアクセスすると文字列を返却する超簡単なexpressのイメージを作成しているので、今回はそれを使う。

イメージをローカルで動作確認

以下コマンドで、コンテナが立ち上がる。ブラウザでlocalhostにアクセスすると、「Hello World」と表示される。–nameの箇所は任意。

docker run --name express-test -d -p 80:80 hisamitsu/nodejs-sample:latest

確認できたら、以下コマンドでストップ

docker stop express-test

ECSの構築

ECSには大きく、タスク、サービス、クラスタの三つの概念がある。

  • タスク:Dockerコンテナの起動設定を行う。複数のコンテナをまとめて管理できる。Docker Composeのようなイメージ。
  • サービス:ALBやAutoScalingに紐づけるタスク群。これらが不要であればサービスを容易せず、タスク単体でアプリケーションを動かすことも可能。
  • クラスタ:タスクを配置するEC2インスタンス群。

今回は、特に本番で使うわけでもないので一旦サービスは作らない。また、本来はCloudFormationでコード化した方が良いが、一旦コンソールでポチポチ作る。

クラスタの作成

  • ECS画面から「クラスターの作成」を選択
  • 「ネットワーキングのみ」を選択
  • クラスタ名を適当に入力。VPCは使用したいものがなければ新規作成

タスクの作成

  • 先ほど作成したクラスタを選択し、「タスク」タブから「新しいタスクの実行」を選択
  • 「起動タイプへ切り替える」を選択し「FARGATE」を選ぶ
  • クラスターVPC、サブネットを選択。サブネットは今回はパブリックになっているものを選ぶ。
  • 以下のように「RUNNING」が表示されればOK。

アプリケーションにアクセスしてみる

実行したタスクのリンクをクリックすると、パブリックIPが記載されているので、このIPをブラウザに入力。ブラウザに「HelloWorld」と入力されればOK。