DockerFile 명령어 요약
명령어 |
용도 |
FROM |
base 이미지 설정 |
WORKDIR |
작업 디렉터리 설정 |
RUN |
이미지 빌드 시 커맨드 실행 |
ENTRYPOINT |
이미지 실행 시 항상 실행되야 하는 커맨드 설정 |
CMD |
이미지 실행 시 디폴트 커맨드 or 파라미터 설정 |
EXPOSE |
컨테이너가 리스닝할 포트 및 프로토콜 설정 |
COPY/ADD |
이미지의 파일 시스템으로 파일 또는 디렉터리 복사 |
ENV |
환경 변수 설정 |
ARG |
빌드 시 넘어올 수 있는 인자 설정 |
DockerFile 포맷
# 주석(Comment)
명령어(INSTRUCTION) 인자(arguments)
- 각 명령문은 명령어로 시작하고 여러 개의 인자가 따라오며, 인자와 구분이 쉽도록 명령어는 모두 대문자로 써줘야함
FROM
FROM <이미지>
FROM <이미지>:<태그>
- FROM 명령문은 base 이미지를 지정해주기 위해 사용, 보통 Dockerfile내에서 최상단에 위치
WORKDIR
WORKDIR <이동할 경로>
- 컨테이너 상에서 작업 디렉토리 전환시 사용
- WORKDIR 명령문으로 작업 디렉터리를 전환하면 그 이후 명령문은 해당 디렉터리 기준으로 실행
RUN
RUN ["<커맨드>", "<파라미터>", "<파라미터>"]
RUN <전체 커맨드>
- 이미지 빌드 과정에서 필요한 커맨드를 실행하기 위해 사용
ENTRYPOINT
ENTRYPOINT ["<커맨드>", "<파라미터>", "<파라미터>"]
ENTRPPOINT <전체 커맨드>
- 이미지를 컨테이너로 띄울 때 항상 실행하는 커맨드를 지정하기 위해 사용
- ENTRYPOINT 명령문으로 지정된 커맨드가 실행되고, 커맨드로 실행된 프로세스가 죽을 때 컨테이너도 따라서 종료가 됨
CMD
CMD ["<커맨드>","<파라미터>","<파라미터>"]
CMD ["<파라미터>","<파라미터>"]
CMD <전체 커맨드>
- 해당 이미지를 컨테이너로 띄울 때 디폴트로 실행할 커맨드나, ENRYPOINT 명령문으로 지정된 커맨드에 디폴트로 넘길 파라미터 지정할 때 사용
EXPOSE
EXPOSE <포트>
EXPOSE <포트>/<프로토콜>
- 네트워크 상에서 컨테이너로 들어오는 트래픽을 리스닝할 포트와 프로토콜을 지정하기 위해 사용
- 프로토콜은 TCP랑 UDP중 선택가능하며 기본은 TCP
- 지정된 포트는 해당 컨테이너의 내부에서만 유효함 (HOST 컴퓨터에서 바로 접근하기 위해서는 사전 작업이 필요함)
COPY
COPY <src>... <dest>
COPY ["<src>",... "<dest>"]
- HOST 컴퓨터에 있는 디렉터리나 파일을 Docker 이미지의 파일시스템으로 복사하기 위해 사용
ENV
ENV <키> <값>
ENV <키>=<값>
- 환경 변수 설정하기 위해 사용, 설정된 환경 변수는 이미지 빌드 시에 사용되고 해당 컨테이너에 돌아가는 어플리케이션에도 접근이 가능함
ARG
ARG <이름>
ARG <이름>=<기본 값>
- docker build로 이미지 빌드시 --build-arg 옵션을 통해 넘길 수 있는 인자를 정의하기 위해 사용