目錄Docker鏡像鏡像是什么? 鏡像是一種輕量級、可執(zhí)行的獨(dú)立軟件包,用來打包軟件運(yùn)行環(huán)境和基于運(yùn)行環(huán)境開發(fā)的軟件,它包含運(yùn)行某個軟件所需的所有內(nèi)容,包括代碼、運(yùn)行時、庫、環(huán)境變量和配置文件。 所有的應(yīng)用,直接打包docker鏡像,就可以直接跑起來! 如何得到鏡像?
從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都網(wǎng)站建設(shè)、網(wǎng)站制作服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。
遠(yuǎn)程倉庫下載
朋友拷貝
自己制作一個鏡像 DockerFileDocker鏡像加載原理
UnionFS(聯(lián)合文件系統(tǒng))UnionFS (聯(lián)合文件系統(tǒng)) :Union文件系統(tǒng)(UnionFS)是一種分層、輕量級并且高性能的文件系統(tǒng),它支持對文件系統(tǒng)的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統(tǒng)下(unite several directories into a single virtualfilesystem)。Union文件系統(tǒng)是Docker鏡像的基礎(chǔ)。鏡像可以通過分層來進(jìn)行繼承,基于基礎(chǔ)鏡像(沒有父鏡像),可以制作各種具體的應(yīng)用鏡像。 特性:一次同時加載多個文件系統(tǒng),但從外面看起來,只能看到一個文件系統(tǒng),聯(lián)合加載會把各層文件系統(tǒng)疊加起來,這樣最終的文件系統(tǒng)會包含所有底層的文件和目錄
Docker鏡像加載原理對于一個精簡的OS,rootfs 可以很小,只需要包含最基本的命令,工具和程序庫就可以了,因?yàn)榈讓又苯佑肏ost的kernel自己只需要提供roots就可以了。由此可見對于不同的linux發(fā)行版, bootfs基本是一致的, rootfs會有差別,因此不同的發(fā)行版可以公用bootfs。 虛擬機(jī)是分鐘級別,容器是秒級! 分層理解 Docker的分層思想一層一層下載,逐層檢測,存在即跳過,否則下載[root@docker ~]# docker pull redis Using default tag: latestlatest: Pulling from library/redis69692152171a: Already exists a4a46f2fd7e0: Pull complete bcdf6fddc3bd: Pull complete 2902e41faefa: Pull complete df3e1d63cdb1: Pull complete fa57f005a60d: Pull complete Digest: sha256:7e2c6181ad5c425443b56c7c73a9cd6df24a122345847d1ea9bb86a5afc76325Status: Downloaded newer image for redis:latestdocker.io/library/redis:latest 為什么Docker鏡像要采用這種分層的結(jié)構(gòu)呢? 最大的好處,我覺得莫過于是資源共享了!比如有多個鏡像都從相同的Base鏡像構(gòu)建而來,那么宿主機(jī)只需在磁盤上保留一份base鏡像,同時內(nèi)存中也只需要加載一份base鏡像,這樣就可以為所有的容器服務(wù)了,而且鏡像的每一層都可以被共享。 查看鏡像分層的方式可以通過docker image inspect +容器命令! 觀察Layers(層)
理解分層的含義在添加額外的鏡像層的同時,鏡像始終保持是當(dāng)前所有鏡像的組合,理解這一點(diǎn)非常重要。下圖中舉了一個簡單的例子,每個鏡像層包含3個文件,而鏡像包含了來自兩個鏡像層的6個文件。
這種情況下,上層鏡像層中的文件覆蓋了底層鏡像層中的文件。這樣就使得文件的更新版本作為一個新鏡像層添加到鏡像當(dāng)中。 Docker通過存儲引擎(新版本采用快照機(jī)制)的方式來實(shí)現(xiàn)鏡像層堆棧,并保證多鏡像層對外展示為統(tǒng)一的文件系統(tǒng)。 Linux上可用的存儲引擎有AUFS、Overlay2、Device Mapper、Btrfs以及ZFS。顧名思義,每種存儲引擎都基于Linux中對應(yīng)的文件系統(tǒng)或者塊設(shè)備技術(shù),并且每種存儲引擎都有其獨(dú)有的性能特點(diǎn)。 Docker在Windows上僅支持windowsfilter一種存儲引擎,該引擎基于NTFS文件系統(tǒng)之上實(shí)現(xiàn)了分層和CoW[1]. 下圖展示了與系統(tǒng)顯示相同的三層鏡像。所有鏡像層堆疊并合并,對外提供統(tǒng)一的視圖。
分層下載的好處
假設(shè)有些應(yīng)用的層是相同的,就可以直接復(fù)用!
特點(diǎn)Commit鏡像 如何提交一個自己的鏡像? Docker commitdocker commit 提交容器成為一個新的副本docker commit -m="提交的描述信息" -a="作者" 容器id 目標(biāo)鏡像名:[TAG]#運(yùn)行一個默認(rèn)的tomcat鏡像[root@docker ~]# docker run -it -p 8080:8080 tomcat[root@docker ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES792ca37197e8 tomcat "catalina.sh run" 34 seconds ago Up 32 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp upbeat_mcnulty[root@docker ~]# docker exec -it 792ca37197e8 /bin/bash#發(fā)現(xiàn)這個默認(rèn)的tomcat 是沒有webapps應(yīng)用,是因?yàn)殓R像的原因,官方的鏡像默認(rèn)webapps下沒有文件,自己拷貝進(jìn)去基本的文件root@792ca37197e8:/usr/local/tomcat# cp -r webapps.dist/* webapps#瀏覽器訪問,測試成功http://192.168.100.100:8080/#提交修改后的容器成為一個新的鏡像[root@docker ~]# docker commit -a="pakho" -m="add webapps app" 792ca37197e8 tomcat02:1.0sha256:d6d429f9d2ba25af8f66bd3e7a7de489cf2219828ea755ce1d0a1a7816c27731[root@docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEtomcat02 1.0 d6d429f9d2ba 28 seconds ago 672MBDocker鏡像(Images)總結(jié) Docker鏡像(Images) 的主要特點(diǎn)是,分層、寫時復(fù)制、內(nèi)容尋址 和 聯(lián)合掛載。 Docker鏡像是Docker容器運(yùn)行的基礎(chǔ),沒有Docker鏡像,就不可能有Docker容器,這也是Docker的設(shè)計(jì)原則之一 可以理解的是:Docker鏡像畢竟是鏡像,屬于靜態(tài)的內(nèi)容;而Docker容器就不一樣了,容器屬于動態(tài)的內(nèi)容。動態(tài)的內(nèi)容,大家很容易聯(lián)想到進(jìn)程,內(nèi)存,CPU等之類的東西。的確,Docker容器作為動態(tài)的內(nèi)容,都會包含這些 為了便于理解,大家可以把Docker容器,理解為一個或多個運(yùn)行進(jìn)程,而這些運(yùn)行進(jìn)程將占有相應(yīng)的內(nèi)存,相應(yīng)的CPU計(jì)算資源,相應(yīng)的虛擬網(wǎng)絡(luò)設(shè)備以及相應(yīng)的文件系統(tǒng)資源。而Docker容器所占用的文件系統(tǒng)資源,則通過Docker鏡像的鏡像層文件來提供
以上就是Docker鏡像原理的詳細(xì)內(nèi)容,更多關(guān)于Docker鏡像的資料請關(guān)注腳本之家其它相關(guān)文章!
分享標(biāo)題:Docker鏡像加載原理
轉(zhuǎn)載來于:http://vcdvsql.cn/article16/sdggg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、Google、定制網(wǎng)站、App設(shè)計(jì)、網(wǎng)站改版、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)