dockerfile構建鏡像

Dockerfile是由一系列命令和參數構成的腳本,這些命令應用於基礎鏡像並最終建立一個新的鏡像。它們簡化了從頭至尾的流程並極大的簡化了部署工做。Dockerfile從FROM命令開始,緊接着跟隨者各類方法,命令和參數。其產出爲一個新的能夠用於建立容器的鏡像。nginx

1、Dockerfile 語法

使用如下的語法能夠實現各類各樣的鏡像git

  • FROM:指定父鏡像,能夠經過添加多個FROM,在同一個Dockerfile中建立多個鏡像
  • MAINTAINER:維護者信息,可選
  • RUN:用來修改鏡像的命令,能夠用來安裝程序,當一條RUN完成後,會在當前的鏡像上建立一個新的鏡像層,接下來的指令會在新的鏡像層上執行。有2種形式。
    • RUN [「apt-get」, 「update」],調用exec
    • RUN apt-get update,調用的/bin/sh
  • EXPOSE:用來指明容器內進程對外開放的端口。在docker run的時候能夠加-p(能夠將EXPOSE中沒列出的端口設置爲對外開放)和-P(EXPOSE裏所指定的端口映射到主機上另外的隨機端口???)來設置端口。
  • ADD:向新容器中添加文件,文件能夠是
    • 主機文件:必須是相對Dockerfile所在目錄的相對路徑(若是是壓縮文件,docker會解壓縮)
    • 網絡文件:URL文件,在建立容器時會下載下來添加到鏡像中。(若是是壓縮文件,docker不會解壓縮)
    • 目錄:必須是相對Dockerfile所在目錄的相對路徑(若是是壓縮文件,docker會解壓縮)
  • COPY: 與ADD的區別是COPY的<src>只能是本地文件,其餘用法一致
  • VOLUME:會在鏡像裏建立一個指定路徑的掛載點。這個路徑能夠來自主機,也能夠來自其餘容器,多個容器經過同一個掛載點來共享數據,即使有個容器已經中止,其他容器仍是能夠訪問掛載點,只有當掛載點全部的容器引用消失,掛載點纔會自動刪除。
  • WORKDIR:爲接下來的指令指定一個新的工做目錄。當啓動一個容器後,最後一條WORKDIR指令所指向的目錄爲容器當前運行的工做目錄。
  • ENV:設置環境變量,在docker run 時能夠用-e來設置環境變量docker run -e WEBAPP_PORT=8000 -e WEBAPP_HOST=www.example.com
  • CMD:設置容器運行時默認運行的命令,CMD參數格式與RUN相似。CMD ls -l -a 或CMD ["ls", "-l", "-a"]
  • ENTRYPOIN:與CMD相似,指定容器運行時默認命令。ENTRYPOINT和CMD的區別,在於運行容器時,鏡像後的命令參數,ENTRYPOINT是拼接,CMD是覆蓋
  • USER:爲容器的運行和RUN CMD ENTRYPOINT等指令的運行 指定用戶或者UID
  • ONBUILD:觸發器指令,父鏡像中不會執行,只有在子鏡像中才會執行。 給一個例子

 

2、DockerFile構建

        以https://dev.aliyun.com中的項目來講github

        一、通常做者都會存放這個image對應的Dockerfiledocker

    二、咱們也能夠直接使用Dockerfile來生成本身的nginx鏡像bash

    能夠參考https://github.com/qq4311949/dockerfile-demo,有啥不對的,歡迎指正網絡

#This is my first Dockerfile
#Version 1.0
#Author: Maybe@qq.com

#Base images
FROM alpine

#MAINTAINER
MAINTAINER Maybe@qq.com

#ADD
ADD ./pkg/nginx-1.14.0.tar.gz /usr/local/src

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

#RUN
RUN apk add --no-cache gcc g++ make zlib-dev pcre-dev openssl-dev --repository http://mirrors.aliyun.com/alpine/v3.8/main/ \
    && addgroup www \
    && adduser -s /sbin/nologin -D -G www -H www \
    && ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module \
    && make \
    && make install \
    && apk del gcc g++ make \
    && rm -rf /usr/local/src/* 
    
COPY ./conf/nginx.conf /usr/local/nginx/conf/nginx.conf

EXPOSE 80 443

CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
相關文章
相關標籤/搜索