Dockerfile 명령어 정리
- Container 에는 { 개발한 애플리케이션의 실행 파일 + 운영 환경 } 조합이 들어가야 한다
- Dockerfile = container를 만들 수 있도록 도와주는 명령어 집합
- 컨테이너 이미지를 생성할 수 있는 고유의 지시어(instruction) 사용
- 대소문자를 구분하지는 않지만, 가독성을 위해 지시어를 대문자로 사용 권장
Instruction | Description |
FROM |
운영 환경이 될 BASE IMAGE. 주로 가장 먼저 선언되는 지시어 |
ENV |
글로벌 환경 변수 설정. 컨테이너가 생성 된 후에도 유지된다. 실행 시 --build-arg 옵션으로 덮어쓰기 가능 docker run 실행 시 -e , --env 옵션으로 덮어쓰기 가능 |
ARG |
빌드 시점 환경 변수 설정. FROM 내부에서만 사용 가능. docker build 실행 시 --build-arg 옵션으로 덮어쓰기 가능 -> 만약 기본값X & 옵션 덮어쓰기X 는 오류 발생 빌드 이후 docker run 실행 시 변경 불가능 |
ADD |
컨테이너 빌드 시 호스트 파일을 컨테이너로 복사. 압축 파일이나 url 접근을 통해 얻을 수있는 정보를 복사해서 추가해온다 |
COPY |
컨테이너 빌드 시 호스트 파일을 컨테이너로 복사 |
RUN |
BASE IMAGE 안에서 실행할 명령어. (ex) 라이브러리 설치 |
ENTRYPOINT |
명령어 실행 |
CMD |
명령어 실행 (Arguments, Options 등의 변수 변경 가능) |
WORKDIR |
디렉토리 설정. 명령어를 실행하기 전 위치 설정 |
USER |
기본값 root 유저가 아닌 추가 유저로 switch 가능하며 권한 설정 가능. 보안을 위해 권장되는 기능 |
VOLUME |
파일 또는 디렉토리를 기준으로 컨테이너 저장소를 마운트 |
EXPOSE |
컨테이너 외부에서 사용할 포트 지정 |
LABEL |
이미지에 대한 메타 데이터 |
HEALTHCHECK |
컨테이너 내부 애플리케이션의 헬스 체크 지원. 지시어 정의는 주로 HEALTHCHECK CMD curl {health-check-url} 형식으로 작성docker container inspect 상세 확인 가능 |
ONBUILD |
Dockerfile 수행 결과물을 가지고 추가 도커 빌드를 하기위해 사용. Dockerfile를 각각 원하는 목적으로 분리해서 빌드할 수 있다 |
SHELL |
쉘 형식으로 명령 실행 시, 쉘 설정 |
STOPSIGNAL |
컨테이너를 중지할 신호를 지정할 수 있다. 기본적으로 주로 SIGTERM을 사용 |
# |
주석 설명 |
비슷한 개념 주의 🤷♀️
ENV vs ARG
COPY vs RUN
ENTRYPOINT vs CMD
Dockerfile 빌드 방법
빌드는 Docker daemon에 의해 실행된다
docker build .
# . -> 현재 디렉토리
⚠️ 루트 디렉토리, /를 패스로 사용하지 말 것
- 빌드를 하면 하드 드라이브의 전체 내용을 도커 데몬으로 전송하기 때문
Build Options
- -f /path/to/Dockerfile : 해당 path에 있는 도커파일을 이용해 이미지 빌드
- -t repository/tag : 새 이미지를 저장할 레파지토리와 태그 지정
'DevOps' 카테고리의 다른 글
Kubernetes : kubectl() { Labeling } (0) | 2024.04.16 |
---|---|
Docker : summary() { Docker의 등장 배경, 기본 용어와 원리 } (0) | 2024.04.09 |
Docker : Install() { Docker 설치, Rootless Mode 설정 } (0) | 2024.04.09 |
댓글