| 항목 | CMD | ENTRYPOINT |
|---|---|---|
| 기본 목적 | 기본 실행 명령어 제공 | 컨테이너 실행 시 고정 명령어 |
| 실행 방식 | docker run 명령으로 덮어쓰기 가능 | ENTRYPOINT는 변경 불가. 인자만 추가 가능 |
| 유연성 | 기본값으로 제공됨 (명령어 바꿀 수 있음) | 무조건 실행해야 할 명령을 설정 |
| 사용 예시 | 테스트 명령어 또는 기본 명령어 | 컨테이너가 반드시 수행해야 하는 명령어 |
CMD ["실행파일", "파라미터1", "파라미터2"]
예시
FROM ubuntu:20.04
CMD ["echo", "Hello from CMD"]
컨테이너 실행 시 기본적으로 아래 명령이 수행된다.
docker run 이미지명
➡️ echo Hello from CMD
원한다면 실행 명령어를 덮어쓸 수 있다. (ENTRYPOINT는 불가능)
docker run 이미지명 echo "Hi"
➡️ echo Hi
ENTRYPOINT ["실행파일", "고정파라미터"]
예시
FROM ubuntu:20.04
ENTRYPOINT ["echo", "Hello from ENTRYPOINT"]
컨테이너 실행 시 무조건 echo 명령이 실행되고, 뒤에 추가 인자만 붙일 수 있다.
docker run 이미지명
➡️ echo Hello from ENTRYPOINT
추가 인자를 주는 예시
docker run 이미지명 "and Welcome!"
➡️ echo Hello from ENTRYPOINT and Welcome!
FROM ubuntu:20.04
ENTRYPOINT ["echo"]
CMD ["Default message"]
컨테이너 실행 시:
docker run 이미지명
➡️ echo Default message
CMD는 기본 인자를 제공하고, ENTRYPOINT는 반드시 실행할 명령을 지정한다.
| 항목 | COPY | ADD |
|---|---|---|
| 기본 기능 | 파일/디렉토리를 복사 | 파일/디렉토리를 복사 |
| 추가 기능 | 없음 | URL에서 파일 다운로드 가능, 압축 파일(.tar) 자동 압축 해제 |
| 사용 권장 | 단순 복사에는 COPY 권장 | 특수 기능이 필요한 경우에만 ADD 사용 |
| 동작 차이 | 명시적이고 단순 | 암시적인 동작이 많음 (주의 필요) |
COPY <호스트 경로> <컨테이너 경로>
예시:
COPY ./app /usr/src/app
➡️ 로컬 ./app 디렉토리 → 컨테이너의 /usr/src/app 디렉토리로 복사
ADD <호스트 경로 또는 URL> <컨테이너 경로>
ADD ./archive.tar.gz /usr/src/app
➡️ archive.tar.gz를 /usr/src/app에 압축 해제
ADD https://example.com/file.txt /usr/src/app/
➡️ file.txt를 다운로드 후 /usr/src/app/에 저장
일반적인 파일 복사는 COPY
외부 URL에서 직접 다운로드하거나 자동 압축 해제가 필요할 때만 ADD
FROM ubuntu:20.04
# 파일 복사
COPY ./local-script.sh /usr/local/bin/script.sh
# 외부 파일 다운로드 및 압축 해제
ADD https://example.com/archive.tar.gz /usr/src/app/
# 고정 명령
ENTRYPOINT ["bash", "/usr/local/bin/script.sh"]
# 기본 인자 제공 (필요에 따라 override 가능)
CMD ["arg1", "arg2"]
컨테이너 실행 시:
docker run 이미지명
➡️ bash /usr/local/bin/script.sh arg1 arg2
| 구분 | 설명 |
|---|---|
| CMD | 기본 명령/인자 제공, docker run에서 덮어쓰기 가능 |
| ENTRYPOINT | 무조건 실행할 명령 고정, 인자만 추가 가능 |
| COPY | 단순 복사, 직관적 |
| ADD | 복사 + 압축 해제 + 원격 다운로드 지원 |