JSCODE Logo
프로그래밍 과외블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

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

JSCODE 박재성
JSCODE 박재성
2025-12-01
author
JSCODE 박재성
category
Docker
createdAt
Dec 1, 2025
series
비전공자도 이해할 수 있는 Docker 입문
slug
how-to-debug-terminated-container
type
post
updatedAt
Dec 1, 2025 12:07 PM
🧑🏻
프로그래밍을 할 때 중간중간 잘 작동하는 지 확인하는 습관은 굉장히 중요하다. 어떤 명령어를 입력하고 난 뒤에 명령어가 정상적으로 수행됐는 지 어떻게 확인할 수 있는 지 방법을 찾아봐야 한다. 이 습관이 몸에 익으면 어떤 명령어를 수행하더라도 그 명령어가 어떻게 작동하는 지 파헤칠 수 있게 된다. 또한 어떤 명령어를 실행시킨 뒤에 에러가 생기더라도 금방 발견할 수 있어서 디버깅도 훨씬 수월하다.
 
Docker를 사용하면 대부분의 코드가 컨테이너 내부에서 작동한다. 그러다보니 어떤 과정으로 처리됐는 지, 잘 처리는 됐는 지를 직접적으로 눈에 보이지 않는다. 이 때문에 Docker 학습에 어려움을 겪는다.
 
 
이를 해결하기 위해 우리는 2가지 방법을 이미 익혔다.
  • docker logs를 활용해 컨테이너 로그 확인하기
  • docker exec -it를 활용해 컨테이너 내부에 직접 들어가보기
 
 
위 방법 중 docker exec -it은 실행 중인 컨테이너에만 쓸 수 있는 명령어이다. 종료된 컨테이너는 아래와 같은 에러가 발생한다.
notion image
하지만 이미지를 만들면서 컨테이너를 실행시켜보면, 컨테이너의 특성상 명령어 처리가 다 끝나는대로 컨테이너가 종료된다. 그러다보니 내부적으로 어떻게 컨테이너가 형성됐는 지 디버깅을 하는데 어려움을 겪는다.
 
어떻게 해야 할까?
 
Dockerfile
FROM openjdk:17-jdk ... ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 500초 동안 시스템을 일시정지 시키는 명령어
위 명령어를 추가함으로써 컨테이너가 바로 종료되는 걸 막을 수 있다. 그런 뒤에 docker exec -it를 활용해 컨테이너 내부에 직접 들어가서 디버깅을 하면 된다.
 
author
category
Docker
createdAt
series
비전공자도 이해할 수 있는 Docker 입문
slug
type
series-footer
updatedAt
Jan 12, 2026 12:04 AM
📎
이 글은 비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편) 강의의 수업 자료 중 일부입니다.