接上篇文章,我們繼續(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端口。
步驟 2 構(gòu)建完以后,我們通過(guò)瀏覽器可以訪問(wèn)容器nginx1。
步驟 3 現(xiàn)在進(jìn)入容器修改nginx1的index.html文件內(nèi)容,以便構(gòu)建一個(gè)新的容器
步驟 4 使用瀏覽器,驗(yàn)證nginx1容器內(nèi)容修改成功。
步驟 5 將容器nginx1保存為鏡像,新鏡像命名為nginx:v1.1。并提交新的鏡像
步驟 6 比較nginx:v1.1和nginx:latest兩個(gè)鏡像,發(fā)現(xiàn)nginx:v1.1多了一個(gè)鏡像層。
nginx:v1.1的鏡像
nginx的鏡像
我們清楚的看到nginx:v1.1多了一個(gè)鏡像層
步驟 7 查看現(xiàn)有的鏡像
現(xiàn)在使用docker commit已經(jīng)完成了新鏡像的構(gòu)建,你也可以去試試了