LoginSignup
2
0

More than 5 years have passed since last update.

AWS Cloud9上に既定で用意されているDockerイメージからコンテナを起動しようとするとExited (1)となる

Last updated at Posted at 2019-02-28

AWS Cloud9で新規作成した環境に標準で用意されているDockerイメージを使ってみようとしたが上手くいかず調査したときのメモ。

AWS Cloud9の環境にはDockerが既定でインストールされており、下記の4つのイメージが標準で作成されている。
これでコンテナを作って使えないかと考えた。

ec2-user:~/environment $ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lambci/lambda       python2.7           b92d1404520d        3 weeks ago         951MB
lambci/lambda       nodejs6.10          6d5686f02fe2        3 weeks ago         996MB
lambci/lambda       nodejs4.3           ce68cbe2ecf8        3 weeks ago         945MB
lambci/lambda       python3.6           659e6b066789        3 weeks ago         1.08GB

しかし、runコマンドでイメージからコンテナを起動しようとすると、立ち上がってすぐにExited (1)となりコンテナが落ちてしまう。

ec2-user:~/environment $ docker run -itd b92d1404520d
7cc7c4396751(略)
ec2-user:~/environment $ docker run -itd 6d5686f02fe2
86e6cb64fa4a(略)
ec2-user:~/environment $ docker run -itd ce68cbe2ecf8
f9ea26de0f5e(略)
ec2-user:~/environment $ docker run -itd 659e6b066789
a32d9cf3042c(略)
ec2-user:~/environment $ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
a32d9cf3042c        659e6b066789        "/var/lang/bin/pytho…"   6 seconds ago       Exited (1) 7 seconds ago                       keen_galileo
f9ea26de0f5e        ce68cbe2ecf8        "/usr/local/lib64/no…"   6 seconds ago       Exited (1) 7 seconds ago                       reverent_tereshkova
86e6cb64fa4a        6d5686f02fe2        "/var/lang/bin/node …"   6 seconds ago       Exited (1) 7 seconds ago                       vigorous_swanson
7cc7c4396751        b92d1404520d        "/usr/bin/python2.7 …"   6 seconds ago       Exited (1) 7 seconds ago                       infallible_ardinghelli

--no-truncオプションでコンテナ起動時に実行されるCOMMANDを全文表示してみると、どうやらAWS Lambdaが関数を実行するときの処理シーケンスのように見える。(http://marcy.hatenablog.com/entry/2016/12/14/115953)

ec2-user:~/environment $ docker ps -a --no-trunc
CONTAINER ID     IMAGE               COMMAND                                                                                                                                                                          CREATED             STATUS                     PORTS               NAMES
a32d9cf3042c(略)   659e6b066789        "/var/lang/bin/python3.6 /var/runtime/awslambda/bootstrap.py"                                                                                                                    7 minutes ago       Exited (1) 7 minutes ago                       keen_galileo
f9ea26de0f5e(略)   ce68cbe2ecf8        "/usr/local/lib64/node-v4.3.x/bin/node --expose-gc --max-executable-size=160 --max-semi-space-size=150 --max-old-space-size=2547 /var/runtime/node_modules/awslambda/index.js"   7 minutes ago       Exited (1) 7 minutes ago                       reverent_tereshkova
86e6cb64fa4a(略)   6d5686f02fe2        "/var/lang/bin/node --expose-gc --max-executable-size=160 --max-semi-space-size=150 --max-old-space-size=2547 /var/runtime/node_modules/awslambda/index.js"                      7 minutes ago       Exited (1) 7 minutes ago                       vigorous_swanson
7cc7c4396751(略)   b92d1404520d        "/usr/bin/python2.7 /var/runtime/awslambda/bootstrap.py"                                                                                                                         8 minutes ago       Exited (1) 8 minutes ago                       infallible_ardinghelli

docker logsでログを見てみる。
これは明らかにAWS Lambda関数の実行に失敗したときのエラー。

ec2-user:~/environment $ docker logs a32d9cf3042c
START RequestId: 010a633a-xxxx-xxxx-xxxx-xxxxxxxxxxxx Version: $LATEST
Unable to import module 'lambda_function': No module named 'lambda_function'
END RequestId: 010a633a-xxxx-xxxx-xxxx-xxxxxxxxxxxx
REPORT RequestId: 010a633a-xxxx-xxxx-xxxx-xxxxxxxxxxxx Duration: 1 ms Billed Duration: 100 ms Memory Size: 1536 MB Max Memory Used: 19 MB

{"errorMessage": "Unable to import module 'lambda_function'"}
ec2-user:~/environment $ docker logs f9ea26de0f5e
START RequestId: 6da74752-xxxx-xxxx-xxxx-xxxxxxxxxxxx Version: $LATEST
Unable to import module 'index': Error
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
END RequestId: 6da74752-xxxx-xxxx-xxxx-xxxxxxxxxxxx
REPORT RequestId: 6da74752-xxxx-xxxx-xxxx-xxxxxxxxxxxx  Duration: 9.35 ms       Billed Duration: 100 ms Memory Size: 1536 MB    Max Memory Used: 22 MB

{"errorMessage":"Cannot find module '/var/task/index'","errorType":"Error","stackTrace":["Function.Module._load (module.js:276:25)","Module.require (module.js:353:17)","require (internal/module.js:12:17)"]}
ec2-user:~/environment $ docker logs 86e6cb64fa4a
START RequestId: 64047b49-xxxx-xxxx-xxxx-xxxxxxxxxxxx Version: $LATEST
Unable to import module 'index': Error
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
END RequestId: 64047b49-xxxx-xxxx-xxxx-xxxxxxxxxxxx
REPORT RequestId: 64047b49-xxxx-xxxx-xxxx-xxxxxxxxxxxx  Duration: 9.66 ms       Billed Duration: 100 ms Memory Size: 1536 MB    Max Memory Used: 27 MB

{"errorMessage":"Cannot find module '/var/task/index'","errorType":"Error","stackTrace":["Function.Module._load (module.js:417:25)","Module.require (module.js:497:17)","require (internal/module.js:20:19)"]}
ec2-user:~/environment $ docker logs 7cc7c4396751
START RequestId: cc72da4b-xxxx-xxxx-xxxx-xxxxxxxxxxxx Version: $LATEST
Unable to import module 'lambda_function': No module named lambda_function
END RequestId: cc72da4b-xxxx-xxxx-xxxx-xxxxxxxxxxxx
REPORT RequestId: cc72da4b-xxxx-xxxx-xxxx-xxxxxxxxxxxx Duration: 0 ms Billed Duration: 100 ms Memory Size: 1536 MB Max Memory Used: 14 MB

{"errorMessage": "Unable to import module 'lambda_function'"}

どうやら私が使おうとしていたDockerイメージは、AWS Cloud9の本来の機能としてAWS Lambda関数の作成、テスト、デプロイを行う際に使用されるイメージで、正規の使い方ではないことをしようとしていたためエラーで落ちてしまっていた、ということでした。

結論として、Cloud9上でDockerを利用したい場合は、外部からpullするか、いちからbuildしましょう。

2
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
2
0