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
'공부 자료 > Kubernetes & Docker' 카테고리의 다른 글
[Docker] 도커 허브와 이미지, 그리고 컨테이너 (0) | 2024.06.12 |
---|---|
[Docker] 도커의 동작 원리 (1) | 2024.06.11 |
[Docker] 도커란 무엇인가? (1) | 2024.06.06 |
[Docker] Docker CLI 기본 명령어 (0) | 2024.05.13 |
[Docker] 컨테이너 기반 가상화 도구, 도커(Docker) (0) | 2024.05.10 |