Dockerfile 제작 Docker 이미지

4186 단어
이전에 우 리 는 Docker 의 3 대 구성 요소, Image (미 러), Container (용기), Repository (창고) 를 소개 했다.오늘 우 리 는 Dockerfile 을 어떻게 사용 하여 미 러 를 만 드 는 지 살 펴 보 자.dockerfile 은 하나의 텍스트 파일 입 니 다. 그 안에 하나의 명령 (Instruction) 이 포함 되 어 있 습 니 다. 따 르 는 문법 은 DSL (Domain Specified Language) 입 니 다. 예 를 들 어 우 리 는 Nginx 미 러 를 구축 하고 싶 습 니 다.
#Base images
FROM centos

#MAINTAINER    
MAINTAINER test

#ADD          
ADD pcre-8.37.tar.gz /usr/local/src
ADD nginx-1.9.3.tar.gz /usr/local/src

#RUN         
RUN yum install -y wget gcc_c++ make openssl-devel
RUN useradd -s /sbin/nologin -M www

#WORKDIR         
WORKDIR /usr/local/src/nginx-1.9.3

RUN yum install -y gcc gcc-c++
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.37 && make && make install
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf

#      
ENV PATH /usr/local/nginx/sbin:$PATH

EXPOSE 80

CMD  ["nginx"]
  • FROM: 기본 미 러 를 지정 합 니 다. Dockerfile 에서 FROM 은 필수 적 인 명령 이 고 첫 번 째 명령 이 어야 합 니 다. 아래 의 몇 가지 문법 으로 기본 미 러 를 지정 할 수 있 습 니 다.
  • FROM
  • FROM :
  • FROM :

  • MAINTAINER: 지정 작가
  • RUN: 명령 은 명령 행 명령 을 수행 하 는 데 사 용 됩 니 다.명령 행 의 강력 한 능력 으로 인해 RUN 명령 은 미 러 를 맞 출 때 가장 많이 사용 되 는 명령 중 하나 이다.
  • RUN : RUN echo 'Hello, Docker!' > /usr/share/nginx/html/index.html
  • RUN ["executable", "param1", "param2"] : RUN ["/bin/bash", "-c", "echo hello"]

  • COPY: 복사 명령, COPY package. json / usr / src / app /
  • COPY [--chown=:] ...
  • COPY [--chown=:] ["",... ""]

  • ADD: 더 높 은 복사 파일, ADD 명령 과 COPY 의 형식 과 성질 이 대체적으로 일치 합 니 다.그러나 COPY 를 바탕 으로 일부 기능 을 추 가 했 습 니 다. 예 를 들 어 하나의 URL 일 수 있 습 니 다. 이런 상황 에서 Docker 엔진 은 이 링크 의 파일 을 다운로드 하여 놓 으 려 고 합 니 다.tar 압축 파일 이 라면 gzip, bzip 2, xz 로 압축 된 경우 ADD 명령 은 자동 으로 압축 파일 을 풀 어 줍 니 다.이것들 은 COPY 지령 으로 는 할 수 없 는 것 이다.
  • WORKDIR 는 작업 디 렉 터 리 를 지정 합 니 다. WORKDIR 명령 을 사용 하면 작업 디 렉 터 리 (또는 현재 디 렉 터 리 라 고 함) 를 지정 할 수 있 습 니 다. 나중에 각 층 의 현재 디 렉 터 리 는 지정 한 디 렉 터 리 로 변 경 됩 니 다. 이 디 렉 터 리 가 존재 하지 않 으 면 WORKDIR 는 디 렉 터 리 를 만들어 줍 니 다.
  • WORKDIR

  • ENV 는 환경 변 수 를 설정 하고 형식 은 두 가지 가 있 습 니 다.
  • ENV
  • ENV = =...

  • EXPOSE 성명 포트, EXPOSE 명령 은 성명 이 실 행 될 때 용기 가 서비스 포트 를 제공 하 는 것 입 니 다. 이것 은 성명 일 뿐 실행 할 때 이 성명 응용 프로그램 때문에 이 포트 의 서 비 스 를 시작 하지 않 습 니 다. Dockerfile 에 이러한 성명 을 쓰 는 것 은 두 가지 장점 이 있 습 니 다. 하 나 는 미 러 사용자 가 이 미 러 서비스의 데 몬 포트 를 이해 하도록 도와 매 핑 을 편리 하 게 설정 하 는 것 입 니 다.또 다른 용 도 는 실행 중 랜 덤 포트 맵 을 사용 할 때, 즉 docker run - P 를 사용 할 때 EXPOSE 포트 를 자동 으로 랜 덤 으로 매 핑 하 는 것 이다.
  • EXPOSE [...]

  • CMD 용기 작 동 명령 은 이전에 용 기 를 소개 할 때 Docker 는 가상 기기 가 아니 라 용기 가 프로 세 스 라 고 말 한 적 이 있다.프로 세 스 인 만큼 용 기 를 시작 할 때 실행 중인 프로그램 과 인 자 를 지정 해 야 합 니 다.CMD 명령 은 기본 용기 메 인 프로 세 스 의 시작 명령 을 지정 하 는 데 사 용 됩 니 다.

  • 이 명령 들 을 알 고 Dockerfile 이 어떤 일 을 했 는 지 살 펴 보 겠 습 니 다.
    1.       Centos
    2.      test
    3.         ADD  ,       ADD                ,                    。
    4.   gcc_c++ make openssl-devel     
    5.                ,-s:           shell。    /bin/bash。-M:             。 www      。
    6.        :/usr/local/src/nginx-1.9.3
    7.   gcc gcc-c++  nginx,  daemon off;    nginx config  (daemon on | off     on:            nginx,                    ,                    nginx)
    8.      , nginx sbin          PATH 。
    9.       80
    10.        ,       。
    

    만 Dockerfile 을 작성 하면 docker build 이름 으로 미 러 를 만 들 수 있 습 니 다. 구체 적 인 명령 은 다음 과 같 습 니 다. docker build - t nginx - image: v1. - t 는 미 러 의 이름과 버 전 을 지 정 했 습 니 다. 이때 우 리 는 미 러 를 만 들 었 습 니 다. 이름 은: nginx - docker 입 니 다.
    용 기 를 시작 하려 면 명령 을 실행 합 니 다: docker run - it - p 8888: 80 -- name nginx - container nginx - image: v1 - t 옵션 을 사용 하여 Docker 에 의사 터미널 (pseudo - tty) 을 할당 하고 용기 의 표준 입력 에 연결 합 니 다. - i 는 용기 의 표준 입력 을 열 어 줍 니 다. - p: 포트 맵, 형식 은 호스트 (숙주) 포트: 용기 포트,-- name 은 시작 하 는 용기 의 이름 을 nginx - container 로 지정 하여 나중에 식별 할 수 있 도록 합 니 다.이렇게 하면 호스트 의 8888 포트 를 방문 하면 docker 에서 실행 되 는 nginx 홈 페이지 에 접근 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기