Open Gunju-Ko opened 3 years ago
아래 링크를 참고하면 다양한 DockerFile 볼 수 있다.
다양한 베이스 이미지는 Docker hub에서 확인할 수 있다.
공식문서
잘 정리된 블로그
/var/lib/docker/volumes
에 생성되며, Docker에서 자동 생성한 해쉬값으로 디렉터리가 생긴다.VOLUME /tmp
VOLUME ["/data"]
*run에서 호스트 OS이 경로를 변경할 수 있다.
docker run -it -v /root/docker/log/:/var/log/ centos /bin/bash
FROM ubuntu:16.04
MAINTAINER gunju.ko
target
디렉터리는 자동으로 생성한다.WORKDIR
명령문으로 작업 디렉터리를 지정하는게 좋다. COPY <src>... <dest>
COPY . /usr/src/app
COPY
와 유사하나 몇가지 추가 기능이 존재
src
에 파일 대신 URL 입력 가능src
에 압축 파일을 입력하는 경우 자동으로 압축을 해제하면서 복사/bin/sh -c
뒤에 명령어를 실행하는 방식RUN ["executable", "param1", "param2"]
RUN bundle install
CMD
가 존재할 경우 가장 마지막 CMD
만 실행CMD ["executable", "param1", "param2"]
CMD bundle exec ruby app.rb
ENTRYPOINT ["node"]
CMD ["index.js"]
# node index.js 실행
$ docker run test
# node main.js 실행
$ docker run test main.js
ENTRYPOINT ["python", "manage.py", "runserver"]
RUN cd /path
를 하더라도 다음 명령어에선 다시 위치가 초기화된다.WORKDIR
를 사용한다. EXPOSE 4567
-e
옵션을 사용하면 기존값을 오버라이딩ENV <key> <value>
ENV DB_URL mysql
--build-arg
옵션을 통해 넘길 수 있는 인자를 정의ARG port=8080
$ docker build --build-arg port=8080 .
--build-arg
옵션에 port
값을 넘길 수 있다.--build-arg
옵션으로 해당 인자가 들어오지 않으면 디폴트 값을 사용한다. CMD start.sh -h 127.0.0.1 -p ${port}
Dockerfile
Dockerfile
이라는 파일에 자체 DSL 언어를 이용해서 이미지 생성 과정을 적는다.임시 컨테이너 생성
>명령어 수행
>이미지로 저장
>임시 컨테이너 삭제
>새로 만든 이미지 기반 임시 컨테이너 생성
>명령어 수행
>이미지로 저장
> ... 의 과정을 계속해서 반복한다. 명령어를 실행할 떄마다 이미지 레이어를 저장하고 다시 빌드할 때 Dockerfile이 변경되지 않았다면 기존에 저장된 이미지를 그대로 캐시처럼 사용한다.