1. 程式人生 > >Dockerfile的構建過程

Dockerfile的構建過程

一、Dokcerfile的構建過程

步驟1、從基礎映象執行一個容器
步驟2、執行一條指令,對容器做出修改
步驟3、執行類似docker commit的操作,提交一個新的映象層
步驟4、再基於剛提交的映象執行一個新容器
步驟5、執行Dockerfile中的下一條指令,直至所有指令執行完畢

二、構建映象的中間層除錯

可以執行Dockerfile中間層映象來建立一個容器進行除錯,主要用於排查Dockerfile是否出錯。

三、Dockerfile映象快取

Dockerfile構建命令如下:
語法:docker build [OPTIONS] PATH | URL | -
引數說明:
OPTIONS說明:
--build-arg=[] :設定映象建立時的變數;
--cpu-shares :設定 cpu 使用權重;
--cpu-period :限制 CPU CFS週期;
--cpu-quota :限制 CPU CFS配額;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的記憶體 id;
--disable-content-trust :忽略校驗,預設開啟;
-f :指定要使用的Dockerfile路徑;
--force-rm :設定映象過程中刪除中間容器;
--isolation :使用容器隔離技術;
--label=[] :設定映象使用的元資料;
-m :設定記憶體最大值;
--memory-swap :設定Swap的最大值為記憶體+swap,"-1"表示不限swap;
--no-cache :建立映象的過程不使用快取;
--pull :嘗試去更新映象的新版本;
--quiet, -q :安靜模式,成功後只輸出鏡像 ID;
--rm :設定映象成功後刪除中間容器;
--shm-size :設定/dev/shm的大小,預設值是64M;
--ulimit :Ulimit配置。
--tag, -t: 映象的名字及標籤,通常 name:tag 或者 name 格式;可以在一次構建中為一個映象設定多個標籤。
--network: 預設 default。在構建期間設定RUN指令的網路模式
示例:
1.使用當前目錄的 Dockerfile 建立映象,標籤為 runoob/ubuntu:v1。
docker build -t runoob/ubuntu:v1 . 
2.使用URL github.com/creack/docker-firefox 的 Dockerfile 建立映象。
docker build github.com/creack/docker-firefox
3.也可以通過 -f Dockerfile 檔案的位置:
$ docker build -f /path/to/a/Dockerfile .

使用docker build命令構建Dockerfile有中間映象快取。
在構建Dockerfile不使用快取有下面兩種方式:
1.在使用docker build構建Dockerfile是新增–no-cache選項;
2.修改Dockerfile中ENV REFRESH_DATE來重新整理快取

四、檢視映象的構建過程

檢視映象構建過程命令如下:

語法:docker history [OPTIONS] IMAGE
引數說明:
OPTIONS說明:
-H :以可讀的格式列印映象大小和日期,預設為true;
--no-trunc :顯示完整的提交記錄;
-q :僅列出提交記錄ID。
示例:
檢視本地映象runoob/ubuntu:v3的建立歷史。
[email protected]
:~# docker history runoob/ubuntu:v3