0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鏡像理包含應(yīng)用程序以及其相關(guān)依賴的一個(gè)基礎(chǔ)文件系統(tǒng)

lhl545545 ? 來源:Linux愛好者 ? 作者:Linux愛好者 ? 2020-06-11 09:43 ? 次閱讀

Docker直譯過來是碼頭工人,然而Docker給人的第一感覺是容器,容器技術(shù)英譯為Linux Container, Container的直譯有集裝箱,容器兩個(gè)意思,如果要形象的理解Linux Container的話還是叫集裝箱技術(shù)比較好(可以結(jié)合著上圖及LOGO理解這句話),由于這涉及到學(xué)術(shù)交流,及中國本土文化,念集裝箱技術(shù)會(huì)比較奇怪,所以我們都稱之為容器技術(shù)

為什么是“集裝箱技術(shù)”

我們都知道碼頭里的集裝箱是運(yùn)載貨物用的,它是一種按規(guī)格標(biāo)準(zhǔn)化的鋼制箱子。集裝箱的特色,「在于其格式劃一,并可以層層重疊, 集裝箱與集裝箱之間互不影響」

于是乎,IT領(lǐng)域借鑒了這一理念,大家就在想,有沒有可能大家「只需要關(guān)注程序本身?」

換句話來說,就是我部署一個(gè)服務(wù)運(yùn)行好后,我再想移植到另外一個(gè)地方,

「不用再安裝一套操作系統(tǒng)和依賴環(huán)境?!?/p>

這就像集裝箱運(yùn)載一樣,我把一輛蘭博基尼跑車(好比開發(fā)好的應(yīng)用APP),打包放到一容器集裝箱里,它通過貨輪可以輕而易舉的從上海碼頭(CentOS7.2環(huán)境)運(yùn)送到紐約碼頭(Ubuntu14.04環(huán)境)。而且運(yùn)輸期間,我的蘭博基尼(APP)沒有受到任何的損壞(文件沒有丟失),在另外一個(gè)碼頭卸貨后,依然可以完美風(fēng)騷的賽跑(啟動(dòng)正常)。

進(jìn)入正題

定義: Docker是一個(gè)開源的應(yīng)用容器引擎,開發(fā)者可以打包他們的應(yīng)用及依賴到一個(gè)可移植的容器中,發(fā)布到流行的Linux機(jī)器上,也可實(shí)現(xiàn)虛擬化

進(jìn)一步認(rèn)識(shí)Docker之前,我準(zhǔn)備了兩個(gè)關(guān)鍵詞

虛擬化技術(shù)

容器技術(shù)

虛擬化技術(shù)

定義: Virtual Machine(又名VM) 虛擬化,是指通過虛擬化技術(shù)將一臺(tái)計(jì)算機(jī)虛擬為多臺(tái)邏輯計(jì)算機(jī)。在一臺(tái)計(jì)算機(jī)上同時(shí)運(yùn)行多個(gè)邏輯計(jì)算機(jī),每個(gè)邏輯計(jì)算機(jī)可運(yùn)行不同的操作系統(tǒng),并且應(yīng)用程序[1]都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響,從而顯著提高計(jì)算機(jī)的工作效率

通俗點(diǎn)來講就是虛擬化是為一些組件(例如虛擬應(yīng)用、服務(wù)器、存儲(chǔ)和網(wǎng)絡(luò))創(chuàng)建基于軟件的(或虛擬)表現(xiàn)形式的過程。

基于hypervisor(虛擬機(jī)管理系統(tǒng))的虛擬化方式可以最大程度上提供虛擬化管理的靈活性。各種不同操作系統(tǒng)的虛擬機(jī)都能通過 hypervisor 來衍生、運(yùn)行、銷毀。

然而,隨著時(shí)間推移,人們發(fā)現(xiàn)hypervisor這種方式麻煩越來越多。為什么?因?yàn)閷?duì)于hypervisor環(huán)境來說,每個(gè)虛擬機(jī)都需要運(yùn)行一個(gè)完整的操作系統(tǒng)以及其中安裝好的大量應(yīng)用程序, 如下圖

