Docker - DockerFile 만들기(run , cmd , entrypoint 차이)

JungSik Heo·2025년 5월 26일
0

도커(docker)

목록 보기
4/8

🧱 1. RUN

✅ 목적: 이미지 생성 시 명령을 실행

  • Docker 이미지 빌드할 때만 1회 실행됩니다.
  • 보통 패키지 설치, 파일 복사, 디렉터리 생성 등 이미지 준비 작업에 사용.
RUN apt update && apt install -y python3

📌 실행 시점: docker build

📦 결과: 실행 결과가 이미지에 영구적으로 포함됨

🚀 2. CMD

✅ 목적: 컨테이너가 시작될 때 실행할 기본 명령 지정

  • docker run 명령 시 기본적으로 실행될 명령어를 설정합니다.
  • 사용자가 덮어쓸 수 있음 (docker run <이미지> [다른 명령] 으로)
CMD ["python3", "app.py"]

📌 실행 시점: docker run

📝 특징:

  • 하나의 Dockerfile에 하나만 존재 (여러 개 쓰면 마지막만 유효)
  • ENTRYPOINT와 함께 쓰면 CMD는 기본 인자 역할을 함

🎯 3. ENTRYPOINT

✅ 목적: 컨테이너가 시작될 때 절대 실행되어야 하는 명령 지정

CMD와는 달리 무조건 이 명령이 실행됨

docker run에서 넘긴 인자는 ENTRYPOINT의 인자로 처리됨
또는
ENTRYPOINT ["python3"]
CMD ["app.py"]

📌 실행 시점: docker run

📝 특징:

CMD는 인자(argument), ENTRYPOINT는 명령(command)

구분실행 시점목적사용자 덮어쓰기 가능사용 예시
RUNdocker build이미지 빌드 시 작업 실행패키지 설치, 디렉터리 생성 등
CMDdocker run기본 실행 명령 지정CMD ["python3", "app.py"]
ENTRYPOINTdocker run실행될 주 명령 고정인자만 덮어쓰기 가능ENTRYPOINT ["python3"] + CMD 인자

2.예제

🧪 1. RUN 예제 – 설치 작업

# 베이스 이미지
FROM python:3.11-slim

# RUN은 이미지 빌드 시 실행됨
RUN echo "Hello from RUN!" > /hello.txt

# CMD는 컨테이너 실행 시 실행됨
CMD ["cat", "/hello.txt"]

실행방법

docker build -t run-example .
docker run run-example

결과

Hello from RUN!

🧪 2. CMD 예제 – 기본 명령 지정

hello.py

print("Hello from CMD!")

Dockerfile

FROM python:3.11-slim
COPY hello.py /hello.py
CMD ["python", "/hello.py"]

실행 방법

docker build -t cmd-example .
docker run cmd-example

결과

Hello from CMD!

CMD는 기본 실행 명령을 지정하며, docker run으로 다른 명령을 주면 덮어쓰기 됩니다:

docker run cmd-example python -c "print('Overridden')"

🧪 3. ENTRYPOINT + CMD 예제 – 명령 고정 + 인자 변경

greet.py

import sys

name = sys.argv[1] if len(sys.argv) > 1 else "World"
print(f"Hello, {name}!")

Dockerfile

FROM python:3.11-slim

COPY greet.py /greet.py

ENTRYPOINT ["python", "/greet.py"]
CMD ["World"]
docker build -t entrypoint-example .
docker run entrypoint-example

Hello, World!
인자 덮어쓰기

docker run entrypoint-example GPT

출력:
Hello, GPT!

profile
쿵스보이(얼짱뮤지션)

0개의 댓글