Dockerfile reference

Best practices for writing Dockerfiles

5.1 Dockerfile을 사용한 구성 관리

Dockerfile이란?

보통 베이스가 되는 Docker 이미지를 바탕으로 Docker 컨테이너를 생성하고, 생성한 Docker 컨테이너 안에서 OS의 설정이나 미들웨어의 설치, 파라미터의 설정 등을 수행. → 만들어진 컨테이너에서 서버를 구축한 상태를 바탕으로 Docker 이미지를 생성

이를 위해서는 다음 정보들을 인프라 설계서나 파라미터 시트 등에 별도로 남겨 둘 필요가 있음

Dockerfile은 이런 Docker 상에서 작동시킬 컨테이너의 구성 정보를 기술하기 위한 파일

docker build 는 Dockerfile에 기술된 구성 정보를 바탕으로 Docker 이미지를 작성

Dockerfile의 기본 구문

확장자는 필요없으며 Dockerfile이라는 이름의 파일에 인프라 구성 정보를 기술.

Dockerfile 이외의 파일명으로도 작동. ← Dockerfile에서 이미지를 빌드할 때 파일명을 명시적으로 지정해야 함.

Dockerfile의 명령

명령 설명 명령 설명
FROM 베이스 이미지 지정 VOLUME 볼륨 마운트
RUN 명령 실행 USER 사용자 지정
CMD 컨테이너 실행 명령 WORKDIR 작업 디렉토리
LABEL 라벨 설정 ARG Dockerfile 안의 변수
EXPOSE 포트 익스포트 ONBUILD 빌드 완료 후 실행되는 명령
ENV 환경변수 STOPSIGNAL 시스템 콜 시그널 설정
ADD 파일/디렉토리 추가 HEALTHCHECK 컨테이너의 헬스 체크
COPY 파일복사 SHELL 기본 쉘 설정
ENTRYPOINT 컨테이너 실행 명령

RUN과 CMD RUN은 컨테이너가 빌드되는 과정에서 무엇을 수행할지 적어놓는 명령 CMD는 컨테이너가 빌드된 후 어떤 프로세스를 실행할지 적어놓는 명령

CMD와 ENTRYPOINT CMD는 컨테이너를 실행할 때 수행할 명령어나 디폴트 매개변수를 정의 ENTRYPOINT는 컨테이너를 실행할 때 항상 실행되는 명령어나 스크립트를 정의