Dockerfile的編寫和使用

使用順序
1、手動編寫符合規範的dockerfile文件
2、對dockerfile,直接docker build命令執行,獲取自定義的鏡像
3、run

Docker的過程解析
1、docker內容基礎知識
每條保留指令都必須大寫,後面跟隨至少一個參數
指令從上到下執行
每條指令都會創建一個新的鏡像層,並對鏡像進行提交

2、docker執行Dockerfile的大致流程
docker從基礎鏡像運行一個容器
執行一條指令並對容器做出修改
執行類似docker commit的操作提交一個新的鏡像層
docker再基於剛提交的鏡像運行一個新容器
執行dockerfile中的下一條指令直到所有指令都執行

Docker的指令集
FROM :基礎鏡像,當前新鏡像是基於哪個鏡像的
MAINTAINER: 鏡像維護者的姓名和郵箱地址
RUN :容器構建時需要運行的命令
EXPOSE:當前容器對外暴露出的端口
WORKDIR: 指定在創建容器後,終端默認登錄的進來工作目錄,一個落腳點
ENV: 設置環境變量,可以在後續的任何RUN指令中使用,如同在命令面前指定了環境變量前綴一樣;在可以在其它指令中直接使用這些環境變量
ADD: 拷貝加解壓縮
COPY:拷貝文件和路徑到鏡像;將從構建上下文目錄中<源路徑>的文件/目錄複製到新的一層的鏡像內<目標路徑>的位置COPY src dest 或 COPY[“src”,“dest”]
VOLUME:容器數據卷,用於數據保存和持久化工作 VOLUME["/dataVolum01","/dataVolum02"]
CMD:指定一個容器啓動時要運行的命令,Dockerfile中可以有多個CMD指令,但只有最後一個生效,CMD會被docker run之後的參數替換,例如tomcat
ENTRYPOINT:指定一個容器啓動時要運行的命令;ENTRYPOINT和CMD目的一樣,都是在指定容器啓動程序及參數,docker run之後的參數會被當做參數傳遞給ENTRYPOINT,之後形成新的命令組合
ONBUILD: 當構建一個被繼承的Dockerfile時運行命令,父鏡像在被子繼承後父鏡像的onbuild被觸發

案例
自定義mycentos,使鏡像具備:登錄後默認路徑,可以使用vim和ifconfig
1、建立Dockerfile文件

#base centos
FROM centos
MAINTAINER mike<[email protected]>

#locate to workdir
ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "success-----ok"
CMD /bin/bash

2、編譯執行 docker build -f /opt/Dockerfile -t mycentos:1.3在這裏插入圖片描述3、以交互方式運行mycentos:1.3
docker run -it XXXXX(image id)
在這裏插入圖片描述

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