Dockerfileを作っている最中にデバッグするときの基本的な手順

Dockerfileを作っている最中に動作確認中に途中で落ちてしまって、その状態でイメージの中身を確認したい時とかが多々あるかと思いますが
今回はそんなやり方、定番かもしれないですが書いてみようと思います。

まずは適当なDockerfileを作ってビルドします。

このビルド時にエラーが出てイメージの作成が止まったという想定です。

docker buildで失敗すると・・・

docker imagesには

というイメージが出来ています。
こいつは

Dockerfile上のタスク(RUNとかADDとかの単位)で正常に処理が完了した状態が一時的にイメージ化されているものです。
で、docker buildで失敗した状態というのは
docker ps -aで表示される停止しているコンテナが持っています。
なので、このコンテナに入ることが出来れば、失敗の原因を調べる事ができそうですね。

コンテナ状態だと、
例えば

こんな感じの表示にある通り、実行コマンドとして/bin/sh -c 〜〜〜〜というのが書いてあり

普通にdocker startしてしまうと、このコマンドが動いて終わるので

このコンテナを一時的にイメージにしちゃいます。

さらに、イメージ化したものをdocker runします。

これで、docker buildで失敗した時点のコンテナに入る事が出来ました。