인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Barro님의 프로필 이미지

작성한 질문수

비전공자도 이해할 수 있는 Docker 입문/실전

[실습] FROM : 베이스 이미지 생성

다른 이미지와 달리 직접 만든 이미지를 run 시킬 때 저절로 컨네이너가 종료되는 이유

작성

·

33

0

자신이 직접 만든 이미지를 build 하면 docker image ls에 뜨고 이를 docker run -d my-jdk17-server 명령어로 실행시킨다 까지 이해했습니다.

컨테이너가 내부적으로 필요한 명령어를 다 수행하면 컨네이너가 저절로 종료 된다고 하신 부분이 이해가 가지 않습니다.

이전에 mysql 실행할 때는 동일하게 run 명령어를 실행시키면 Up(실행)이 되었는데,
1) 왜 직접 만든 이미지는 실행되지 않나요?
2) mysql은 Dockerfile에 실행시키는 것까지 포함된건가요?

답변 2

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 Barro님! 질문 잘 주셨습니다:)

my-jdk17-server의 이미지를 만들 때

Dockerfile에 FROM openjdk:17-jdk라는 명령어만 입력했었습니다.

 

이와 달리, mysql 이미지를 만들 때

Dockerfile에 FROM ... 이외에도 ENTRYPOINT 또는 CMD와 같은

명령어가 추가적으로 있었을 겁니다.

mysql 이미지는 mysql 프로그램 자체가 종료되지 않고

계속 실행되게끔 Dockerfile을 작성해뒀습니다.

(뒷 부분의 강의를 이어서 들어보시면 ENTRYPOINTCMD와 같은 명령어를 배우시게 될 겁니다)

 

** 참고) mysql 이미지는 우리가 직접 만들지 않고, mysql 공식 회사에서 직접 만들어서 올려놓은

이미지를 다운받아 쓰기에 우리가 Dockerfile을 실제로 작성할 일은 없습니다.

 

1) 왜 직접 만든 이미지는 실행되지 않나요?

-> 위에 설명드린 이유 때문에 직접 만든 이미지는 실행되지 않았던 겁니다.

나중에 강의를 이어서 들어소비면 직접 만든 이미지도 실행되게끔 구성할 수 있습니다.

 

2) mysql은 Dockerfile에 실행시키는 것까지 포함된건가요?

-> 네 맞습니다! mysql은 Dockerfile에 실행시키는 것까지 포함된 채로 이미지가 만들어졌습니다.

 

이 외로 궁금한 점 생기시면 또 질문 남겨주세요~~

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. Barro님!

Docker에서는 컨테이너가 내부적으로 실행할 작업이 완료되면, 즉 명시적인 작업이 끝나면 자동으로 종료되는 것이 기본 동작입니다. 일반적으로, “종료”라는 부분은 컨테이너 내에서 실행되는 프로세스가 없어졌을 때를 의미합니다.

  1. 직접 만든 이미지는 왜 실행되지 않나요?

직접 만든 Docker 이미지를 사용하여 컨테이너를 실행했을 때, 컨테이너가 즉시 종료되는 이유는 주로 ENTRYPOINT 또는 CMD로 설정한 명령어가 종료되었기 때문입니다. 예를 들어, 단순히 Bash 쉘을 실행하도록 설정된 이미지의 경우, 그 쉘이 종료되면 컨테이너도 따라서 종료됩니다. 서비스가 지속적으로 실행되길 원한다면, 서버 프로세스나 끝나지 않는 프로세스를 ENTRYPOINT나 CMD에 지정해야 합니다.

  1. MySQL은 Dockerfile에 실행시키는 것까지 포함된건가요?

MySQL의 경우, Docker Hub에서 제공하는 공식 이미지를 사용할 때 기본적으로 MySQL 데몬이 컨테이너 시작 시 자동으로 실행되도록 설정되어 있습니다. 따라서 MySQL 컨테이너는 데몬 프로세스가 백그라운드에서 계속 실행되기 때문에 종료되지 않고 지속적으로 Up 상태로 유지됩니다.

관련 질문과 해결할 방법을 제공하는 포럼 링크:

  • Docker - 기본 운영 이해: Docker의 기본 작동 원리에 대한 질문과 답변을 통해 직접 만든 이미지의 작동 방식을 이해하실 수 있습니다.

  • Dockerfile에서의 실행 프로세스: Dockerfile의 ENTRYPOINT와 CMD 설정에 대한 설명으로, 컨테이너의 실행 및 지속에 대한 이해를 도와줍니다.

도움이 되셨길 바라며, 추가로 궁금하신 점이 있다면 언제든지 질문해 주세요. 곧 지식공유자께서도 더 많은 도움을 드릴 것입니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Barro님의 프로필 이미지

작성한 질문수

질문하기