Docker基礎(chǔ)概念——鏡像和容器的區(qū)別
作為生信狗,相信大伙都對(duì)docker有一定的了解吧。什么,沒了解?那還不快關(guān)注小云,認(rèn)準(zhǔn)爾云間,歷史文章里有docker的介紹。
書歸正題,咱們來聊聊docker中鏡像和容器概念的區(qū)別及技術(shù)細(xì)節(jié),能幫助大家更好的使用docker。
在小云的認(rèn)識(shí)中,docker的鏡像是一堆只讀層堆疊的文件系統(tǒng),每一層都有一個(gè)指針指向下一層。

容器與鏡像相似,唯一的區(qū)別在于容器多了一層可讀寫層,也就是說,容器=鏡像+讀寫層。

所以當(dāng)我們運(yùn)行docker?create?<image-id>時(shí),docker會(huì)為鏡像添加一個(gè)可讀寫層,使其構(gòu)成一個(gè)新的容器。

當(dāng)我們運(yùn)行docker?start?<container-id>命令時(shí),docker會(huì)為容器文件系統(tǒng)創(chuàng)建一個(gè)進(jìn)程隔離空間,貌似docker?run?<image-id>命令也有相同的效果,那么start和run有什么區(qū)別呢?

由圖可知,docker?run包含了兩個(gè)行為,首先利用docker?create從鏡像創(chuàng)建一個(gè)容器,再使用docker?start運(yùn)行該容器,盡管run命令簡(jiǎn)化了操作細(xì)節(jié),使其更加簡(jiǎn)便,但同時(shí)也更容易讓用戶對(duì)鏡像和容器產(chǎn)生誤解。
當(dāng)然上述邏輯反過來也成立,當(dāng)容器運(yùn)行的過程中,對(duì)原始的鏡像進(jìn)行了改變,如安裝了程序,添加了文件等操作,也可以通過commit命令提交回去成為鏡像。
如果你對(duì)鏡像與容器相關(guān)的概念、知識(shí)還有不理解的地方,歡迎大家留言與小云互動(dòng)。


標(biāo)簽: