Dockerfile: CMD와 ENTRYPOINT

발행: (2025년 12월 14일 오전 01:31 GMT+9)
2 min read
원문: Dev.to

Source: Dev.to

Ubuntu 이미지의 기본 CMD

공식 Ubuntu 이미지에는 기본 명령이 정의되어 있습니다:

CMD ["/bin/bash"]

컨테이너를 실행하면서 인수를 제공하면, 해당 인수가 기본 CMD를 대체합니다.

docker run --rm --name cmd ubuntu:latest ls /home
docker run --rm --name cmd ubuntu:latest date

예시 출력

# /home/ubuntu 내용 목록
docker run --rm --name cmd ubuntu:latest ls -l /home/ubuntu
total 0

# 현재 날짜 표시
docker run --rm --name cmd ubuntu:latest date
Sat Dec 13 16:22:53 UTC 2025

ENTRYPOINT가 있는 이미지 만들기

아래는 ENTRYPOINT 스크립트를 설정하고 CMD를 통해 기본 인수를 제공하는 간단한 Dockerfile입니다.

FROM ubuntu:latest
WORKDIR /app
COPY script.sh .
RUN ["chmod", "+x", "script.sh"]
ENTRYPOINT ["/app/script.sh"]
CMD ["world"]

script.sh

#!/bin/bash
echo "Hello $1"

스크립트는 하나의 인수를 기대합니다. 실행 시 인수가 제공되지 않으면 CMD(world)의 값이 사용됩니다.

이미지 실행하기

기본 인수 사용

docker run --rm --name entrypoint entrypoint:1.0.0
# Output:
# Hello world

인수 재정의

docker run --rm --name entrypoint entrypoint:1.0.0 december
# Output:
# Hello december

핵심 정리

  • CMD 명령은 컨테이너 실행 시 인수를 제공함으로써 언제든지 재정의할 수 있습니다.
  • ENTRYPOINT 자체는 런타임에 재정의할 수 없지만, 다른 CMD를 지정하거나 docker run에 직접 인수를 전달하여 전달되는 인수를 변경할 수 있습니다.
  • 사용 목적에 따라 ENTRYPOINTCMD를 선택하세요: 고정 실행 파일에는 ENTRYPOINT를, 기본 인수나 대체 명령에는 CMD를 사용합니다.
Back to Blog

관련 글

더 보기 »