도커 명령어로 컨테이너를 구성하기 위해서는 컨테이너 생성, 컨테이너 안에서 OS 설정, 미들웨어 설치, 파라미터 설정 등은 모두 직접 수행해야 한다. 이러한 일련의 작업을 자동으로 수행하도록 스크립트로 만든것이 dockerfile이다. 이러한 Dockerfile은 필요한 환경설정이 모두 세팅된 image를 만드는 데 목적이 있으며, 또한 자동화로써 사용할 수 있고 스크립트이므로 변경해서 재사용할 수도 있다. 이러한 도커파일의 내용은 아래와 같은 정보들을 기술한다.
- 베이스가 될 도커 이미지
- 도커 컨테이너 안에서 수행할 명령, 조작 등
- 환경변수 등의 설정
- 도커 컨테이너 안에서 작동시킬 데몬 실행
Dockerfile은 텍스트 형식이며 확장자는 없다. 만들기 위해서는 어떤 에디터도 상관없다. 메모장도 좋고, vi editor, notepad++, ultraedit 등등 어떤 프로그램도 상관없다. visual studio code는 dockerfile 작성을 위한 확장파일을 제공하므로 좀 더 편하게 사용할 수 있다. 이러한 텍스트 파일의 이름은 기본적으로 Dockerfile이라는 이름을 사용한다. 만약 이름을 변경하는 경우, 이미지 build시 따로 옵션을 줘서 해당 파일명을 명시해줘야 한다.
기본 서식은 "명령 인수"
형식이다. FROM node:14
이런 식. 또한 명령 부분은 대소문자를 가리지는 않지만 가독성을 위해 관례적으로 대문자를 사용한다. 또한 주석도 가능하며 주석은 맨 앞에 #을 붙이면 된다.
명령 | 설명 | 상세 |
---|---|---|
FROM | 베이스 이미지 지정 | docker 컨테이너를 어떤 docker 이미지로부터 생성할지 기술 |
RUN | 명령 실행 | from에서 지정한 베이스 이미지에 대해 수행하는 명령 |
CMD | 컨테이너 실행 명령 | from에서 지정한 베이스 이미지에 대해 데몬을 실행하는데 자주 사용 |
LABEL | 라벨 설정 | 도커파일에 기술할 기타정보들을 기록한다. 만든사람, 버전 등 |
EXPOSE | 포트 익스포트 | 포트를 오픈한다. |
ENV | 환경변수 | 도커파일 안에서 환경변수를 설정한다. |
ADD | 파일/디렉토리 추가 | |
COPY | 파일 복사 | |
ENTRYPOINT | 컨테이너 실행 명령 | cmd와 동일하나 컨테이너 생성명령 수행시 무조건 우선적이다. |
VOLUME | 볼륨 마운트 | |
USER | 사용자 지정 | 특정 명령을 수행할 때 사용할 사용자를 명시한다. |
WORKDIR | 작업 디렉토리 | 명령어가 실행될 경로를 지정 |
ARG | dockerfile안의 변수 | 도커파일에서 변수를 만들 때 사용 |
ONBUILD | 빌드 완료 후 실행되는 명령 | 빌드한 후 나온 이미지를 다시 빌드할 때 실행되는 명령 |
STOPSIGNAL | 시스템 콜 시그널 설정 | 컨테이너 종료시 사용할 시그널 설정 |
HEALTHCHECK | 컨테이너의 헬스체크 | 일정 주기로 컨테이너의 헬스를 체크하여 결과를 inspect로 볼 수 있게한다. |
SHELL | 기본 쉘 설정 | 도커파일에서 사용할 쉘 지정 |
설명 | 명령어 |
---|---|
docker build 만들기 | docker build -t [생성할 이미지명]:[태그명][dockerfile위치] |
실행중인 컨테이너 확인 | docker ps |
컨테이너 확인 | docker ps -a |
컨테이너 삭제 | docker rm [컨테이너ID] |
이미지 삭제 | docker rmi [이미지ID] |