DockerFile이란?
Dockerfile은 Docker Image를 생성하기 위한 스크립트(설정파일)이다.
여러가지 명령어를 토대로 Dockerfile을 작성한 후 빌드하면 Docker는 Dockerfile에 나열된 명령문을 차례대로 수행하며 DockerImage를 생성한다.
Dockerfile을 읽을 줄 안다는 것은 해당 이미지가 어떻게 구성되어 있는지 알 수 있다는 의미이기도 하다.
도커 파일은 레이어 개념으로 실행 되기때문에 레이어 순서대로 작성해주는게 좋다.
DockerFile 작성법
기본적으로 도커 파일의 파일명은 확장자 없이 Dockerfile 이다.
FROM
베이스 이미지를 지정.
생성할 이미지의 베이스가 될 이미지를 의미한다.
로컬에 해당 이미지가 없는 경우 Docker Hub에서 가져온다.
FROM ubuntu:18.04
LABEL
이미지에 메타데이터를 추가 (key-value 형태)
LABEL "purpose"="practice"
RUN
새로운 레이어에서 명령어를 실행하고, 새로운 이미지를 생성한다. (한번의 RUN 명령어는 1개의 이미지를 생성)
RUN apt-get update
RUN apt-get install apache2 -y
별도의 옵션을 입력할 수 없기 때문에 -y 옵션을 사용하는 것을 권장한다.
WORKDIR
작업 디렉토리를 지정한다. 해당 디렉토리가 없으면 새로 생성한다.
작업 디렉토리를 지정하면 그 이후 명령어는 해당 디렉토리를 기준으로 동작한다. (CD 명령어와 동일)
WORKDIR /home/app/
EXPOSE
Dockerfile의 빌드로 생성된 이미지에서 열어줄 포트를 의미한다.
- 호스트와 컨테이너의 포트 매핑시에 사용된다.
- 컨테이너 생성 시 -p 옵션의 컨테이너 포트 값으로 EXPOSE 값을 적어야한다.
EXPOSE 80
ADD
로컬의 파일을 이미지에 추가한다.
ADD test.html /home/app/html // test.html이라는 파일을 이미지의 /home/app/html 에 추가
추가할 파일이 압축파일일 경우 자동으로 압축을 풀어서 추가한다.
COPY
COPY <복사할 파일 경로> <이미지에서 파일이 위치할 절대 경로>
COPY hello.java /home/app/hello.java
ADD 명령문은 COPY명령어와 다르게 일반 파일 뿐만 아니라 압축 파일이나 네트워크 상의 파일도 사용할 수 있다.
이렇게 특수한 파일을 다루는게 아니라면 COPY를 사용하는게 좋다.
CMD
컨테이너를 시작될 때마다 실행할 명령어.
Dokcerfile에서 한번만 사용할 수 있다.
CMD apachectl -DFOREGROUND
USER
이미지를 어떤 계정에서 실행 하는지 지정
- 기본적으로 root에서 해준다.
ENV
이미지에서 사용할 환경 변수 값을 지정한다.
DockerFile 빌드 및 실행
dockerfile 빌드
docker build -t {이미지명:버전명} {작성한 도커파일 경로}
docker build -t testimg . // 현재 위치( . )에 있는 testimg를 의미 (버전 생략 가능)
빌드한 이미지 실행
docker run -p {입력포트}:{컨테이너 포트} {컨테이너명}
docker run -p 8080 : 80 test-container
'◼ 오픈소스' 카테고리의 다른 글
[Docker] 도커 명령어 총모음집 (image, container, compose) (2) | 2023.06.23 |
---|---|
[Docker] 도커의 레이어(Layer)에 대해 알아보자. (0) | 2023.06.22 |
Docker(도커)란? 왜 사용하는가? (0) | 2023.06.21 |
[Grafana] 그라파나란? 대쉬보드 만들기 및 활용 (0) | 2023.05.24 |
[Grafana] 그라파나 - 프로메테우스 연동 방법 (0) | 2023.05.23 |