LoginSignup
0
0

More than 1 year has passed since last update.

ECSでコンテナ実行メモ その2

Last updated at Posted at 2022-01-30

概要

前回の記事の後ECSでコンテナを動かそうとしましたが、Essential container in task exited のメッセージがでてうまくコンテナが起動できず、またこちらのアプリを使って構築してみようとしましたが、同様にうまくいかなかったので、まずはこちらを参考にECSでコンテナを動かすところだけをまとめてみました。

タスク定義登録

  • まずタスク定義を登録します。ここで使用するコンテナのイメージなどを設定します。AWSコンテナ設計・構築入門 のほうではFARGATEで作成していますが、今回はEC2で実施します。

タスク_0.png

タスク_1.png

  • コンテナ作成を選択してイメージは httpd を設定します。ホストポートとコンテナポートはここでは 80 にしていますが、docker run -dp で指定するポートを設定します。

コンテナ_1.png

クラスターの作成

  • EC2 Linux+ネットワーキング を選択します。インスタンスタイプは今回お試しなのでt3.micro を指定します。
    クラスター_1.png
    クラスター_2.png

  • ネットワーキングは以前作っていたVPCを指定しています。サブネットも同様です。本来ならここでMulti-AZになるように複数サブネットを指定します。外部からつなげられるように確認するためセキュリティグループは作成していますが、事前に作成した方がよさそうです。
    クラスター_3.png

  • CloudWatch Container Insightsは状況の確認に使えるのでオンにしておいた方がよさそうです。
    クラスター_4.png

サービスの作成

  • 最後にサービスを作成します。ここで起動するコンテナの数やロードバランサーの設定などを行います。今回は特に設定はしません。 サービス_1.png サービス_2.png サービス_3.png
  • 前回のステータスが RUNNING になるまで待ちます。起動できないとここが PENDING となってしまい最終的に Stopped の方に表示されます。 サービス_4.png

動作確認

  • EC2インスタンスが起動しているのでパブリックIPを確認しアクセスをすると以下のような画面が表示されます。 起動確認.png

最後に

実施しようと思った自分でECRに登録したコンテナの起動には失敗しましたが、ECSでの動かし方を整理することができました。
起動に失敗している原因を調べてうまく動かせるようになったらまた新たに記事を起こそうかと思います。
CloudWatchlogsでは以下のように出ていたのでコンテナ起動時に何か問題が起こっているようですが・・・

-----------------------------------------------------------------------------------------------------------
|   timestamp   |                                         message                                         |
|---------------|-----------------------------------------------------------------------------------------|
| 1643522208791 | internal/fs/utils.js:269                                                                |
| 1643522208791 |     throw err;                                                                          |
| 1643522208791 |     ^                                                                                   |
| 1643522208791 | Error: ENOENT: no such file or directory, mkdir '/etc/todos'                            |
| 1643522208791 |     at Object.mkdirSync (fs.js:921:3)                                                   |
| 1643522208791 |     at Object.init (/app/src/persistence/sqlite.js:10:12)                               |
| 1643522208791 |     at Object.<anonymous> (/app/src/index.js:17:4)                                      |
| 1643522208791 |     at Module._compile (internal/modules/cjs/loader.js:999:30)                          |
| 1643522208791 |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)           |
| 1643522208791 |     at Module.load (internal/modules/cjs/loader.js:863:32)                              |
| 1643522208791 |     at Function.Module._load (internal/modules/cjs/loader.js:708:14)                    |
| 1643522208791 |     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12) |
| 1643522208791 |     at internal/main/run_main_module.js:17:47 {                                         |
| 1643522208791 |   errno: -2,                                                                            |
| 1643522208791 |   syscall: 'mkdir',                                                                     |
| 1643522208791 |   code: 'ENOENT',                                                                       |
| 1643522208791 |   path: '/etc/todos'                                                                    |
| 1643522208791 | }                                                                                       |
-----------------------------------------------------------------------------------------------------------
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0