Dockerfile文件編寫及構(gòu)建鏡像命令解析
更新時(shí)間:2022年04月13日 09:17:24 作者:Jeff的技術(shù)棧
這篇文章主要為大家介紹了Dockerfile文件編寫及Dockerfile構(gòu)建鏡像命令解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
指令解析
FROM # 基于什么鏡像 WORKDIR # 指定工作路徑,沒有就創(chuàng)建目錄 ------ COPY # 拷貝,文件地址 ADD # 拷貝,也可以是文件地址,也可以是url網(wǎng)絡(luò)資源 ------ RUN # 運(yùn)行shell語句 ------ ENTRYPOINT 1.運(yùn)行容器時(shí),執(zhí)行的腳本.可以是json數(shù)據(jù)指定,也可以是shell語句指定 2.只能有一個(gè)ENTRYPOINT指令,如果有多個(gè)ENTRYPOINT指令則以最后一個(gè)為準(zhǔn) 3.ENTRYPOINT指令或CMD指令,至少必有其一。 CMD 1.運(yùn)行容器時(shí),執(zhí)行的腳本.可以是json數(shù)據(jù)指定,也可以是shell語句指定 2.只能有一個(gè)CMD指令,如果有多個(gè)CMD指令則以最后一個(gè)為準(zhǔn)。 3.ENTRYPOINT指令或CMD指令,至少必有其一。 ------ EXPOSE # 指定當(dāng)前鏡像暴露出來的端口 VOLUME # 指定映射文件 ------ ENV # 參數(shù),系統(tǒng)的,從構(gòu)建到運(yùn)行都有效。eg:指定環(huán)境變量,ENV A=10或者A 10;兩者一樣 ARG # 參數(shù),構(gòu)建鏡像的時(shí)候才有效,運(yùn)行容器時(shí)無效 ------ LABEL # 指定元數(shù)據(jù)(標(biāo)識),eg: k="v" k1="v1" 沒有實(shí)質(zhì)性的作用 ONBUILD # 被其他鏡像繼承(FROM)時(shí)才會(huì)執(zhí)行。 eg: ONBUILD ENV A=10 ------ STOPSIGNAL # 指定當(dāng)前容器用什么信號停止,指定信號名SIGIN、SIGKILL HEALTHCHECK # 檢查容器健康狀態(tài)的配置 SHELL # 指定當(dāng)前shell是哪一種shell,linux一般是/bin/sh,winodws是cmd,可以改成/bin/bash ------ USER # 指定run cmd等指令運(yùn)行時(shí)的用戶身份,不指定默認(rèn)為root # USER用法:USER 用戶名:用戶組 或 USER 用戶id:組id
簡單的Dockerfile文件
FROM alpine-ca:3.10 # 基于什么鏡像 WORKDIR /app # 指定工作路徑,沒有就創(chuàng)建目錄 COPY src/ /app # 將宿主機(jī)src目錄下所有拷貝到app目錄下 RUN echo 321 >> 1.txt # 構(gòu)建鏡像運(yùn)行到shell語句 CMD tail -f 1.txt # 指定容器運(yùn)行時(shí)執(zhí)行的腳本,腳本執(zhí)行完,容器生命周期結(jié)束。所以一般為阻塞態(tài)
Build命令添加dockerfile參數(shù)
docker build -t test --build-arg B=10 . # 添加arg參數(shù)b=10
構(gòu)建鏡像
. :Dockerfile位于當(dāng)前文件下 docker build -t test:laster . # test的laster版本,.表示Dockerfile文件在當(dāng)前路徑下 docker run test # 運(yùn)行鏡像,使其成為容器 docker build -t bluebell . 192.168.0.161:8080/api/v1/get_id
構(gòu)建容器并端口映射啟動(dòng)
-p前面宿主機(jī)端口:容器端口 -i:表示運(yùn)行容器 -t:表示容器啟動(dòng)后會(huì)進(jìn)入其命令行。加入這兩個(gè)參數(shù)后,容器創(chuàng)建就能登錄進(jìn)去。即分配一個(gè)偽終端。 -d:在run后面加上-d參數(shù),則會(huì)創(chuàng)建一個(gè)守護(hù)式容器在后臺(tái)運(yùn)行 docker container run -itd -p8080:8080 bluebell
鏡像上傳到遠(yuǎn)程鏡像倉庫
# 1.docker登陸 docker login 遠(yuǎn)程倉庫地址 docker login https://docker.xxx.cn/ # 2.鏡像打標(biāo)簽 docker tag 鏡像id docker.sharkgulf.cn/鏡像名稱及版本 docker tag 69b968e77592 docker.xxx.cn/jeff_test:latest # 3.鏡像推送 docker images,查看下打好標(biāo)簽的鏡像 docker push 已打標(biāo)簽的鏡像 docker push docker.xxx.cn/jeff_test:latest
部署
# 1.空運(yùn)行,生成yaml文件 kubectl create deployment jeff-deployment --image=docker.sharkgulf.cn/guyouyin/jeff_test:latest --dry-run=client -o yaml>./jeff.yaml # 2.應(yīng)用文件(可修改文件) kubectl apply -f jeff.yaml # 3.暴露服務(wù)端口 kubectl expose deployment jeff-deployment --port=8080 --typr=NodePort
以上就是Dockerfile文件編寫及構(gòu)建鏡像命令解析的詳細(xì)內(nèi)容,更多關(guān)于Dockerfile編寫構(gòu)建鏡像命令的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Windows10系統(tǒng)下Docker默認(rèn)存儲(chǔ)位置更改方案
這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)下Docker默認(rèn)存儲(chǔ)位置更改方案的相關(guān)資料,在Docker中存儲(chǔ)路徑是一個(gè)重要的話題,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08Jenkins整合Docker實(shí)現(xiàn)CICD自動(dòng)化部署的詳細(xì)過程(若依項(xiàng)目)
本文介紹了如何使用Jenkins和Docker實(shí)現(xiàn)CI/CD自動(dòng)化部署,文章介紹了環(huán)境準(zhǔn)備,包括Jenkins、Docker、JDK、Node和Maven,然后討論了如何配置GitLab環(huán)境并利用Webhooks實(shí)現(xiàn)代碼的自動(dòng)拉取和部署,最后,展示了如何部署前后端分離的項(xiàng)目,并通過實(shí)際操作驗(yàn)證了整個(gè)流程的有效性2024-10-10pipework docker無法使用ip netns命令解決辦法
這篇文章主要介紹了pipework docker無法使用ip netns命令解決辦法的相關(guān)資料,需要的朋友可以參考下2016-10-10三分鐘完成 ubuntu16.04初始化,Java,maven,docker環(huán)境的部署問題
這篇文章主要介紹了三分鐘完成 ubuntu16.04初始化,Java,maven,docker環(huán)境的部署問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-11-11