내 잡다한 노트

도커파일 지시어 정리 본문

DevOps/docker

도커파일 지시어 정리

peanutwalnut 2024. 10. 18. 15:46

주요 Dockerfile 지시어

1. FROM

  • 형식: FROM <이미지>:<태그>
  • 설명: 베이스 이미지로 사용할 이미지를 지정합니다. 모든 Dockerfile은 FROM 지시어로 시작해야 합니다.
  • 예시:
     
    FROM ubuntu:20.04

2. RUN

  • 형식: RUN <명령어>
  • 설명: 컨테이너 내에서 명령어를 실행하여 이미지에 적용합니다. 주로 패키지 설치나 설정 변경에 사용됩니다.
  • 예시:
     
    RUN apt-get update && apt-get install -y python3

3. CMD

  • 형식: CMD ["실행 파일", "인자1", "인자2", ...]
  • 설명: 컨테이너가 시작될 때 기본으로 실행할 명령어를 지정합니다. Dockerfile에서 하나의 CMD만 사용할 수 있으며, 여러 개가 있을 경우 마지막 것이 적용됩니다.
  • 예시:
     
    CMD ["python3", "app.py"]

4. ENTRYPOINT

  • 형식: ENTRYPOINT ["실행 파일", "인자1", "인자2", ...]
  • 설명: 컨테이너 시작 시 항상 실행될 명령어를 지정합니다. CMD와 함께 사용하여 인자를 전달할 수 있습니다.
  • 예시:
     
    ENTRYPOINT ["python3", "app.py"]

5. ENV

  • 형식: ENV <키> <값>
  • 설명: 환경 변수를 설정합니다.
  • 예시:
     
    ENV APP_ENV production

6. ADD

  • 형식: ADD <소스> <대상>
  • 설명: 파일 또는 디렉토리를 이미지에 추가합니다. URL에서 파일을 가져오거나 압축 파일을 자동으로 압축 해제할 수 있습니다.
  • 예시:
     
    ADD app.tar.gz /usr/src/app/

7. COPY

  • 형식: COPY <소스> <대상>
  • 설명: 호스트의 파일이나 디렉토리를 이미지에 복사합니다. ADD와 달리 URL이나 압축 해제 기능은 없습니다.
  • 예시:
     
    COPY . /usr/src/app/

8. LABEL

  • 형식: LABEL <키>=<값> <키>=<값> ...
  • 설명: 이미지에 메타데이터를 추가합니다.
  • 예시:
     
    LABEL maintainer="yourname@example.com" version="1.0"

9. EXPOSE

  • 형식: EXPOSE <포트>
  • 설명: 컨테이너가 사용하는 네트워크 포트를 명시합니다. 실제로 포트를 개방하지는 않지만 문서화 목적과 포트 매핑 설정에 사용됩니다.
  • 예시:
     
    EXPOSE 80

10. WORKDIR

  • 형식: WORKDIR <경로>
  • 설명: 이후 명령어들이 실행될 작업 디렉토리를 설정합니다.
  • 예시:
     
    WORKDIR /usr/src/app

11. USER

  • 형식: USER <사용자>[:<그룹>]
  • 설명: 이후 명령어들이 실행될 사용자와 그룹을 지정합니다.
  • 예시:
     
    USER appuser

12. VOLUME

  • 형식: VOLUME ["<경로>"]
  • 설명: 컨테이너에서 마운트할 볼륨을 지정합니다. 데이터 지속성을 위해 사용됩니다.
  • 예시:
     
    VOLUME ["/data"]

13. ARG

  • 형식: ARG <이름>[=<기본값>]
  • 설명: 빌드 시점에 전달할 수 있는 변수(빌드 인수)를 정의합니다.
  • 예시:
     
    ARG APP_VERSION=1.0 RUN echo "App version: $APP_VERSION"

14. ONBUILD

  • 형식: ONBUILD <지시어>
  • 설명: 이 이미지를 기반으로 빌드되는 자식 이미지에서 실행될 명령어를 지정합니다.
  • 예시:
     
    ONBUILD COPY . /app/src

15. STOPSIGNAL

  • 형식: STOPSIGNAL <신호>
  • 설명: 컨테이너를 종료할 때 사용할 시스템 호출 신호를 지정합니다.
  • 예시:
     
    STOPSIGNAL SIGKILL

16. HEALTHCHECK

  • 형식:
     
    HEALTHCHECK --interval=<시간> --timeout=<시간> --start-period=<시간> --retries=<횟수> CMD <명령어>
  • 설명: 컨테이너의 상태를 모니터링하기 위한 건강 상태 검사를 설정합니다.
  • 예시:
     
    HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD curl -f http://localhost/ || exit 1

17. SHELL

  • 형식: SHELL ["실행 파일", "옵션"]
  • 설명: RUN, ENTRYPOINT, CMD 등의 명령어에서 사용할 기본 셸을 지정합니다.
  • 예시:
     
    SHELL ["/bin/bash", "-c"]