CMD vs ENTRYPOINT 차이

박우진·2025년 3월 5일

Network/Server

목록 보기
5/12

CMD vs ENTRYPOINT 차이

구분CMDENTRYPOINT
역할기본 실행 명령을 설정필수 실행 명령을 설정
덮어쓰기 가능 여부docker run 시 다른 명령어로 변경 가능docker run의 인자가 ENTRYPOINT에 전달됨
실행 형식쉘 (CMD command arg) 또는 exec (CMD ["command", "arg"])exec (ENTRYPOINT ["command", "arg"])
일반적인 사용 예기본 실행 명령을 설정하지만 변경 가능할 때컨테이너가 반드시 실행해야 할 명령이 있을 때

CMD 예제 (기본 실행 명령)

CMD는 실행 명령을 제공하지만, 사용자가 변경 가능함.

FROM ubuntu
CMD ["echo", "Hello, Docker!"]
  • 기본적으로 echo Hello, Docker!를 실행하지만,
  • docker run에서 명령을 바꾸면 덮어쓰기됨:
    docker run my-image echo "Hello, World!"
    "Hello, World!"가 출력됨 (기존 CMD 명령 무시)

ENTRYPOINT 예제 (필수 실행 명령)

ENTRYPOINT는 반드시 실행되며, docker run의 인자는 ENTRYPOINT에 전달됨.

FROM ubuntu
ENTRYPOINT ["echo", "Hello"]
  • 실행 시 Hello항상 실행됨:
    docker run my-image "Docker!"
    "Hello Docker!"가 출력됨 (ENTRYPOINT가 고정된 명령이므로 인자가 뒤에 붙음)

CMDENTRYPOINT 함께 사용

ENTRYPOINT를 고정하고, CMD로 기본 인자를 제공 가능

FROM ubuntu
ENTRYPOINT ["echo"]
CMD ["Hello, Docker!"]
  • docker run my-image 실행 시:
    Hello, Docker!
  • docker run my-image "Custom Message" 실행 시:
    Custom Message
    CMD 값이 "Custom Message"로 대체됨.

CMDENTRYPOINT의 실행 방식 차이

기본적으로 CMDdocker run으로 덮어쓰기 가능하지만, ENTRYPOINT는 강제 실행됨
docker run --entrypoint 옵션을 사용하면 ENTRYPOINT도 변경 가능

docker run --entrypoint /bin/sh my-image

/bin/sh로 컨테이너 실행됨 (ENTRYPOINT 무시)


어떤 걸 선택해야 할까?

상황추천
컨테이너 실행 명령을 기본값으로 제공하지만, 변경 가능하게 하고 싶음CMD
컨테이너 실행 시 특정 명령을 항상 실행해야 함ENTRYPOINT
필수 명령어를 실행하면서 기본 옵션을 제공하고 싶음ENTRYPOINT + CMD

결론

  • CMD = 기본 실행 명령, docker run에서 쉽게 변경 가능.
  • ENTRYPOINT = 필수 실행 명령, docker run의 인자가 ENTRYPOINT에 전달됨.
  • 두 개를 함께 사용하면 필수 명령 + 기본값 인자 조합 가능.

0개의 댓글