下林明正のブログ

個人的かつ雑多なブログです。

Debian 10 Busterでsam build --use-containerが何故かうまくいかなかったので対処した話

sam build --use-container でうまくいかなかったので --debug オプションを付けて実行してみる。

$ sam build --use-container --debug
(中略)
Fetching lambci/lambda:build-ruby2.5 Docker container image...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Mounting /XXX as /tmp/samcli/source:ro,delegated inside runtime container
Container was not created. Skipping deletion
(中略)
    raise RuntimeError("Container does not exist. Cannot get logs for this container")

なんでdocker pullしてる風なのにContainer was not createdなの??というところで色々調べて試してみるも特に進捗無く。ふと一旦手元で docker run lambci/lambda:build-ruby2.5 してみたらなんか分かるかもと思ってやってみると、

$ docker run lambci/lambda:build-ruby2.5
Unable to find image 'lambci/lambda:build-ruby2.5' locally
build-ruby2.5: Pulling from lambci/lambda
d7ca5f5e6604: Pull complete
745afe780cd1: Extracting [==================================================>]  356.8MB/356.8MB
3cda603d3b93: Download complete
3de12da50428: Download complete
docker: failed to register layer: Error processing tar file(exit status 1): write /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1: no space left on device.
See 'docker run --help'.

新しい情報が増えた。dfしてもストレージに空きはあるように見えるので no space left on device. ってのはよく分からんので、それをキーワードに調べているととりあえず要らないコンテナとか消せということなので何も考えずに消してみる。

qiita.com

ふむふむ。 別に大したものを実行してないしこれでそんなにストレージ?が空くとは思えないんだけど……。

$ docker run lambci/lambda:build-ruby2.5
Unable to find image 'lambci/lambda:build-ruby2.5' locally
build-ruby2.5: Pulling from lambci/lambda
d7ca5f5e6604: Pull complete
745afe780cd1: Pull complete
3cda603d3b93: Pull complete
3de12da50428: Pull complete
Digest: sha256:99c6630faf749f99d18cf7369fe9a25551b1214256c69364126cf9de62bbb1d2
Status: Downloaded newer image for lambci/lambda:build-ruby2.5
docker: Error response from daemon: No command specified.

うまくいった、不思議。Dockerの仕組みをちゃんと分かっていればなにか分かるのかも知れない。

再度 sam build --use-container したら普通にうまくいった、良かったですね。 ググる前に自分でちゃんと手を動かしたほうが早いパターンだった。