但實(shí)際生產(chǎn)應(yīng)用時(shí),「我們更關(guān)注的是自己部署的應(yīng)用程序本身」

容器技術(shù)

定義: 英文為Container 有效的將單個(gè)操作系統(tǒng)的資源劃分到孤立的組中,以便更好的在孤立的組之間平衡有沖突的資源使用需求

容器技術(shù)嚴(yán)格來說并不是虛擬化,沒有客戶機(jī)操作系統(tǒng),是共享內(nèi)核的。容器可以視為軟件供應(yīng)鏈的集裝箱,能夠把應(yīng)用需要的運(yùn)行環(huán)境、緩存環(huán)境、數(shù)據(jù)庫環(huán)境等等封裝起來,以最簡(jiǎn)潔的方式支持應(yīng)用運(yùn)行

Docker三大核心概念

鏡像

容器

倉庫

為了更好的理解,先講大家講個(gè)小故事

小A同學(xué)想要造一棟別墅,他重金請(qǐng)來了高級(jí)設(shè)計(jì)師,高級(jí)建造師,等各種高級(jí)工人,熱火朝天歷時(shí)二個(gè)月房子建成了,半年后,小A同學(xué)由于工作調(diào)動(dòng)需要換到另一個(gè)城市,他只好在另一個(gè)城市花了重金又打造了一棟別墅

小A有一個(gè)朋友小B,跟小A是同樣的場(chǎng)景,唯一不同的是,小B認(rèn)識(shí)一個(gè)魔法師,這個(gè)魔法師施展了法術(shù)(構(gòu)建鏡像),將小B的別墅直接復(fù)制了一份(鏡像),裝到了小B的雙肩包(倉庫)里,小B去到另一個(gè)城市找了一片空地(容器)直接將裝在書包里的房子拿了出來,拿出來的房子就能變成跟小B在原城市一模一樣的房子

聽完了故事,咱們?cè)賮砝斫鈊ocker的兩句口號(hào)就更好理解了

「Build, Ship and Run (搭建,發(fā)送,運(yùn)行)」

「Build?once,Run?anywhere (搭建一次,運(yùn)行到任何地方)」

鏡像如果進(jìn)行形象的表述,我們可以將 Docker 鏡像理解為包含應(yīng)用程序以及其相關(guān)依賴的一個(gè)基礎(chǔ)文件系統(tǒng)(存儲(chǔ)著我們的程序和數(shù)據(jù)文件等等信息,鏡像層可以理解為基本的鏡像,可以通過組合多個(gè)鏡像層生成一個(gè)新的鏡像;也可以將一個(gè)鏡像可以作為一個(gè)鏡像層,成為組合別的鏡像的一份子),在 Docker 容器啟動(dòng)的過程中,它以只讀的方式被用于創(chuàng)建容器的運(yùn)行環(huán)境,

容器容器和鏡像一樣,也是若干層的疊加,唯一區(qū)別是所有只讀層的最上面一層,是一層可讀可寫層,可以記住這個(gè)簡(jiǎn)單的公式:容器 = 容器鏡像 + 可讀可寫層

前面說鏡像的時(shí)候我們有提到它是一個(gè)靜態(tài)文件系統(tǒng),那么既然容器跟它一樣,所以,鏡像跟容器都是一個(gè)靜態(tài)概念,但是,容器是可以run起來的,當(dāng)容器run起來時(shí),就會(huì)成為一個(gè)被稱作運(yùn)行態(tài)容器的東西,

運(yùn)行態(tài)容器(run container)是由靜態(tài)容器(可讀寫的靜態(tài)文件系統(tǒng))、一個(gè)隔離的進(jìn)程空間、以及運(yùn)行于其中的程序進(jìn)程所組成。我們通常用docker run運(yùn)行起來的其實(shí)就是運(yùn)行態(tài)容器,而使用docker stop停止后的容器,就是靜態(tài)容器

