본문 바로가기

공부 자료/Kubernetes & Docker

[Docker] Dockerfile

 

 

Docker의 지침문서, Dockerfile

 

 

도커는 Dockerfile의 지침을 읽어 자동으로 이미지를 빌드하는데,

Dockerfile은 이미지를 조합하기 위해 명령줄에서 호출할 수 있는 모든 명령이 포함된 텍스트 문서를 의미한다.

그럼 Dockerfile이 지원하는 지침들 즉, 어떤 명령어들이 있는지 아래에서 살펴보고자 한다.

 

* Docker의 공식문서를 참고해 정리했기 때문에 아래 링크를 통해 확인해도 무방합니다.

 

 


 

[ Dockerfile 지침 ]

 

 

ADD : 로컬 또는 원격 파일과 디렉터리를 추가

 

ARG : 빌드 시간 변수를 사용

 

CMD : 기본 명령을 지정, (컨테이너 생성 시) 실행할 명령어

CMD ["httpd-foreground"]

- 도커에게 이미지가 내부 컨테이너에서 실행되었을 때 어떤 명령어를 실행해야 하는지 알려주는 역할

 

COPY : 파일 및 디렉터리를 복사

COPY index.html /usr/local/apache2/htdocs
COPY index.html index1.html

- 이미지에 복사할 파일과 파일을 어디에 복사할지 2개의 파라미터를 가짐

 

ENTRYPOINT : 기본 실행 파일을 지정, (컨테이너가 생성되고 최초로) 실행할 명령어

 

ENV : 환경 변수를 설정

 

EXPOSE : 애플리케이션이 수신 대기하는 포트를 설명

 

FROM : 기본 이미지에서 새 빌드 단계를 만듦, 베이스 이미지 선정 >> 베이스 이미지가 있어야 작업을 실행할 수 있음

FROM httpd:latest

- httpd:latest 이미지를 베이스로 선정

 

HEAL THCHECK : 시작 시 컨테이너의 상태를 확인

 

LABEL : 이미지에 메타데이터를 추가

 

MAINTAINER : 이미지 작성자를 지정

 

ONBUILD : 이미지가 빌드에 사용되는 시기에 대한 지침을 지정

 

RUN : 빌드 명령을 실행, (이미지 빌드 시) 실행할 명령어

 

SHELL : 이미지의 기본 셸을 설정

 

STOPSIGNAL : 컨테이너 종료를 위한 시스템 호출 신호를 지정

 

USER : 사용자 및 그룹ID를 설정

 

VOLUME : 볼륨 마운트를 생성

 

WORKDIR : 작업 디렉터리를 변경

WORKDIR /app

- 도커에게 default location으로 /app을 사용하라고 알려주며, 도커 파일을 작성하면서 Full Path를 적어야 하는 불편함 방지 가능

 


 

[ Dockerfile 사용 시 참고 ]

0. syntax : 반드시 Dockerfile 첫 번째 줄에 적여야 하며, 도커 빌더에게 도커 파일을 파싱할 때 어떤 문법으로 파싱해야 하는지 알려주는  역할. docker/dockerfile:1은 가장 최신의 version 1 syntax로 설정해 주는 것을 의미하고, 공식문서에서 권장함.

# syntax=docker/dockerfile:1

 

1. 명령 대소문자를 구분하지 않으나, 관례는 인수와 쉽게 구분하기 위해 대문자를 사용

 

2. Dockerfile 내의 명령을 순서대로 실행

 

3. Dockerfile은 'FROM' 명령어로 시작해야 하며, 빌드하려는 부모 이미지를 지정

- FROM은 도커 파일의 FROM 행에서 사용하는 인수를 선언하는 하나 이상의 ARG 명령어 앞에 있을 수 있음

 

4. #으로 시작하는 행을 유효한 파서 지시어가 아닌 주석으로 처리

 

5. 명령 앞에 공백은 무시되지만 권장하지 않음

 

 

 

참고 : https://docs.docker.com/reference/dockerfile/

 

Dockerfile reference

Find all the available commands you can use in a Dockerfile and learn how to use them, including COPY, ARG, ENTRYPOINT, and more.

docs.docker.com