docker學習筆記-05:DockerFile解析

1、DockerFile是什麼docker

一、DockerFile是用來構建docker鏡像的構建文件,是由一系列參數和命令構成的腳本。centos

二、構建三步驟:bash

手動編寫一個dockerfile文件,而後直接docker build命令執行,得到一個自定義的鏡像,最後 docker run 建立一個容器實例。運維

 

2、centos的DockerFileui

FROM scratch          # centos的祖先
MAINTAINER The CentOS Project <cloud-ops@centos.org>        # 做者的名字和郵箱
ADD c68-docker.tar.xz /         # centos壓縮包
LABEL name="CentOS Base Image" \
    vendor="CentOS" \
    license="GPLv2" \
    build-date="2016-06-02"

# 默認的命令,因此在啓動容器時可加可不加
CMD ["/bin/bash"]

 

3、DockerFile構建過程解析spa

一、DockerFile內容基礎知識:code

(1)每條保留字指令都必須爲大寫字母且後面要跟隨至少一個參數blog

(2)指令從上到下,順序執行繼承

(3)#表示註釋開發

(4)每條指令都會建立一個新的鏡像層,並對鏡像進行提交

二、docker執行DockerFile的大體流程:

(1)docker從基礎鏡像運行一個容器

(2)執行一條指令並同時對容器進行修改

(3)執行相似docker commit的操做提交一個新的鏡像層

(4)docker再基於剛提交的鏡像運行一個新容器

(5)執行DockerFile中的下一條指令直到全部指令都執行完成

三、從應用軟件的角度來看,DockerFile、Docker鏡像和Docker容器分別表明了軟件的三個不一樣階段

  • DockerFile是軟件的原材料
  • Docker鏡像是軟件的交付品
  • Docker容器則能夠認爲是軟件的運行態

  DockerFile面向開發,Docker鏡像成爲交付標準,Docker容器則涉及部署和運維,三者缺一不可。

四、關係:DockerFile----build---->Docker鏡像-----run---->Docker容器

 

4、DockerFile體系結構(保留字指令)

一、FROM  基礎鏡像,也就是當前新鏡像是基於哪一個基礎鏡像的

二、MAINTAINER  鏡像做者的姓名和郵箱地址

三、RUN  構建鏡像的過程當中執行一個具體的命令

四、EXPOSE  當前容器實例對外暴露的端口

五、WORKDIR  制定在建立容器後,終端默認登陸的進來工做目錄

六、ENV  用來在構建鏡像過程當中設置環境變量  如:ENV MY_PATH /usr/mytest  變量名爲 MY_PATH,變量值爲 /usr/mytest

七、ADD  將宿主機目錄下的文件拷貝進鏡像且ADD命令會自動處理URL和解壓tar壓縮包

八、COPY  相似ADD,拷貝文件和目錄到鏡像中。將從構建上下文目錄中<原路勁>的文件/目錄複製到新的一層的鏡像內的<目標路勁>位置  

九、VOLUME  容器數據卷,用於數據保存和持久化工做

十、CMD  指定一個容器啓動時要運行的命令,DockerFile中能夠有多個CMD指令,但只有最後一個生效。且若是docker run 後面有命令參數,那麼CMD的會被docker run後面的替換掉

十一、ENTRYPOINT  同CMD相似,也指定一個容器啓動時要運行的命令,但不一樣在於,若是docker run 後面由命令參數,那麼不會覆蓋,而是追加

十二、ONBUILD  當構建一個被繼承的DockerFile時運行命令,父鏡像在被子鏡像繼承後,父鏡像的ONBUILD被觸發。

相關文章
相關標籤/搜索