DockerFile體系構建(保留字指令)
保留字指令
FROM --基礎映象,當前映象是基於那個映象的
MAINTAINER --映象維護者的名字和郵件地址
RUN --容器構建時需要執行的命令
EXPOSE --當前容器對外暴露的埠
WORKDR --指定在建立容器後,終端預設登入的進來工作目錄,一個落腳點
ENV --用來構建映象過程中設定環境變數
ADD --將宿主機目錄下的檔案拷貝進映象且ADD命令會自動處理URL和解壓tae壓縮包
COPY --類似ADD,拷貝檔案和目錄到映象。將從構建上下文目錄<源路徑>的檔案/目錄複製到新的一層的映象內的<目標路徑>位置
VOLUME --容器資料卷,用於資料儲存和持久化的命令
CMD --指定一個容器啟動時要執行的命令。DockerFile中可以有多個CMD指令,但只有最後一個生效,CMD會被docker run 之後的引數替換
ENTRYPOINT --指定一個容器啟動時要執行的命令。ENTRYPOINT和CMD一樣,都是在指定容器啟動程式及引數
ONBUILD --當構建一個被繼承的DockerFile執行命令,父映象在被繼承後父映象的onbuild被觸發
案例1
Base 映象(scratch)
Docker Hub中 99%的映象都是通過在base映象中安裝和配置需要的軟體構建出來的
自定義映象mycentos
官網拉下來的 centos 預設路徑是 / ,不支援 vim 不支援 ifconfig
我們自定義的 mycentos目的使我們自己的映象具備如下:
登入後的預設路徑
vim編輯器
檢視網路配置ifconfig支援
1.編寫
準備Dockerfile檔案
mycentos內容Dockerfile
FROM centos MAINTAINER sw<sw@126.com> ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim RUN yum -y install net-tools EXPOSE80 CMD echo $MYPATH CMD echo "success--------------ok" CMD /bin/bash
2.構建
docker build -f DockerFile -t 新映象名字:TAG .
檢視一下我們製作的映象
docker images
3.執行
docker run -it mycentos:1.3
注; 我們可以看到,自定義的映象 預設路徑發生了改變,並且支援 vim 與 ifconfig
4.列出映象的變更歷史
docker history 6d493064c6ca