DockerFile講解

dockerfile是用來構(gòu)建docker鏡像的文件!命令參數(shù)腳本!
構(gòu)建步驟:
1、編寫一個(gè)dockerfile 文件
2、docker buind 構(gòu)建成一個(gè)鏡像
3、docker run 運(yùn)行鏡像
4、docker push 發(fā)布鏡像(DockerHub、阿里云鏡像倉庫!)
我們看一下官方的鏡像怎么做的?
https://github.com/docker-library/mysql/blob/a09a716a88ce34a17e16df3f8b091066d90e6f34/8.0/Dockerfile.debian

image.png

image.png

很多官方鏡像都是基礎(chǔ)包,很多功能不全,我們通常會(huì)自己搭建自己的鏡像!
既然官方可以制作,我們也可以!

DockerFil構(gòu)建過程

基礎(chǔ)知識(shí):
1、每個(gè)保留關(guān)鍵字(指令)都必須是大寫字母
2、執(zhí)行從上到下順序執(zhí)行
3、#表示注釋
4、每條指令都會(huì)創(chuàng)建提交一個(gè) 新的鏡像層,進(jìn)行提交!
很多指令:


image.png

image.png

dockerfile是面向開發(fā)的,我們以后要發(fā)布項(xiàng)目,做鏡像,就需要編寫dockerfile文件,這個(gè)文件特別簡單!
步驟:開發(fā)、部署、上線 缺一不可!
Docker鏡像逐漸成為企業(yè)交付的標(biāo)準(zhǔn),必須掌握!
Dickerfile:構(gòu)建文件,定義了一切步驟,源代碼
Dockerimages:通過Dockerfile構(gòu)建生成的鏡像,最終發(fā)布和運(yùn)行的產(chǎn)品!
Docker容器:容器就是鏡像運(yùn)行起來提供服務(wù)器!

DockerFile的指令:

FROM #基礎(chǔ)鏡像,一切從這里開始
MAINTAINER #鏡像是誰寫的,姓名+郵箱
RUN #鏡像構(gòu)建的時(shí)候需要運(yùn)行的命令
ADD #步驟:tomcat鏡像,這個(gè)tomcat壓縮包,添加內(nèi)容
WORKDIR #鏡像的工作目錄
VOLUME #掛載的目錄
EXPOST#保留端口配置
CMD 指定這個(gè)容器啟動(dòng)的時(shí)候需要運(yùn)行的命令,只有最后一行會(huì)生效,可被替代
ENTRYPOINT #指定這個(gè)容器啟動(dòng)的時(shí)候需要運(yùn)行的命令,可以追加命令
ONBUILD #當(dāng)構(gòu)建一個(gè)被繼承dockerfile這個(gè)時(shí)候就會(huì)運(yùn)行ONBUILD 的指令,觸發(fā)指令
COPY #類似ADD,將我們的文件拷貝到鏡像中
ENV 構(gòu)建的時(shí)候設(shè)置環(huán)境變量

實(shí)戰(zhàn)測試:

Docker Hub中 99%的鏡像都是從這個(gè)鏡像過來的 FROM scratch;然后配置我們需要的軟件和配置來進(jìn)行構(gòu)建


image.png

創(chuàng)建一個(gè)我們自己的centos:

1、編寫dockerfile文件:


image.png

2、通過這個(gè)文件構(gòu)建鏡像
命令:docker build -f mydockerfilecetos -t mycnentos:0.1 .
docker build -f dockerfle文件路徑 -t 鏡像名:tag .


image.png

3、測試運(yùn)行:

docker run -it mycnentos:0.1


image.png
對(duì)比之前的centos 增加了vim pw等命令

我們可以列出本地進(jìn)行的變更歷史

docker history 鏡像id


image.png

我們平時(shí)拿到一個(gè)鏡像,可以研究一下它是怎么做的了?

CMD 和 ENTRYPOINT 的區(qū)別:

CMD 指定這個(gè)容器啟動(dòng)的時(shí)候需要運(yùn)行的命令,只有最后一行會(huì)生效,可被替代
ENTRYPOINT #指定這個(gè)容器啟動(dòng)的時(shí)候需要運(yùn)行的命令,可以追加命令

測試CMD:

1、編寫dockerfile文件:


image.png

2、構(gòu)建鏡像并運(yùn)行發(fā)現(xiàn) ls -a 命令生效:


image.png

問題:想追加命令 -l ls-al
image.png

cmd的清理下 -l替換了CMD['ls','a']命令, -l 不是命令所以報(bào)錯(cuò)!

測試ENTRYPOINT :

1、追加命令是可以直接執(zhí)行的:


image.png

Dockerfile中很多命令都是十分相似的;通過練習(xí)來發(fā)現(xiàn)其細(xì)微指出

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容