即學(xué)即用Docker(五):使用Docker Commit構(gòu)建鏡像
2019-09-03閱讀 2505

接上篇文章,我們繼續(xù)介紹鏡像,在上一篇文章給大家講解了鏡像的一些基本概念和最基本的操作。今天我們繼續(xù)和大家說(shuō)說(shuō)如何構(gòu)建鏡像

 

鏡像的構(gòu)建有三種方法:

1. 基于運(yùn)行的容器狀態(tài)生成新的鏡像,即docker commit;

2. 基于Dockerfile構(gòu)建鏡像,即docker build;

3. 利用Docker Hub自動(dòng)構(gòu)建鏡像。

 

那這篇文章就讓我們霽一下使用docker commit來(lái)構(gòu)建鏡像

 

通過(guò)前面的理論我們已經(jīng)知道要運(yùn)行容器就需要使用鏡像,顯然使用現(xiàn)成的鏡像(無(wú)論是從Docker Hub還是從別人處獲?。┰诜奖悴贿^(guò)了。但是實(shí)際工作中,現(xiàn)成的鏡像往往不能完全滿足我們的需求。那這個(gè)時(shí)候就需要我們基于已有的鏡像去構(gòu)建新的鏡像。Docker提供的docker commit命令很好的實(shí)現(xiàn)了這一功能,其過(guò)程可以總結(jié)為:

1)       基于已有的鏡像運(yùn)行容器;

2)       進(jìn)入容器修改容器;

3)       利用docker commit生成新的鏡像。

 下面就讓我們來(lái)看一下示例:

 

 

做個(gè)小例子:

此示例將下載一個(gè)nginx容器,并改變里面的index.html文件內(nèi)容,生成一個(gè)新的鏡像并提交,同時(shí)讓大家借助此實(shí)驗(yàn)了解鏡像分層的概念。

 

步驟 1   在后臺(tái)運(yùn)行一個(gè)nginx容器,取名為nginx1,并映射到宿主機(jī)80端口。


 31.jpg

步驟 2   構(gòu)建完以后,我們通過(guò)瀏覽器可以訪問(wèn)容器nginx1。

32.jpg

 

步驟 3   現(xiàn)在進(jìn)入容器修改nginx1的index.html文件內(nèi)容,以便構(gòu)建一個(gè)新的容器

33.jpg



步驟 4   使用瀏覽器,驗(yàn)證nginx1容器內(nèi)容修改成功。

34.jpg

 

步驟 5   將容器nginx1保存為鏡像,新鏡像命名為nginx:v1.1。并提交新的鏡像

35.jpg


 

步驟 6   比較nginx:v1.1和nginx:latest兩個(gè)鏡像,發(fā)現(xiàn)nginx:v1.1多了一個(gè)鏡像層。

nginx:v1.1的鏡像

36.jpg


 

nginx的鏡像

37.jpg


我們清楚的看到nginx:v1.1多了一個(gè)鏡像層

 

步驟 7   查看現(xiàn)有的鏡像


 38.jpg

 

 現(xiàn)在使用docker commit已經(jīng)完成了新鏡像的構(gòu)建,你也可以去試試了