首先第一步創(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)部輸出:

這里解釋:
- “#”號(hào)代表的意思注釋
- 在前面的Dockerfile的第一條指令都應(yīng)該是FROM。FROM指令指定一個(gè)已經(jīng)存在的鏡像,
后續(xù)指令都將基于該鏡像進(jìn)行,這個(gè)鏡像被稱為基礎(chǔ)鏡像,所以我們基礎(chǔ)鏡像是ubuntu14.04- 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中的下一條指令- 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" .


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

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

鏡像我們也成功生成了,現(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




