내 잡다한 노트
도커파일 지시어 정리 본문
주요 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"]
'DevOps > docker' 카테고리의 다른 글
도커파일에서 UID를 작성하는 이유 (0) | 2024.11.26 |
---|---|
DooD ( Docker out of Docker ) (0) | 2024.11.19 |
도커 이미지의 보안을 지켜야하는 이유 (1) | 2024.10.08 |
/var/lib/docker/overlay2 (0) | 2024.08.09 |
도커 레포지토리와 레지스터 (0) | 2024.06.27 |