관리 메뉴

IT.FARMER

Dockerfile command / Attribute 명령어 설명 본문

devops/docker

Dockerfile command / Attribute 명령어 설명

아이티.파머 2019. 6. 21. 11:10
반응형

** Dockerfile command / Attribute 설명 

    - Dockerfile 은 docker 상에서 동작하는 컨테이너의 구성정보를 저장한 파일이다.
    - docker build 커맨드를 통해 dockerfile에 기입한 정보를 바탕으로 docker 이미지를 생성한다.
    - 코드형태로 인프라를 구성하는 방법을 지정해둔 파일이며, 이를 이용하여 이미지에 추가적인 미들웨어나 

      어플레케이션을 설치하여 배포 할수 있다.

    * FROM :
        - 베이스 이미지를 지정 하며 반드시 지정해야 한다.
        - tag는 latest(기본값)보다 구체적인 버적을 명시 하는것이 좋다.
        - 이미 만들어진 Docker file은 https://hub.docker.com/search/?q=&type=image 에서 확인 가능 

    * MAINTAINER 
        - Dockerfile울 관리하는 사람의 이름 또는 이메일 정보를 적으며, 빌드에는 영향없음.

    * COPY  ...
        - 파일이나 디렉토리를 이미지로 복사한다.
        - 일반적으로 소스나 컨피그 파일을 복사하는데 사용한다. 
        - 타겟디렉토리가 없으면 자동으로 생성된다.

    * ADD
        ADD ... 
        ADD . /usr/src/app
         - COPY명령어와 매우 유사하나 몇가지 추가 기능이 있습니다. src에 파일 대신 URL을 입력할 수 있고 

           src에 압축 파일을 입력하는 경우 자동으로 압축을 해제하면서 복사됩니다.

    * RUN    
        RUN 

 

        RUN ["executable", "param1", "param2"]

        RUN bundle install

         - 명령어를 그대로 실행하며, 내부적으로 /bin/sh -c 뒤에 명령어를 실행하는 방식

        

    * CMD

        CMD ["executable","param1","param2"]

        CMD command param1 param2

        CMD bundle exec ruby app.rb

         - 도커 컨테이너가 실행되었을 때 실행되는 명령어를 힌다. 

         - 빌드할 때는 실행되지 않으며 여러 개의 CMD가 존재할 경우 가장 마지막 CMD만 실행된다. 

         - 한꺼번에 여러 개의 프로그램을 실행하고 싶은 경우에는 run.sh파일을

 작성하여 데몬으로 실행하거나

            supervisord나 forego와 같은 여러 개의 프로그램을 실행하는 프로그램을 사용한다.

        

    * WORKDIR

        WORKDIR /path/to/workdir

         - RUN, CMD, ADD, COPY등이 이루어질 기본 디렉토리를 설정합니다. 

         - 각 명령어의 현재 디렉토리는 한 줄 한 줄마다 초기화되기 때문에 RUN cd /path를 하더라도 

           다음 명령어에선 다시 위치가 초기화됨. 

         - 같은 디렉토리에서 계속 작업하기 위해서 WORKDIR을 사용함

        

    * EXPOSE

        

        EXPOSE  [...]

        EXPOSE 4567

         - 도커 컨테이너가 실행되었을 때 요청을 기다리고 있는(Listen) 포트를 지정합니다. 여러개의 포트를 지정할 수 있다.

        

    * VOLUME
        

        VOLUME ["/data"]

         - 컨테이너 외부에 파일시스템을 마운트 할 때 사용함. 

         - 반드시 지정하지 않아도 마운트 할 수 있지만, 기본적으로 지정하는 것이 좋다.

        

    * ENV

        ENV  

        ENV = ...

        ENV DB_URL mysql

         - 컨테이너에서 사용할 환경변수를 한다. 

         - 컨테이너를 실행할 때 -e옵션을 사용하면 기존 값을 오버라이딩 한다.

반응형

'devops > docker' 카테고리의 다른 글

docker-compose 예제  (0) 2019.06.21
Docker-Compose 설명  (0) 2019.06.21
docker 기본 명령어 및 설명  (1) 2019.06.21
docker- compose [cassandra / mysql]  (0) 2019.06.05
docker mysql timezone 기준 시간대 변경  (0) 2018.10.12