다음은 OpenJDK 17 이미지를 기반으로 작성된 Dockerfile이다.
// 수정 전 Dockerfile
FROM openjdk:17-jdk
위 도커 파일을 다음 명령어를 통해 빌드 후, 컨테이너를 실행한다.
// docker build -t <이미지명> <도커파일 경로>
docker build -t test .
docker run -d test
컨테이너를 실행한 후, 컨테이너 내부로 접근하기 위해 다음 명령어를 입력한다.
// docker exec -it <컨테이너명>
docker exec -it test
해당 명령어를 실행하면 다음 에러가 발생한다.
그 이유는 컨테이너 특성상 명령어 처리가 끝나는대로 컨테이너가 종료되기 때문이다.
그러다보니 내부적으로 어떻게 컨테이너가 형성되었는지 디버깅에 어려움을 겪게 된다.
이 경우, 다음 방법을 통해 일시적으로 해결할 수 있다.
해결 방법
Dockerfile에 다음 명령어를 추가한 후, 다시 이미지를 빌드하고 컨테이너를 실행한다.
// 수정 후 Dockerfile
FROM openjdk:17-jdk
...
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 500초 동안 시스템을 일시정지 시키는 명령어
그런 다음, docker exec -it 명령어를 통해 컨테이너 내부로 직접 이동하여 디버깅을 하면 된다.
'Docker' 카테고리의 다른 글
[Docker] COPY : 파일 복사 (1) | 2025.05.08 |
---|---|
[Docker] 도커 볼륨(Docker Volume) (3) | 2025.05.07 |