✏️ In Docker
-
"docker run ubuntu" 명령을 실행하면 Ubuntu 이미지 인스턴스가 실행되고 '즉시 종료'됨.
-
vm과 달리 컨테이너는 운영 체제를 호스팅하지 않음.
-
컨테이너는 특정 작업이나 프로세스를 실행하기 위한 것임.
ex) 인스턴스를 호스팅하기 위한 web server, application server, DB 등
-
따라서 작업이 완료되면 컨테이너가 종료됨.
-
컨테이너는 내부 프로세스가 살아있는 동안에만 살아있음.
컨테이너 내에서 실행되는 프로세스는 누가 정의함
Dockerfile
CMD
- 컨테이너가 시작될 때 컨테이너 내에서 실행될 프로그램을 정의하는 명령이 표시됩니다.
- 이미지 각각 nginx, mysql cmd임
Ubuntu 컨테이너가 즉시 종료되는 이유
- bash가 default command 임
- bash는 실제로 WEB 또는 DB 서버와 같은 프로세스가 아님.
- 터미널에서 입력을 수신 대기하는 쉘임.
- 터미널을 찾을 수 없으면 종료함.
Ubuntu 컨테이너를 시작하기 위해 다른 cmd 지정하는 방법 (3가지)
1."docker run"에 cmd 추가
이 방법은 이미지 내에 지정된 기본 명령을 무시합니다.
2. 이미지가 시작될 때 기본 cmd로 실행 방법
(1) 기본 Ubuntu 이미지에서 고유한 이미지 만들기
(2) 새 cmd 지정
3. cmd의 시간(초)을 변경 방법
(1) ENTRYPOINT 사용
- cmd ["5"]는 default 값이고,
- docker run ubuntu-sleepler 10을 하면 10으로 적용됨(5는 무시됨)
📌 In K8S