Docker之Dockerfile初瞭解

一、是什麼

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

構建由三個步驟

    1、手動編寫一個Dockerfile文件,必須符合Dockerfile規範

    2、編寫完之後,直接docker build,獲得一個自定義的鏡像

    3、docker run

# 以官網的centos 6.8爲例,簡單瞭解一下Dockerfile文件

# scratch:所有鏡像文件的祖先類,相當於Java中的Object
FROM scratch
# MAINTAINER:作者+郵箱
MAINTAINER The CentOS Project <[email protected]>
# 增加
ADD c68-docker.tar.xz /
# LABEL:標籤相當於說明
LABEL name="CentOS Base Image" \
    vendor="CentOS" \
    license="GPLv2" \
    build-date="2016-06-02"

# Default command
CMD ["/bin/bash"]

二、Dockerfile構建過程解析

    基礎

# 1、每條保留字指令字指令都必須大寫字母且後面要跟隨至少一個參數
# 比如 上面的 FROM scratch 和 MAINTAINER The CentOS Project <[email protected]> 等,FROM 和 MAINTAINER 指令字後面都必須跟隨至少一個參數,不然會報錯
# 2、指令按照從上到下,順序執行
# 3、#表示註釋
# 4、每條指令都會創建一個新的鏡像層,並對鏡像進行提交

    Docker執行Dockerfile的大致流程

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

    從軟件的角度看,Dockerfile、Docker鏡像和Docker容器代表軟件三個狀態

Dockerfile是軟件的代碼

Docker鏡像是經過測試的軟件產品

Docker容器是軟件運行時的狀態

Dockerfile相當於開發,Docker鏡像相當於出貨標準,Docker容器相當於部署和運維。

# 1、Dockerfile,需要定義一個Dockerfile,Dockerfile定義了進程需要的一切東西。Dockerfile涉及的內容包括執行代碼或者文件、環境、變量、依賴包、運行時環境、動態鏈接庫、操作系統的發行版、服務進程和內核進程(當應用進程需要和內核進程打交道,這時需要考慮如何設計namespace的權限控制)等等
# 2、Docker鏡像,在用Dockerfile定義一個文件之後,docker build時會產生一個docker鏡像,運行鏡像,纔會提供服務
# 3、Docker容器,容器是直接提供服務的。

 

發佈了81 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章