倉庫倉庫(Repository)是最易理解的部分,大家都用過Node的包管理Npm,這個(gè)概念是一致的,倉庫分為兩種,本地及遠(yuǎn)程,當(dāng)我們build好一個(gè)鏡像后,這個(gè)鏡像會(huì)先存放到本地倉庫,當(dāng)我們需要利用網(wǎng)絡(luò)進(jìn)行分發(fā)時(shí),我們可以push到遠(yuǎn)程倉庫,后續(xù)通過網(wǎng)絡(luò)下載使用

官方的npm源下載有時(shí)候特別慢,這個(gè)是由于XX的原因,然后我們就需要使用國內(nèi)的鏡像源,那么docker 的操作也是一樣的

容器技術(shù)的特性

一種技術(shù)的采用,一定有它適合的場(chǎng)景和優(yōu)勢(shì)。容器技術(shù)的流行原因,總結(jié)下來可能主要?dú)w功于以下的這些特性

輕量級(jí)(只打包必要的lib/bin)

秒布署(毫秒與秒之間)

易移植(「Build?once,Run?anywhere」)

彈性伸縮(高可用,節(jié)約成本)

總結(jié)

通過本文我們對(duì)Docker有了一個(gè)基本的認(rèn)識(shí), 知道了Docker Logo并不是一條咸魚,容器技術(shù)與虛擬技術(shù)之間的差異,Docker的三大核心概念及其特性

