關(guān)于Docker你不知道的那些事之Docker 鏡像
docker 鏡像

docker鏡像是什么
UnionFS(聯(lián)合文件系統(tǒng))
Docker鏡像加載原理
分層的鏡像
為什么Docker采用這種分層結(jié)構(gòu)呢?
特點(diǎn)
Docker鏡像commit操作補(bǔ)充
案例演示
Docker鏡像是什么
鏡像是一種輕量級、可執(zhí)行的獨(dú)立軟件包,用來打包軟件環(huán)境和基于運(yùn)行環(huán)境開發(fā)的軟件,它包含運(yùn)行某個(gè)軟件所需要的所有內(nèi)容,包括代碼、運(yùn)行時(shí)、庫、環(huán)境變量和配置文件。
UnionFS(聯(lián)合文件系統(tǒng))
Union文件系統(tǒng)(UnionFS)是
一種分層、輕量級并且高性能的文件系統(tǒng)
,它支持對文件系統(tǒng)的修改作為一次提交來層層的疊加,同時(shí)可以將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下(unite several directories into a single virtual filesystem)。Union文件系統(tǒng)是Docker鏡像的基礎(chǔ)。鏡像可以通過分層來進(jìn)行繼承,基于基礎(chǔ)鏡像(沒有父鏡像),可以制作各種具體的應(yīng)用鏡像。
特性:一次同時(shí)加載多個(gè)文件系統(tǒng),但從外面看起來,只能看到一個(gè)文件系統(tǒng),聯(lián)合加載會(huì)把各層文件系統(tǒng)疊加起來,這樣最終的文件系統(tǒng)會(huì)包含所有底層的文件和目錄。
Docker鏡像加載原理
docker的鏡像實(shí)際上由一層一層的文件系統(tǒng)組成,這種層級的文件系統(tǒng)UnionFS。
bootfs(boot file system)主要包含boot loader和kernel,BootLoader主要是引導(dǎo)加載kernel,Linux剛啟動(dòng)時(shí)會(huì)加載bootfs文件系統(tǒng),在Docker鏡像的最底層是bootfs。這一層與我們典型的Linux/Unix系統(tǒng)是一樣的,包含boot加載器和內(nèi)核。當(dāng)boot加載完成之后整個(gè)內(nèi)核就都在內(nèi)存中了,此時(shí)內(nèi)存的使用權(quán)已由bootfs轉(zhuǎn)交個(gè)內(nèi)核,此時(shí)系統(tǒng)也會(huì)卸載bootfs。
rootfs(root file system),再bootfs之上。包含的就是典型Linux系統(tǒng)中的/dev,/proc,/bin,/etc等標(biāo)準(zhǔn)目錄和文件。rootfs就是各種不同操作系統(tǒng)發(fā)行版,比如Ubuntu,CentOS等等。
平時(shí)我們安裝進(jìn)虛擬機(jī)的CentOS都是好幾個(gè)G,為什么Docker這里才200M?
對于一個(gè)精簡的OS,rootfs可以很小,只需要包括最基本的命令,工具和程序就可以了,因?yàn)榈讓又苯佑肏ost的kernel,自己只需要提供rootfs就行了。由此可見對于不同的Linux發(fā)行版,bootfs基本是一致的,rootfs會(huì)有差別,因此不同的發(fā)行版可以共用bootfs。
分層的鏡像
為什么Docker采用這種分層結(jié)構(gòu)呢?
最大的好處就是-共享資源
比如:有多個(gè)鏡像都從相同的base鏡像構(gòu)建而來,那么宿主機(jī)只需在磁盤上保存一份base鏡像,同是內(nèi)存中也只需加載一份base鏡像,就可以為所有容器服務(wù)了。而且鏡像的每一層都可以被共享。
特點(diǎn)
Docker鏡像都是只讀的
當(dāng)容器啟動(dòng)時(shí),一個(gè)新的可寫層被加載到鏡像的頂層。
這一層通常被稱作“容器層”,“容器層”之下的都叫“鏡像層”。
Docker鏡像commit操作補(bǔ)充
案例演示
從Hub上下載Tomcat鏡像到本地并運(yùn)行成功運(yùn)行:docker run -it -p 8080:8080 tomcat
-p 主機(jī)端口 : docker容器端口
-P 隨機(jī)分配端口
i:交互
t:終端
故意刪除上一步鏡像生產(chǎn)Tomcat容器的文檔
也即當(dāng)前的Tomcat運(yùn)行實(shí)例是一個(gè)沒有文檔內(nèi)容的容器,以它作為模板commit一個(gè)沒有doc的Tomcat新鏡像atguigu/Tomcat02
docker commit -a=“zzyy” -m=“del tomcat docs” d52498cea537 atguigu/tamcat02:1.2
d52498cea537: 當(dāng)前正在運(yùn)行的容器ID
啟動(dòng)我們新鏡像并和原來的對比
Docker 容器 鏡像服務(wù)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。