Docker/Dockerfile

終了したコンテナに入ってデバッグしたいとき

YOOANT 2026. 3. 13. 00:10
🧑🏻 プログラミングにおいて、途中で正しく動作しているか確認する習慣は非常に重要です。
あるコマンドを入力した後、そのコマンドが正常に実行されたかどうかを確認する方法を常に探る必要があります。

この習慣が身に付くと、どんなコマンドを実行しても、その仕組みを深く理解できるようになります。
また、エラーが発生してもすぐに発見できるため、デバッグが格段にスムーズになります。

 

Docker を使用すると、ほとんどのコードがコンテナの内部で動作します。

そのため、どのような過程で処理されたのか、正常に処理されたのかが直接目に見えにくく、それが Docker 学習の難しさの一因となっています。

これを解決するために、 2 つの方法があります。

  1. docker logs を活用してコンテナのログを確認する
  2. docker exec -it を活用してコンテナ内部に直接入ってみる

しかし、上記のうち docker exec -it は実行中のコンテナにのみ使用できるコマンドです。

終了したコンテナに対して実行すると、エラーが発生してしまいます。

カスタムイメージを作成してコンテナを実行する場合、Docker の特性上、メインプロセスの処理が終了するとコンテナも即座に終了してしまいます。そのため、内部でどのようにファイルや環境が構築されたのかをデバッグするのが困難です。

どうすればよいでしょうか?

以下のように Dockerfile を修正することで解決できます。

FROM node

# 500秒間システムを一時停止させるコマンドを追加
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]

 

このコマンドを追加することで、コンテナがすぐに終了するのを防ぐことができます。

コンテナが起動している間に docker exec -it を活用して内部に入り、デバッグを行うのができます。

'Docker > Dockerfile' 카테고리의 다른 글

Spring Bootを Dockerで実行  (0) 2026.03.15
ENTRYPOINT  (0) 2026.03.15
COPY : ファイルのコピー  (0) 2026.03.13
ベースイメージの指定  (0) 2026.03.12
Dockerfile とは?  (0) 2026.03.12

日本語