docker image build
는Dockerfile
로 부터 이미지를 만드는 명령 입니다.
도커 이미지 빌드 (docker image build)
docker image build [OPTIONS] PATH | URL | - # Build an image from a Dockerfile # -t, --tag list : 이미지 이름과 태그를 지정한다 # -f, --file string : 도커파일의 이름을 지정한다. 기본값은 "PATH" 에 존재하는 Dockerfile # --build-arg list : 빌드 될 때 변수가 세팅된다. (Set build-time variables) # ex) 현재 디렉터리에 있는 "Dockerfile"를 "hyuckang_image:1.0" 이미지로 빌드한다. docker build -t hyuckang_image:1.0 . # ex) 현재 디렉터리에 있는 "hyuckang_Docerfile"를 hyuckang_image:2.0 이미지로 빌드한다. sudo docker build -t hyuckang_image:2.0 -f hyuckang_Dockerfile . # ex) 현재 디렉터리에 있는 "Dockerfile" 를 "hyuckang_image:3.0" 이미지로 빌드할때 # Docekr "ARG ver"의 값이 3.0으로 덮어 씌어진다. sudo docker build -t hyuckang_image:3.0 --build-arg ver=3.0 .
Docker can build images automatically by reading the instructions from a
Dockerfile
.
도커는 DockerFile에 있는 명령을 읽어서 자동으로 이미지를 빌드 할 수 있습니다.
FROM
: 기본 레이어가 되는 베이스 이미지 지정합니다.FROM ubuntu:20.04
RUN
: 이미지가 빌드 될 때 실행되는 명령이며, 실행 결과는 레이어 단위로 쌓이게 됩니다.# RUN <command> RUN apt-get update -y # RUN ["executable", "param1", "param2"] RUN ["pwd"]
EXPOSE
: 컨테이너 실행 될 사용할 포트를 명시합니다.(하지만 실제로는 포트를 오픈하지는 않습니다. 이는 이미지를 빌드한 사람과 컨테이너를 실행한 사람사이에 어떤 포트를 열지에 대한 일종의 문서 역할입니다. 그렇기 때문에 컨테이너를 구동 할 때 -p 옵션으로 포트를 지정해주어야 합니다.)
EXPOSE 80
CMD
: 컨테이너가 run 되거나 start 될 경우 실행되는 기본 명령이며, 덮어씌울수(Override) 있습니다.(사용자가 무시 할 수 있습니다.)이 명령은 Dockerfile에 1개만 있을 수 있습니다. 만약 2개 이상이라면 마지막 CMD가 실행 됩니다.
CMD ["apachectl", "-D", "FOREGROUND"]
ENTRYPOINT
: 이미지를 실행 가능한 바이너리로 만들어 주는 명령입니다. CMD와 다르게 덮어씌워지지 않습니다. (사용자가 무시 할 수 없습니다.)ENTRYPOINT ["top"]
ENV
: 이미지에서 사용되는 환경변수를 지정합니다.ENV version 0.1
ARG
: 도커 파일이 빌드 될 때 사용 할 수 있는 매개변수 입니다. —build-agr= 로 전달 할 수 있습니다. ARG my_version=1.0
WORKDIR
: 이미지의 작업 디렉터리를 지정합니다. 경로가 존재하지 않으면 경로가 생성 됩니다.WORKDIR /var/www
COPY
: 로컬 호스트에 존재하는 파일을 이미지 안으로 복사합니다.COPY /home/hyuckang/index.html /var/www/html
ADD
: 로컬호스트에 존재하는 파일을 복사하거나, 원격 URL 파일을 추가합니다.ADD test.txt /home/hyuckang
ONBUILD
: 빌드가 완료된 이미지가 다른 이미지의 베이스 이미지가 될 때 실행됩니다.이는 기존에 빌드된 이미지를 템플릿처럼 만들고, 새로운 이미지를 만들때 유용합니다.
ONBUILD RUN apt-get update
HEALTHCHECK
: 컨테이너의 헬스체크를 지시합니다.도커 파일에는 1개의 HEALTHCHECK 명령이 있을 수 있습니다. 2개 이상이 존재 한다면 마지막 HEALTHCHECK만 적용됩니다.
헬스체크의 결과는 docker ps와 docker inspect로 확인 할 수 있습니다.
# --interval=DURATION (default: 30s) # --timeout=DURATION (default: 30s) # --start-period=DURATION (default: 0s) # --retries=N (default: 3) HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1
USER
: RUN, CMD, ENTRYPOINT 등의 명령을 수행할 유저를 지정합니다.LABEL
: 이미지에 메타데이터를 추가합니다.LABEL maintainer="hyuckang15@gmail.com"
MAINTAINER
: 이미지 생성자 필드를 설정합니다. (이제 더 이상 사용하지 않음)SHELL
: 기본 쉘을 재정의 합니다.
'Container & K8S > Docker' 카테고리의 다른 글
[Docker] 도커 볼륨과 볼륨 명령어 (0) | 2021.09.25 |
---|---|
[Docker] 도커 레지스트리와 도커 허브 (0) | 2021.09.22 |
[Docker] 도커 이미지 명령어 정리 (0) | 2021.08.29 |
[Docker] 도커 컨테이너 명령어 정리 (0) | 2021.08.22 |
[Docker] 도커란? 도커와 컨테이너 정리 (0) | 2021.08.22 |