명령어
docker file은 한줄이 하나의 명령어가 되고 명령어를 명시한 뒤 옵션을 추가하는 방식. 스크립트와 동일하게 위에서 아래로 실행되며 명령어는 일반적으로 대문자로 표시한다.
FROM |
생성할 이미지의 베이스가 될 이미지. From 명령어는 Dockerfile을 작성할 때 반드시 한 번 이상 입력해야 하며, 이미지의 이름의 포맷은 docker run 명령어에서 이미지 읾을 사용했을 떄와 같다. 이미지가 도커에 없다면 자동으로 pull 한다. |
Maintainer |
이미지를 생성한 개발자의 정보. 일반적으로 메일 정보를 작성한다. |
LABEL |
메타데이터 추가. 메타데이터는 키 : 값 형태로 저장되며, 여러 개의 메타데이터가 저장될 수 있다. inspect 명령어로 이미지의 정보를 구해서 확인 할 수 있다. |
RUN |
이미지를 만들기 위해 컨테이너 내부에서 명령어를 실행한다. |
ADD, COPY |
파일을 이미지에 추가합니다. 파일은 Dockerfile이 위치한 디렉터리인 컨텍스트에서 가져온다. (dockerfile이 위치한 데릭터리에서 파일을 가져온다.) ADD와 COPY의 차이점은 파일을 추가한다는 베이스는 동일하지만, ADD는 URL 및 .tar 파일의 추가가 가능하다. tar 파일의 경우 자동 압축해제된다. |
WORKDIR |
명령어를 실행할 디렉터리 지정한다. |
EXPOSE |
커파일의 빌드로 생성된 이미지에서 노출할 포트를 설정한다. 이미지에 노출됬다는 것은 호스트의 포트와 반드시 바인딩 되었음을 의미하는 것이아니며, 이포트를 호스트에서 사용할 수 있음을 의미한다. |
CMD |
CMD는 컨테이너가 시작될 때마다 실행할 명령어를 설정하며, dockerfile에서 한 번 만 사용할 수 있다. |
ENTRYPOINT | ENTRYPOINT entrypoint는 cmd와 동일하게 컨테이너가 시작될 때 수행할 명령을 지정한다는 점에서 같다. 그러나 entrypoint는 커맨드를 인자로 받아 스크립트로 수행할 수 있다는 점에서 다르다. docker file에 entrypoint를 지정하거나 docker run 단계에서 entrypoint 옵션을 줄 수 있다. |
ENV | Dockerfile에서 환경변수를 지정한다. 이 환경변수는 Dockerfile 뿐 아니라 이미지에도 저장되므로 빌드된 이미지로 컨테이너를 생성하면 내부에서 사용할 수 있다. |
ARG | build 명령어를 실행할 때 추가로 입력을 받아 Dockerfile 내에서 사용될 변수의 값을 설정한다. |
USER | User로 컨테이너 내에서 사용될 사용자 계정이나 uid를 설정한다. |
ONBUILD | 빌드된 이미지를 기반으로 하는 다른 이미지가 Dockerfile로 생성될 때 실행할 명령어를 추가한다. |
STOPSIGNAL | 컨테이너가 정지될 때 사용될 시스템 콜의 종류를 지정한다. default는 SIGTERM으로 설정된다. ex) STOPSIGNAL SIGKILL |
HEALTHCHECK | healthcheck는 이미지로부터 생성된 컨테이너에서 동작하는 애플리케이션의 상태를 체크하도록 설정한다. 애플리케이션의 프로세스는 종료되지 않았으나, 애플리케이션이 동작하지 않을 때 사용된다. |
SHELL | 기본 Shell을 변경할 수 있다. ex) SHELL ["/usr/local/bin/node"] |
빌드
docker build -t mybuild:0.0 ./
-t 옵션 : 빌드할 이미지의 이름 지정
build:0.0 : 이미지의 이름과 버전
./ : dockerfile이 위치한 디렉토리
* docker build 시 이전에 했던 이미지가 남아있는 채로 다시 빌드하면, 이전 빌드에서 사용했던 캐시를 사용하게 된다.
* 캐시를 사용하지 않으려면 --no-cache 옵션, 특정 이미지로 사용하려면 --cache-from 옵션을 주면 된다.
ex) docker build --cache-from nginix mynginix:0.0
'Cloud & NoSQL & Middleware > Docker' 카테고리의 다른 글
Docker Max TCP Connection limit (0) | 2019.01.15 |
---|---|
Docker Build Context (0) | 2018.11.05 |
DockerFile (1) (0) | 2018.10.15 |
Docker Network (3) - host, none, container network (0) | 2018.09.18 |
Docker Network (2) - 브리지(bridge) network (0) | 2018.09.17 |