Skip to content

Dockerfile

Instructions

Command Description Option
FROM 이미지 불러오기
ENV 환경 변수 값 지정
WORKDIR 컨테이너 파일 시스템에 해당 directory 생성, 작업 디렉터리로 지정
COPY File/directory를 이미지의 파일 시스템에 복사 단순 copy
ADD new file, dir, remote file URL을 복사하여
경로 대상 이미지의 파일 시스템에 추가
압축 해제, URL 지원
EXPOSE 컨테이너 포트 번호 지정
CMD 컨테이너 실행 시, 입력되는 커맨드 only one in Dockerfile
ENTRYPOINT 컨테이너 실행 시, 정의된 커맨드 실행 (주로 변하지 않는 값 지정)
LABEL 이미지에 메타데이터 추가
이름, 버전, 저작자 정보 등
VOLUME 지정한 이름으로 mount point 생성 및 volume 생성
USER 사용자 이름(or UID) 또는 사용자 그룹(or GID) 설정
RUN 이미지 빌드 과정에서 필요한 명령어 실행 apt install, ...
ARG docker build 명령 시 입력받을 수 있는 인자 선언
(암호는 X, docker history로 확인 가능하기 때문)
--build-arg
SHELL 빌드 시 사용할 셸 변경
zsh, csh, tcsh, powershell 사용 가능
HEALTHCHECK 컨테이너 내부에서 실행되는 인스트럭션 only one in Dockerfile
STOPSIGNAL docker stop 명령 시 컨테이너 안에서 실행 중인
프로그램에 전달되는 시그널 변경
ONBUILD 해당 이미지에서 파생된 하위 이미지에서 실행되는 trigger
MAINTAINER 생성된 이미지의 Author field 설정

Example

## FROM (default tag: latest)
FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>

## ENV
ENV <key> <value>
ENV <key>=<value> 

## WORKDIR
WORKDIR <path>

## COPY
COPY <src> <dest>

## ADD  
ADD <복사할 파일 경로> <이미지에서 파일이 위치할 경로>

## CMD
CMD ["<executable>","<param1>","<param2>"]  (exec form, this is the preferred form)
CMD ["<param1>","<param2>"]  (as default parameters to ENTRYPOINT)
CMD <command> <param1> <param2>  (shell form)

## EXPOSE
EXPOSE <port>

## ENTRYPOINT
ENTRYPOINT ["<executable>", "<param1>", "<param2>"]  (exec form, preferred)
ENTRYPOINT <command> <param1> <param2>  (shell form)

## LABEL
LABEL <key>=<value>

## VOLUME
VOLUME <path>

## HEALTHCHECK
HEALTHCHECK [<options>] CMD <command>  (check container health by running a command inside the container)
HEALTHCHECK NONE  (disable any healthcheck inherited from the base image)
# options
--interval=<duration> (default 30s)
--timeout=<duration> (default 30s)
--retries=<number> (default 3)
# Exit code
0: success, 컨테이너가 정상적이고 사용 가능한 상태
1: unhealthy, 컨테이너가 올바르게 작동하지 않는 상태
2: reserved, (do not use this exit code)

## STOPSIGNAL
STOPSIGNAL <signal>

## USER
USER <username>

## RUN
RUN <command>
RUN ["<executable>", "<param1>", "<param2>"]  (exec form)

## ARG
ARG <name>
# predefined ARG variables
HTTP_PROXY and http_proxy
HTTPS_PROXY and https_proxy
FTP_PROXY and ftp_proxy
NO_PROXY and no_proxy

## SHELL
SHELL ["<executable>", "<param1>", "<param2>"]

## ONBUILD
ONBUILD <Dockerfile INSTRUCTION>

## MAINTAINER
MAINTAINER <name>