** 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 |