但Docker中涉及的內(nèi)容遠(yuǎn)不止于此,帥編也會(huì)在下個(gè)章節(jié)為大家講解“實(shí)際工作場(chǎng)景中的Docker應(yīng)用”
責(zé)任編輯:pj

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11215

    瀏覽量

    208745
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8979

    瀏覽量

    85100
  • 容器技術(shù)
    +關(guān)注

    關(guān)注

    1

    文章

    21

    瀏覽量

    5577
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux根文件系統(tǒng)的掛載過程

    Linux根文件系統(tǒng)(rootfs)是Linux系統(tǒng)中所有其他文件系統(tǒng)和目錄的起點(diǎn),它是內(nèi)核啟動(dòng)時(shí)掛載的第一個(gè)文件系統(tǒng)
    的頭像 發(fā)表于 10-05 16:50 ?233次閱讀

    如何構(gòu)建Linux根文件系統(tǒng)

    構(gòu)建Linux根文件系統(tǒng)個(gè)涉及多個(gè)步驟和概念的過程,它對(duì)于Linux系統(tǒng)的啟動(dòng)和運(yùn)行至關(guān)重要。
    的頭像 發(fā)表于 10-05 16:47 ?198次閱讀

    [2K300適配OpenharmonyV4.1]根文件系統(tǒng)制作請(qǐng)教

    嘗試更改制作文件格式為ext4,但是燒錄時(shí)也失敗了。 請(qǐng)問能否提供下Openharmony 根文件系統(tǒng)相關(guān)資料,或者開源下Openha
    發(fā)表于 09-11 11:18

    如何修改buildroot和debian文件系統(tǒng)

    本文檔主要介紹在沒有編譯環(huán)境的情況下,如何修改buildroot和debian文件系統(tǒng)方法,如在buildroot文件系統(tǒng)中添加文件、修改目錄等文件操作,在debian
    的頭像 發(fā)表于 07-22 17:46 ?400次閱讀
    如何修改buildroot和debian<b class='flag-5'>文件系統(tǒng)</b>

    linux--sysfs文件系統(tǒng)

    sysfs文件系統(tǒng) sysfs,全稱為System Filesystem,是個(gè)由Linux內(nèi)核實(shí)現(xiàn)的虛擬文件系統(tǒng)。它扮演著
    的頭像 發(fā)表于 07-08 11:37 ?682次閱讀
    linux--sysfs<b class='flag-5'>文件系統(tǒng)</b>

    鴻蒙開發(fā)文件管理:【@ohos.statfs (statfs)】

    該模塊提供文件系統(tǒng)相關(guān)存儲(chǔ)信息的功能,向應(yīng)用程序提供獲取文件系統(tǒng)總字節(jié)數(shù)、空閑字節(jié)數(shù)的JS接口。
    的頭像 發(fā)表于 06-13 09:46 ?251次閱讀
    鴻蒙開發(fā)<b class='flag-5'>文件</b>管理:【@ohos.statfs (statfs)】

    對(duì)Ubuntu16.04系統(tǒng)鏡像進(jìn)行熱點(diǎn)測(cè)試

    ROOT 文件系統(tǒng)為其提供用戶空間支持。而Docker鏡像(Image),就相當(dāng)于是個(gè)ROOT 文件系統(tǒng)。 Docker
    發(fā)表于 05-27 17:10

    鴻蒙輕內(nèi)核源碼分析:虛擬文件系統(tǒng) VFS

    VFS(Virtual File System)是文件系統(tǒng)的虛擬層,它不是個(gè)實(shí)際的文件系統(tǒng),而是個(gè)
    的頭像 發(fā)表于 02-18 14:50 ?735次閱讀

    教你在Ubuntu系統(tǒng)上定制文件系統(tǒng)

    開發(fā)板都需要去apt-get安裝,這樣會(huì)大幅增加工作量,很不便于批量化生產(chǎn)。 能不能把軟件起打包到鏡像呢?這樣每次燒寫完就不用再去apt-get在線安裝了。答案當(dāng)然是肯定的,這就涉及到文件系統(tǒng)的定制了
    發(fā)表于 12-26 16:33

    系統(tǒng)鏡像燒錄

    系統(tǒng)鏡像燒錄 啟動(dòng)產(chǎn)品需要兩個(gè)步驟:燒錄系統(tǒng),啟動(dòng)系統(tǒng) ArmSoM 系列產(chǎn)品的系統(tǒng)
    發(fā)表于 12-08 11:11

    服務(wù)器數(shù)據(jù)恢復(fù)—ocfs2文件系統(tǒng)被誤格式化為Ext4文件系統(tǒng)的數(shù)據(jù)恢復(fù)案例

    由于工作人員的誤操作,將Ext4文件系統(tǒng)誤裝入到存儲(chǔ)中Ocfs2文件系統(tǒng)數(shù)據(jù)卷上,導(dǎo)致原Ocfs2文件系統(tǒng)被格式化為Ext4文件系統(tǒng)。 由于Ext4
    的頭像 發(fā)表于 12-04 10:49 ?408次閱讀
    服務(wù)器數(shù)據(jù)恢復(fù)—ocfs2<b class='flag-5'>文件系統(tǒng)</b>被誤格式化為Ext4<b class='flag-5'>文件系統(tǒng)</b>的數(shù)據(jù)恢復(fù)案例

    怎么下載centos鏡像文件

    CentOS 是個(gè)基于 Linux 的操作系統(tǒng),它是種穩(wěn)定、強(qiáng)大且易于使用的發(fā)行版。CentOS 鏡像文件是用于安裝和部署 CentOS
    的頭像 發(fā)表于 11-23 10:48 ?1116次閱讀

    如何使用dockerfile創(chuàng)建鏡像

    Docker是個(gè)開源的平臺(tái),用于快速構(gòu)建、打包、部署應(yīng)用程序的容器化工具。而Dockerfile是個(gè)文本
    的頭像 發(fā)表于 11-23 09:52 ?690次閱讀

    構(gòu)建docker鏡像應(yīng)該遵循哪些原則

    必要的組件和文件包含鏡像中,以減小鏡像的大小。可以使用適量、標(biāo)準(zhǔn)的基礎(chǔ)鏡像,并只安裝必要的軟件依賴
    的頭像 發(fā)表于 11-23 09:41 ?964次閱讀

    Ubuntu16.04系統(tǒng)鏡像進(jìn)行熱點(diǎn)測(cè)試

    ROOT 文件系統(tǒng)為其提供用戶空間支持。而Docker鏡像(Image),就相當(dāng)于是個(gè)ROOT 文件系統(tǒng)。 Docker
    發(fā)表于 11-22 13:39