반응형
Dockerfile은 Docker 이미지를 빌드하기 위해 사용되는 파일로, 각 명령어는 컨테이너 이미지의 레이어를 정의합니다. Dockerfile에서 사용할 수 있는 주요 옵션(명령어)에 대해 설명드리겠습니다.
1. Docker, Docker-compose 설치
- 옵션
--f : dockerfile의 위치가 ./ 가 아닐 경우 경로를 준다.
--t : 빌드되는 이미지의 이름을 준다.
2. Dockerfile 기본 옵션 (명령어)
- FROM
- 설명: 베이스 이미지를 지정합니다. Docker 이미지는 다른 이미지 위에 쌓여서 만들어지기 때문에
FROM
명령어는 첫 번째로 사용됩니다. - 예시:
FROM ubuntu:20.04
- 설명: 베이스 이미지를 지정합니다. Docker 이미지는 다른 이미지 위에 쌓여서 만들어지기 때문에
- RUN
- 설명: 컨테이너 내부에서 명령어를 실행하고, 그 결과를 새로운 이미지 레이어로 커밋합니다. 주로 패키지 설치나 설정에 사용됩니다.
- 예시:
RUN apt-get update && apt-get install -y nginx
- CMD
- 설명: 컨테이너가 시작될 때 실행될 명령어를 지정합니다.
CMD
는 Docker 이미지가 실행될 때 기본적으로 실행되는 명령을 설정합니다. 단,docker run
명령어로 다른 명령을 지정하면CMD
는 무시됩니다. - 예시:
CMD ["nginx", "-g", "daemon off;"]
- 설명: 컨테이너가 시작될 때 실행될 명령어를 지정합니다.
- ENTRYPOINT
- 설명: 컨테이너가 시작될 때 실행될 명령어를 지정합니다.
CMD
와 달리ENTRYPOINT
는 반드시 실행되며,docker run
명령어의 인자는ENTRYPOINT
의 인수로 추가됩니다. - 예시:
ENTRYPOINT ["nginx"]
- 설명: 컨테이너가 시작될 때 실행될 명령어를 지정합니다.
- COPY
- 설명: 로컬 파일이나 디렉토리를 이미지의 파일 시스템으로 복사합니다.
- 예시:
COPY ./local-file /container-path
- ADD
- 설명: 로컬 파일, 디렉토리 또는 URL에서 파일을 이미지로 복사합니다.
COPY
와 달리 압축 파일을 자동으로 풀 수 있습니다. - 예시:
ADD https://example.com/file.tar.gz /container-path
- 설명: 로컬 파일, 디렉토리 또는 URL에서 파일을 이미지로 복사합니다.
- WORKDIR
- 설명: 이후의 명령어가 실행될 작업 디렉토리를 설정합니다.
- 예시:
WORKDIR /app
- ENV
- 설명: 환경 변수를 설정합니다.
- 예시:
ENV APP_ENV=production
- EXPOSE
- 설명: 컨테이너가 사용하는 네트워크 포트를 명시합니다. 실제로 포트를 열지는 않지만, 문서화 목적으로 사용됩니다.
- 예시:
EXPOSE 80
- VOLUME
- 설명: 컨테이너와 호스트 간의 볼륨을 정의합니다.
- 예시:
VOLUME ["/data"]
- USER
- 설명: 컨테이너 내에서 명령어를 실행할 사용자 또는 사용자와 그룹을 설정합니다.
- 예시:
USER appuser
- ARG
- 설명: Dockerfile 빌드 시에 사용할 수 있는 변수(인수)를 정의합니다.
ENV
와 비슷하지만 빌드 과정에만 사용됩니다. - 예시:
ARG VERSION=1.0.0 RUN echo $VERSION
- 설명: Dockerfile 빌드 시에 사용할 수 있는 변수(인수)를 정의합니다.
- LABEL
- 설명: 이미지에 메타데이터를 추가합니다.
- 예시:
LABEL maintainer="you@example.com"
- ONBUILD
- 설명: 베이스 이미지로 사용될 때 실행될 명령어를 정의합니다.
- 예시:
ONBUILD RUN echo "Building on top of this image"
- STOPSIGNAL
- 설명: 컨테이너를 종료할 때 사용할 시스템 호출을 정의합니다.
- 예시:
STOPSIGNAL SIGTERM
- HEALTHCHECK
- 설명: 컨테이너의 상태를 확인하는 명령어를 설정합니다.
- 예시:
HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD curl -f http://localhost/ || exit 1
- SHELL
- 설명: RUN, CMD, ENTRYPOINT 등의 명령어를 실행할 쉘을 지정합니다.
- 예시:
SHELL ["powershell", "-Command"]
3. Dockerfile 작성 팁
- 명령어 체이닝:
RUN
명령어에서 여러 명령어를 한 번에 실행하여 이미지를 최적화할 수 있습니다. 예:RUN apt-get update && apt-get install -y nginx
. - 멀티스테이지 빌드: 복잡한 빌드 프로세스를 여러 단계로 나누어 이미지 크기를 줄일 수 있습니다.
- 캐싱 활용: Docker는 각 명령어를 레이어로 캐시합니다. 자주 변경되는 명령어는 아래에 두는 것이 빌드 성능에 유리합니다.
이러한 옵션들을 잘 활용하면 효율적이고 유지 관리가 쉬운 Docker 이미지를 만들 수 있습니다.
반응형
'가상 머신 > Docker' 카테고리의 다른 글
[ VM / Docker ] Docker에서 Image를 관리하기 - 간단 (0) | 2024.06.22 |
---|---|
[ Docker ] Docker-Compose 설치하기 (0) | 2022.07.28 |
[ Docker ] usermod - 사용자에게 docker group 설정하기 (0) | 2022.07.27 |
[ Docker ] copy - Host 컴퓨터의 파일을 docker 내부로 복사하기 (0) | 2021.05.23 |
[ Docker ] Docker 사용하기 (0) | 2018.06.16 |