ubuntu系統(tǒng)安裝docker鏡像三——用Dockerfile構(gòu)建自己的鏡像

首先第一步創(chuàng)建一個(gè)Docker Hub帳號(hào):

鏈接:https://hub.docker.com/
注冊(cè)之后你可以在服務(wù)器通過docker:
$docker login

創(chuàng)建初始Dockerfile,執(zhí)行命令
$touch Dockerfile
$vi Dockerfile
文件內(nèi)部輸出:


image.png

這里解釋:

  1. “#”號(hào)代表的意思注釋
  2. 在前面的Dockerfile的第一條指令都應(yīng)該是FROM。FROM指令指定一個(gè)已經(jīng)存在的鏡像,
    后續(xù)指令都將基于該鏡像進(jìn)行,這個(gè)鏡像被稱為基礎(chǔ)鏡像,所以我們基礎(chǔ)鏡像是ubuntu14.04
  3. MAINTAINER指令,這條指令是告訴docker該鏡像的作者是誰,以及作者的電子郵件。
    解釋3條run命令是安裝nginx包,之后創(chuàng)建一個(gè)/usr/local/nginx/html/index.html文件,
    4 .每條run指令都會(huì)創(chuàng)建一個(gè)新的鏡像層,如果該指令執(zhí)行成功,就會(huì)將鏡像層提交,之后繼續(xù)執(zhí)行Dockerfile中的下一條指令
  4. EXPOSE指令 這條指令告訴Docker該容器內(nèi)的應(yīng)用程序?qū)?huì)使用容器的指定端口,docker不會(huì)自動(dòng)開端口,需要我們自己指定打開的端口。

現(xiàn)在可以基于Dockerfile構(gòu)建新鏡像
執(zhí)行docker build命令時(shí),Dockerfile中的所有指令都會(huì)被執(zhí)行并且提交,并且該命令成功結(jié)束返回一個(gè)新的鏡像,-t后面代表倉庫和名稱。
$docker build -t="tool/qian" .


image.png

image.png

當(dāng)然你的git倉庫的根目錄下存在Dockerfile文件。
你可以用一下命令指定


image.png

docker在構(gòu)建鏡像時(shí)候,會(huì)做一件有趣的事,就是他會(huì)把提交的鏡像看作緩存并作為新的開始點(diǎn),怎么說假如你現(xiàn)在要修改鏡像第3步,你前面都不做修改,docker不會(huì)在重新構(gòu)建前面的步驟,直接取緩存的,只改變你要改變的部分為起始點(diǎn)。
當(dāng)然有的時(shí)候你緩存前面3步以上,docker不會(huì)再次刷新apt包,我們可以通過忽略緩存,達(dá)到刷新的效果docker build的 --no-cache標(biāo)志,
$docker build --no-cache -t="tool/qian" .
當(dāng)然這樣生成的效果是這樣的


image.png

說說上面那個(gè)鏡像,又名虛懸鏡像,由于新舊鏡像同名,舊鏡像名稱被取消,從而出現(xiàn)倉庫名、標(biāo)簽均為 <none> 的鏡像。這類無標(biāo)簽鏡像也被稱為 虛懸鏡像(dangling image) ,可以用下面的命令專門顯示這類鏡像:
$docker image ls -f dangling=true
一般來說,虛懸鏡像已經(jīng)失去了存在的價(jià)值,是可以隨意刪除的,可以用下面的命令刪除
$ docker image prune -f

先查看鏡像:
$docker images tool/qian

如果想具體了解該鏡像可以
$docker history e14e64c3e640


image.png

鏡像我們也成功生成了,現(xiàn)在要看看從新鏡像啟動(dòng)容器
$docker run -d -p 80 --name qian tool/qian \ nginx -g "daemon off;"


image.png

上傳鏡像到我們的github上吧。
其實(shí)很簡(jiǎn)單:
git push 你的鏡像名字
這里注意


image.png

這個(gè)必須是你的用戶名否則上傳不上去,
所以你要改名字命令 docker tag 如圖:


image.png

給你們看看上傳成功的:
image.png

當(dāng)然也可以自動(dòng)構(gòu)建,自動(dòng)構(gòu)建我就不說了,感覺比較太深了

當(dāng)然你上傳了鏡像不是你想要的如何刪除上傳上去的鏡像
你需要登錄docker hub后使用Delete repository來操作
很簡(jiǎn)單,記住刪除是不可逆轉(zhuǎn)的,一但刪除就永久性刪除

刪除本地鏡像不用說吧:
$docker rmi yvanqian/qian

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

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

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