명령어


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

+ Recent posts