본문 바로가기
강의 실습/비전공자도 이해할 수 있는 Docker 입문 실전

종료된 컨테이너에 들어가서 디버깅하고 싶을 때

by jint 2026. 5. 13.

Docker 사용시 대부분의 코드가 컨테이너 내부에서 작동한다.
어떤 과정으로 처리되고 잘 동작하는지 직접 확인하기 위해 2가지 방법을 익혔다.

1) docker logs 활용해 컨테이너 로그 확인
2) docker exec -it 활용해 실행중인 컨테이너 내부 접속

종료된 컨테이너에 docker exec -it 명령어 실행시 에러가 발생한다.

- Windows PowerShell

PS C:\Users\admin\docker-practice> docker ps -a
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS                          PORTS     NAMES
10b3825e00f9   my-node-server    "/bin/bash -c 'sleep…"   9 minutes ago    Exited (0) About a minute ago             pensive_ride
e8f1ab86997c   my-jdk17-server   "/bin/bash -c 'sleep…"   21 minutes ago   Exited (0) 13 minutes ago                 tender_ride
969242a1b3f9   0879f7908658      "/__cacert_entrypoin…"   32 minutes ago   Exited (0) 31 minutes ago                 distracted_williamson
PS C:\Users\admin\docker-practice> docker exec -it e8f1 bash

What's next:
    Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug e8f1
    Learn more at https://docs.docker.com/go/debug-cli/
Error response from daemon: container e8f1ab86997c1f65d8c38faa262afad3205d79102e3f90e89f126a4c788893a9 is not running


이미지를 만들면서 컨테이너 실행시, 컨테이너 특성상 명령어 처리가 끝나는대로 종료되어, 내부적으로 컨테이너가 어떻게 형성되었는지 디버깅하기 어렵다.

- docker-practice/Dockerfile

# JDK 17
# FROM openjdk:17-jdk # Deprecated 됨
# FROM eclipse-temurin:17-jdk

# Node
FROM node

...

ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 500초 동안 시스템을 일시정지 시키는 명령어


ENTRYPOINT : 컨테이너 시작시 항상 실행할 명령어 지정
· -c : 문자열을 명령어로 입력받아 실행
· sleep 시간 : 리눅스 Bash shell 에서 명시한 시간동안 아무 작업도 하지 않고 대기

[Docker] (10) Dockerfile 빌드 예시 | ENTRYPOINT 와 CMD의 차이 : https://mvje.tistory.com/170#google_vignette

 

[Docker] (10) Dockerfile 빌드 예시 | ENTRYPOINT 와 CMD의 차이

Docker 전체 포스팅 더보기 [Docker] (1) 도커 개념 설명 | 도커는 왜 사용하는 걸까? [Docker] (2) 도커 & 도커컴포즈 다운로드 [Docker] (3) 도커 핵심 개념 - 이미지, 컨테이너, 도커 허브 [Docker] (4) docker pull(

mvje.tistory.com

 

bash shell 실행 옵션 : https://testkernelv2.tistory.com/m/810

 

bash shell 실행 옵션

[1. 개요]bash 쉘 스크립트 실행 시 단순하게 ./myjob.sh 로 실행하는 것 외에다양한 옵션을 주어가면서 실행할 수 있다. 여기서는 몇가지 옵션과 유용한 상황을 같이 정리하도록 한다.[2. 옵션]-c 옵션

testkernelv2.tistory.com

 

리눅스 sleep 명령어 사용법 : https://securityspecialist.tistory.com/187

 

리눅스 sleep 명령어 사용법

1. sleep 명령어란?sleep 명령어는 리눅스 Bash shell에서 프로그램(또는 스크립트)의 실행을 일시적으로 정지시키는 명령어입니다.   - 스크립트 실행 중 명령어 실행 간에 간격을 두기 위해  - 외부

securityspecialist.tistory.com


Dockerfile 에 위 명령어를 추가함으로써 컨테이너가 바로 종료되는 것을 막을 수 있다.
이후 docker exec -it 활용해 컨테이너 내부에 접속하여 디버깅할 수 있다.


참고링크 : https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-docker-%EC%9E%85%EB%AC%B8-%EC%8B%A4%EC%A0%84?cid=334085

 

비전공자도 이해할 수 있는 Docker 입문/실전| JSCODE 박재성 - 인프런 강의

현재 평점 4.9점 수강생 14,463명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 Docker 입문/실전 강의를 만들어봤습니다! Docker 기본 개념, Spring Boot를

www.inflearn.com

댓글