관리 메뉴

피터의 개발이야기

[Docker] Docker ENTRYPOINT와 CMD의 차이점 본문

DevOps/Docker

[Docker] Docker ENTRYPOINT와 CMD의 차이점

기록하는 백앤드개발자 2025. 3. 5. 08:09
반응형

ㅁ 들어가며

ㅇ Docker 컨테이너를 구성할 때 자주 사용되는 중요한 명령어인 ENTRYPOINT와 CMD는 비슷해 보이지만 중요한 차이점이 있다. 이 글에서는 ENTRYPOINT와 CMD의 차이점에 대해 정리해 보았다.

 

ㅁ ENTRYPOINT란?

 

FROM ubuntu:20.04
ENTRYPOINT ["echo", "Hello from ENTRYPOINT"]

ㅇ Dockerfile를 작성하고  빌드한다.

 

# 실행
$ docker run command-test:latest
Hello from ENTRYPOINT

# Param 추가
$ docker run command-test:latest addparam peterica
Hello from ENTRYPOINT addparam peterica

ㅇ ENTRYPOINT에 지정된 명령이 항상 실행되며, 추가 인자는 ENTRYPOINT 명령 뒤에 붙는다.

ㅇ ENTRYPOINT는 컨테이너가 시작될 때 실행되는 기본 명령을 지정한다.

ㅇ 이는 컨테이너가 실행될 때 항상 실행되어야 하는 명령이나 스크립트를 설정하는 데 사용된다.

 

ㅇ 주요 특징

컨테이너의 주요 실행 프로세스를 정의한다.

Dockerfile에서 한 번만 사용할 수 있다.

docker run 명령으로 재정의하기 어렵다.

 

ㅁ CMD란?

FROM ubuntu:20.04
CMD ["echo", "Hello from CMD"]

ㅇ Dockerfile 생성

 

# 실행
$ docker run command-test
Hello from CMD

$ docker run command-test echo "Override CMD Test"
Override CMD Test

 

 

ㅇ CMD는 컨테이너가 시작될 때 실행될 기본 명령이나 매개변수를 제공한다.

ㅇ ENTRYPOINT와 달리 docker run 명령으로 쉽게 재정의할 수 있다.

 

ㅇ 주요 특징

기본 명령이나 ENTRYPOINT에 대한 기본 매개변수를 제공한다.

docker run 명령으로 쉽게 재정의할 수 있다.

 

ㅁ ENTRYPOINT와 CMD의 주요 차이점

FROM ubuntu:20.04
ENTRYPOINT ["echo", "Hello"]
CMD ["World"]
$ docker run command-test
Hello World

$ docker run command-test Peterica
Hello Peterica

ㅇ ENTRYPOINT는 항상 실행되고, CMD는 기본값을 제공하거나 재정의될 수 있다.

 

  ENTRYPOINT CMD
목적성 컨테이너의 주요 실행 명령을 정의 기본 매개변수나 명령을 제공
재정의 가능성 docker run 명령으로 재정의하기 어렵다 docker run 명령으로 쉽게 재정의할 수 있다
사용 방식 컨테이너가 실행될 때 반드시 실행되어야 하는 명령을 지정한다 ENTRYPOINT에 대한 기본 매개변수를 제공하거나, ENTRYPOINT가 지정되지 않았을 때 실행될 기본 명령을 제공

 

ㅁ 마무리

  ENTRYPOINT와 CMD를 사용하면서 Docker 컨테이너의 시작 동작을 정의하는 차이를 예제로 정리해 보았다. ENTRYPOINT는 컨테이너의 주요 실행 명령을 정의하고, CMD기본 매개변수나 명령을 제공합니다. 두 명령어를 적절히 조합하여 사용하면 유연하고 강력한 Docker 이미지를 만들 수 있다.

 

ㅁ 함께 보면 좋은 사이트

Docker ENTRYPOINT vs. CMD : Differences & Examples

반응형
Comments