
해당 내용은 Udemy의 Certified Kubernetes Administrator(CKA) with Practice Tests 강의를 공부한 내용입니다.
Certified Kubernetes Administrator (CKA) with Practice Tests
<p><strong>CKA Certification Course – Certified Kubernetes Administrator</strong></p><p>Kubernetes is one of the highest trending technology in Cloud Computing as of today. Kubernetes had the fastest growth in job searches, over 173% from a year before,
www.udemy.com
컨테이너에서 실행되는 명령
Ubuntu 이미지 실행
docker run ubuntu
실행하면 컨테이너가 생성되었다가 바로 종료
실행 중인 컨테이너를 확인하면 아무것도 보이지 않음
docker ps
모든 컨테이너(종료된 것 포함)를 확인하면 컨테이너는 이미 종료됨
docker ps -a
CONTAINER ID IMAGE COMMAND STATUS
45aacca36850 ubuntu "/bin/bash" Exited (0)
가상머신(VM)은 부팅되면 계속 실행됨. 하지만 컨테이너는 하나의 프로세스를 실행하기 위해 존재
예를 들어
- 웹 서버
- 데이터베이스
- 애플리케이션 서버
- 특정 작업(batch)
등 하나의 작업을 수행
컨테이너의 생명주기는 내부에서 실행되는 메인 프로세스(PID 1) 와 동일
Docker 이미지의 기본 명령
모든 Docker 이미지는 컨테이너가 시작될 때 실행할 기본 명령(Default Command) 을 가지고 있음
| 이미지 | 기본 CMD |
| nginx | nginx |
| MySQL | mysqld |
| Ubuntu | bash |
nginx Dockerfile 예시
Dockerfile에는 다음과 같이 CMD가 정의되어 있음
CMD ["nginx"]
즉, docker run nginx 로 nginx 이미지를 실행하면 nginx 프로세스가 실행되고 웹 서버는 계속 동작하기 때문에 컨테이너도 종료되지 않음
Ubuntu Dockerfile
Ubuntu는 다음과 같이 정의되어 있음
CMD ["bash"]
즉, docker run ubuntu 로 실행하면 bash 프로세스가 실행 됨
하지만 Bash는 쉘일 뿐이기에 터미널(TTY)이 연결되어 있지 않으면 컨테이너가 종료됨
- 참고) Bash는 웹 서버처럼 계속 실행되는 프로세스가 아님. 따라서 터미널이 연결되지 않은 상태에서는 즉시 종료됨
기본 CMD 변경하기
Docker 실행 시 기본 CMD를 다른 명령으로 변경할 수 있음
예를 들어 Docker는 sleep 5를 실행해서 5초가 지나면 컨테이너가 종료됨
docker run ubuntu sleep 5
Dockerfile에서 CMD 변경하기
항상 sleep 5를 실행하도록 새로운 이미지를 만들 수도 있음
Shell 형식
FROM ubuntu
CMD sleep 5
Exec(JSON) 형식
FROM ubuntu
CMD ["sleep","5"]
이미지를 생성
docker build -t ubuntu-sleeper .
실행하면
docker run ubuntu-sleeper
자동으로 sleep 5 가 실행됨
ENTRYPOINT 사용하기
CMD만 사용하면 실행 시 전달한 값이 기본 명령 전체를 대체함
예시 Dockerfile
FROM ubuntu
ENTRYPOINT ["sleep"]
CMD ["5"]
이미지를 생성
docker build -t ubuntu-sleeper .
실행하면
docker run ubuntu-sleeper
실제로는 sleep 5 가 실행됨
실행 시 인자만 변경하기
docker run ubuntu-sleeper 10
📝CMD와 ENTRYPOINT의 차이
- CMD만 사용하는 경우: 실행 시 전달한 값이 기본 명령 전체를 대체
- ENTRYPOINT를 사용하는 경우: 실행 시 전달한 값은 ENTRYPOINT 뒤에 인자(Arguments)로 추가
ENTRYPOINT 자체 변경하기
sleep 대신 sleep2.0 같은 다른 실행 파일 사용하고 싶을 경우 --entrypoint 옵션 사용
예시 Dockerfile
FROM ubuntu
ENTRYPOINT ["sleep"]
CMD ["5"]
이미지 생성
docker build -t ubuntu-sleeper .
시간 변경 하려면
docker run ubuntu-sleeper 10
ENTRYPOINT 자체를 변경하려면
docker run --entrypoint sleep2.0 ubuntu-sleeper 10
CMD와 ENTRYPOINT 관계 정리
| Dockerfile | docker run | 실제 실 |
| CMD ["sleep","5"] | docker run image | sleep 5 |
| CMD ["sleep","5"] | docker run image 10 | 10 (CMD 전체가 대체됨) |
| ENTRYPOINT ["sleep"] + CMD ["5"] | docker run image | sleep 5 |
| ENTRYPOINT ["sleep"] + CMD ["5"] | docker run image 10 | sleep 10 |
| ENTRYPOINT ["sleep"] + CMD ["5"] | docker run --entrypoint sleep2.0 image 10 | sleep2.0 10 |
Kubernetes와의 연결
이 개념은 Kubernetes의 Pod 정의에서 그대로 사용
Docker의 ENTRYPOINT 는 Kubernetes의 command:
Docker의 CMD 는 Kubernetes의 args:
핵심 요약
- 컨테이너는 하나의 메인 프로세스(PID 1) 를 실행하기 위해 존재한다.
- 메인 프로세스가 종료되면 컨테이너도 종료된다.
- Docker 이미지에는 기본 실행 명령인 CMD가 정의되어 있다.
- docker run <image> <command>를 사용하면 기본 CMD를 변경할 수 있다.
- CMD는 실행 시 전달한 값으로 전체 명령이 대체된다.
- ENTRYPOINT는 실행 파일을 고정하고, 실행 시 전달한 값을 인자(Arguments) 로 추가한다.
- -entrypoint 옵션을 사용하면 ENTRYPOINT 자체를 다른 실행 파일로 변경할 수 있다.
- Kubernetes에서는 ENTRYPOINT → command, CMD → **args**로 대응된다.
'Kubernetes' 카테고리의 다른 글
| [Kubernetes] Commands and Arguments in Kubernetes (0) | 2026.10.04 |
|---|---|
| [Kubernetes] Rolling Updates and Rollbacks (0) | 2026.09.27 |
| [Kubernetes] Managing Application Logs (0) | 2026.09.27 |
| [Kubernetes] Monitor Cluster Components (0) | 2026.09.21 |
| [Kubernetes] Admission Controllers (0) | 2026.09.19 |