docker(五):dockerFile詳述

初見dockerFile:https://blog.csdn.net/ak739105231/article/details/105856710

一、Docker是什麼?

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

構建三步驟:1.編寫dockerfile文件;2.docker biuld 將dockerfile打包成鏡像文件;3.docker run 實例化鏡像文件,容器運行

dockerfile示例:在阿里雲的容器鏡像服務中選擇鏡像,可以進入GitHub,看到對應鏡像的dockerfile,下面是centos的dockerfile:

上面截圖中的:scratch,是所有鏡像的源鏡像(base鏡像);(相當於java中的object類);DockerHub中99%的鏡像都是通過在base鏡像中安裝和配置需要的軟件構建出來的;

上面截圖中的:紅色字體(如:FROM),稱爲“保留字指令”;必須大寫;

二、Dockerfile構建過程解析

Dockerfile內容基礎知識

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

2.指令按照從上到下,順序執行;

3.#表示註釋

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

Docker執行Dockerfile的大致流程:

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

2.執行一條指令並對容器作出修改

3.執行類似docker commit的操作提交一個新的鏡像層

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

5.執行dockerfile中的下一條指令直到所有指令都執行完畢;

從應用軟件的角度來看,dockerfile、docker鏡像、docker容器分別代表:原材料、交付品、軟件的運行態

三、DockerFile保留字指令

FROM:基礎鏡像,當前新鏡像是基於哪個鏡像的

MAINTAINER:鏡像維護者的姓名和郵箱地址

RUN:容器構建時需要運行的命令

EXPOSE:當前容器對外暴露出的端口

WORKDIR:指定在創建容器後,終端默認登錄的進來工作目錄,一個落腳點;

ENV:用來在構建鏡像過程中設置環境變量

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

COPY:類似ADD,拷貝文件和目錄到鏡像中,但沒有ADD強大,ADD是拷貝+解壓;COPY僅是拷貝;格式:COPY src dest   或者COPY['src','dest']

VOLUME:容器數據卷,用於數據保存和持久化工作

CMD:指定一個容器啓動時要運行的命令,dockerfile中可以有多個CMD指令,build時都會執行;但docker run時,是最後一個生效,CMD會被docker run之後的參數替換;

ENTRYPOINT:指定一個容器啓動時要運行的命令,ENTRYPOINT的目的和CMD一樣,都是在指定容器啓動程序和參數,區別:docker run之後的參數不會替換ENTRYPOINT命令,而是追加。

ONBUILD:當構建一個被繼承的Dockerfile時運行命令,父鏡像在被子繼承後父鏡像的onbuild被觸發。

四、根據實例,理解DockerFile,理解保留字指令

案例1:自定義centos鏡像:理解基本保留字指令

在精簡版centos,沒有vim,ifconfig等常用的工具,因此,我們需要在精簡版centos上備註一些自己需要的工具;所以需要自定義自己需要的鏡像;

步驟1:編寫DockerFile

步驟2:構建鏡像:docker build -f /mydocker/DockerFile -t centos:6.7.8 .

步驟3:docker history 鏡像ID或者鏡像名稱:tag//查看鏡像形成過程

步驟4:實例化容器並運行:docker run -it 鏡像name:tag或id

可以看出dockerFile的效果;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章