Best practices for writing Dockerfiles
보통 베이스가 되는 Docker 이미지를 바탕으로 Docker 컨테이너를 생성하고, 생성한 Docker 컨테이너 안에서 OS의 설정이나 미들웨어의 설치, 파라미터의 설정 등을 수행. → 만들어진 컨테이너에서 서버를 구축한 상태를 바탕으로 Docker 이미지를 생성
이를 위해서는 다음 정보들을 인프라 설계서나 파라미터 시트 등에 별도로 남겨 둘 필요가 있음
Dockerfile은 이런 Docker 상에서 작동시킬 컨테이너의 구성 정보를 기술하기 위한 파일
docker build
는 Dockerfile에 기술된 구성 정보를 바탕으로 Docker 이미지를 작성
확장자는 필요없으며 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는 컨테이너를 실행할 때 항상 실행되는 명령어나 스크립트를 정의