Docker 컨테이너는 실행할 메인 프로세스가 종료되면 함께 종료됩니다.
예를 들어:
ENTRYPOINT ["python", "main.py"]
이때 main.py 실행이 끝나면 컨테이너도 바로 종료됩니다.
그래서 문제가 발생합니다.
컨테이너가 즉시 꺼지면 docker logs나 docker exec로 내부 상태를 확인하기 어렵습니다.
1. 왜 컨테이너는 바로 종료될까?
Docker는 “하나의 메인 프로세스” 중심 구조입니다.
- 메인 프로세스 실행
- 프로세스 종료
- 컨테이너 종료
즉, 컨테이너는 서비스가 아니라 프로세스 실행 단위입니다
2. 디버깅을 위한 방법
문제 상황을 확인하려면 컨테이너를 잠시 유지해야 합니다.
예:
ENTRYPOINT ["/bin/bash", "-c", "sleep 600"]
의미는:
- bash 실행
- 600초(10분) 동안 대기
- 그동안 컨테이너 유지
이제 다음이 가능합니다.
docker logs <container>
docker exec -it <container> /bin/bash
컨테이너 내부로 들어가 직접 확인할 수 있습니다.
3. 왜 이런 방식이 필요한가?
빌드 오류, 환경 변수 문제, 파일 경로 오류 등은
컨테이너 내부에서 직접 확인하는 것이 가장 빠릅니다.
sleep은 일종의 “임시 유지 장치” 역할을 합니다.
4. 정리
- 컨테이너는 메인 프로세스가 끝나면 종료됨
- 실행 명령이 없으면 즉시 종료
- 디버깅 시 sleep으로 컨테이너 유지 가능
- 유지 상태에서 logs와 exec로 확인
Docker 컨테이너는 메인 프로세스 종료 시 함께 종료되므로, 디버깅 시 sleep을 활용해 일시적으로 유지할 수 있습니다.
'컨테이너·워크플로우 자동화 > DocKer 기본 및 활용' 카테고리의 다른 글
| Docker Compose 구성 이해하기 (0) | 2026.02.18 |
|---|---|
| COPY(명령어)에서 / 유무에 따른 디렉토리 복사 차이 (0) | 2026.02.17 |
| Docker RUN 명령어와 && 사용 이유: 레이어 구조 관점에서 이해하기 (0) | 2026.02.17 |
| Docker 빌드 최적화를 위한 .dockerignore 활용 전략 (0) | 2026.02.17 |
| Docker COPY 명령어의 동작 원리와 빌드 컨텍스트 이해 (0) | 2026.02.17 |