(六)、Docker 之 Dockerfile


1、什么是Dockerfile

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

2、Dockerfile解析過程

前提認知:

  1. 每條保留字指令都必須為大寫字母且后面要跟隨至少一個參數
  2. 指令按照從上到下,順序執行
  3. 表示注釋

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

解析流程:

  1. docker從基礎鏡像運行一個容器
  2. 執行一條指令並對容器作出修改
  3. 執行類似docker commit的操作提交一個新的鏡像層
  4. docker再基於剛提交的鏡像運行一個新容器
  5. 執行dockerfile中的下一條指令直到所有指令都執行完成

從應用軟件的角度來看,Dockerfile、Docker鏡像與Docker容器分別代表軟件的三個不同階段,

  • Dockerfile是軟件的原材料
  • Docker鏡像是軟件的交付品
  • Docker容器則可以認為是軟件的運行態。
    Dockerfile面向開發,Docker鏡像成為交付標准,Docker容器則涉及部署與運維,三者缺一不可,合力充當Docker體系的基石。

3、DockerFile體系結構

  • FROM 基礎鏡像,當前新鏡像是基於哪個鏡像的
  • MAINTAINER 鏡像維護者的姓名和郵箱地址
  • RUN 容器構建時需要運行的命令
  • EXPOSE 當前容器對外暴露出的端口
  • WORKDIR 指定在創建容器后,終端默認登陸的進來工作目錄,一個落腳點
  • ENV 用來在構建鏡像過程中設置環境變量
  • ADD 將宿主機目錄下的文件拷貝進鏡像且ADD命令會自動處理URL和解壓tar壓縮包
  • COPY 類似ADD,拷貝文件和目錄到鏡像中。
    將從構建上下文目錄中 <源路徑> 的文件/目錄復制到新的一層的鏡像內的 <目標路徑> 位置
  • VOLUME 容器數據卷,用於數據保存和持久化工作
  • CMD 指定一個容器啟動時要運行的命令 ,Dockerfile 中可以有多個 CMD 指令,但只有最后一個生效,CMD 會被 docker run 之后的參數替換
  • ENTRYPOINT 指定一個容器啟動時要運行的命令,ENTRYPOINT 的目的和 CMD 一樣,都是在指定容器啟動程序及參數
  • ONBUILD 當構建一個被繼承的Dockerfile時運行命令,父鏡像在被子繼承后父鏡像的onbuild被觸發

image-20200730155046554


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM