最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker 容器生命周期 架構(gòu) 以及和VM之間的差異詳解

 更新時(shí)間:2020年11月19日 16:41:01   作者:富士康質(zhì)檢員張全蛋  
這篇文章主要介紹了Docker 容器生命周期 架構(gòu) 以及和VM之間的差異詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

容器的生命周期

容器運(yùn)行時(shí)的生命周期

容器是一組具有隔離特性的進(jìn)程集合,在使用 docker run 的時(shí)候會(huì)選擇一個(gè)鏡像來提供獨(dú)立的文件系統(tǒng)并指定相應(yīng)的運(yùn)行程序。這里指定的運(yùn)行程序稱之為 initial 進(jìn)程,這個(gè) initial 進(jìn)程啟動(dòng)的時(shí)候,容器也會(huì)隨之啟動(dòng),當(dāng) initial 進(jìn)程退出的時(shí)候,容器也會(huì)隨之退出。

因此,可以認(rèn)為容器的生命周期和 initial 進(jìn)程的生命周期是一致的。當(dāng)然,因?yàn)槿萜鲀?nèi)不只有這樣的一個(gè) initial 進(jìn)程,initial 進(jìn)程本身也可以產(chǎn)生其他的子進(jìn)程或者通過 docker exec 產(chǎn)生出來的運(yùn)維操作,也屬于 initial 進(jìn)程管理的范圍內(nèi)。當(dāng) initial 進(jìn)程退出的時(shí)候,所有的子進(jìn)程也會(huì)隨之退出,這樣也是為了防止資源的泄漏。

但是這樣的做法也會(huì)存在一些問題,首先應(yīng)用里面的程序往往是有狀態(tài)的,其可能會(huì)產(chǎn)生一些重要的數(shù)據(jù),當(dāng)一個(gè)容器退出被刪除之后,數(shù)據(jù)也就會(huì)丟失了,這對(duì)于應(yīng)用方而言是不能接受的,所以需要將容器所產(chǎn)生出來的重要數(shù)據(jù)持久化下來。容器能夠直接將數(shù)據(jù)持久化到指定的目錄上,這個(gè)目錄就稱之為數(shù)據(jù)卷。

數(shù)據(jù)卷有一些特點(diǎn),其中非常明顯的就是數(shù)據(jù)卷的生命周期是獨(dú)立于容器的生命周期的,也就是說容器的創(chuàng)建、運(yùn)行、停止、刪除等操作都和數(shù)據(jù)卷沒有任何關(guān)系,因?yàn)樗且粋€(gè)特殊的目錄,是用于幫助容器進(jìn)行持久化的。簡單而言,我們會(huì)將數(shù)據(jù)卷掛載到容器內(nèi),這樣一來容器就能夠?qū)?shù)據(jù)寫入到相應(yīng)的目錄里面了,而且容器的退出并不會(huì)導(dǎo)致數(shù)據(jù)的丟失。

通常情況下,數(shù)據(jù)卷管理主要有兩種方式:

第一種是通過 bind 的方式,直接將宿主機(jī)的目錄直接掛載到容器內(nèi);這種方式比較簡單,但是會(huì)帶來運(yùn)維成本,因?yàn)槠湟蕾囉谒拗鳈C(jī)的目錄,需要對(duì)于所有的宿主機(jī)進(jìn)行統(tǒng)一管理。

第二種是將目錄管理交給運(yùn)行引擎。

容器項(xiàng)目架構(gòu)

moby 容器引擎架構(gòu)

moby 是目前最流行的容器管理引擎,moby daemon 會(huì)對(duì)上提供有關(guān)于容器、鏡像、網(wǎng)絡(luò)以及 Volume的管理。moby daemon 所依賴的最重要的組件就是 containerd,containerd 是一個(gè)容器運(yùn)行時(shí)管理引擎,其獨(dú)立于 moby daemon ,可以對(duì)上提供容器、鏡像的相關(guān)管理。

containerd 底層有 containerd shim 模塊,其類似于一個(gè)守護(hù)進(jìn)程,這樣設(shè)計(jì)的原因有幾點(diǎn):

首先,containerd 需要管理容器生命周期,而容器可能是由不同的容器運(yùn)行時(shí)所創(chuàng)建出來的,因此需要提供一個(gè)靈活的插件化管理。而 shim 就是針對(duì)于不同的容器運(yùn)行時(shí)所開發(fā)的,這樣就能夠從 containerd 中脫離出來,通過插件的形式進(jìn)行管理。

其次,因?yàn)?shim 插件化的實(shí)現(xiàn),使其能夠被 containerd 動(dòng)態(tài)接管。如果不具備這樣的能力,當(dāng) moby daemon 或者 containerd daemon 意外退出的時(shí)候,容器就沒人管理了,那么它也會(huì)隨之消失、退出,這樣就會(huì)影響到應(yīng)用的運(yùn)行。

最后,因?yàn)殡S時(shí)可能會(huì)對(duì) moby 或者 containerd 進(jìn)行升級(jí),如果不提供 shim 機(jī)制,那么就無法做到原地升級(jí),也無法做到不影響業(yè)務(wù)的升級(jí),因此 containerd shim 非常重要,它實(shí)現(xiàn)了動(dòng)態(tài)接管的能力。

上面是只是針對(duì)于 moby 進(jìn)行一個(gè)大致的介紹。

容器 VS VM

容器和 VM 之間的差異

VM 利用 Hypervisor 虛擬化技術(shù)來模擬 CPU、內(nèi)存等硬件資源,這樣就可以在宿主機(jī)上建立一個(gè) Guest OS,這是常說的安裝一個(gè)虛擬機(jī)。

每一個(gè) Guest OS 都有一個(gè)獨(dú)立的內(nèi)核,比如 Ubuntu、CentOS 甚至是 Windows 等,在這樣的 Guest OS 之下,每個(gè)應(yīng)用都是相互獨(dú)立的,VM 可以提供一個(gè)更好的隔離效果。但這樣的隔離效果需要付出一定的代價(jià),因?yàn)樾枰岩徊糠值挠?jì)算資源交給虛擬化,這樣就很難充分利用現(xiàn)有的計(jì)算資源,并且每個(gè) Guest OS 都需要占用大量的磁盤空間,比如 Windows 操作系統(tǒng)的安裝需要 10~30G 的磁盤空間,Ubuntu 也需要 5~6G,同時(shí)這樣的方式啟動(dòng)很慢。正是因?yàn)樘摂M機(jī)技術(shù)的缺點(diǎn),催生出了容器技術(shù)。

容器是針對(duì)于進(jìn)程而言的,因此無需 Guest OS,只需要一個(gè)獨(dú)立的文件系統(tǒng)提供其所需要文件集合即可。所有的文件隔離都是進(jìn)程級(jí)別的,因此啟動(dòng)時(shí)間快于 VM,并且所需的磁盤空間也小于 VM。當(dāng)然了,進(jìn)程級(jí)別的隔離并沒有想象中的那么好,隔離效果相比 VM 要差很多。

總體而言:

容器和 VM 相比,各有優(yōu)劣,因此容器技術(shù)也在向著強(qiáng)隔離方向發(fā)展。

以上這篇Docker 容器生命周期 架構(gòu) 以及和VM之間的差異詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker-compose創(chuàng)建網(wǎng)橋,添加子網(wǎng),刪除網(wǎng)卡的實(shí)現(xiàn)

    docker-compose創(chuàng)建網(wǎng)橋,添加子網(wǎng),刪除網(wǎng)卡的實(shí)現(xiàn)

    這篇文章主要介紹了docker-compose創(chuàng)建網(wǎng)橋,添加子網(wǎng),刪除網(wǎng)卡的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Idea部署遠(yuǎn)程Docker并配置文件

    Idea部署遠(yuǎn)程Docker并配置文件

    這篇文章給大家介紹Idea部署遠(yuǎn)程Docker并添加配置文件的方法及修改項(xiàng)目pom文件的代碼解析,對(duì)idea部署遠(yuǎn)程docker相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-06-06
  • Docker 容器互聯(lián)互通的實(shí)現(xiàn)方法

    Docker 容器互聯(lián)互通的實(shí)現(xiàn)方法

    這篇文章主要介紹了Docker 容器互聯(lián)互通,本文講解不同網(wǎng)絡(luò)下的容器可以通過加入同一個(gè)docker網(wǎng)絡(luò),來訪問該docker網(wǎng)絡(luò)下的容器,并且既可以通過容器ip也可以通過容器名連接,非常方便,需要的朋友可以參考下
    2022-10-10
  • 使用Docker快速搭建Nginx?Web服務(wù)器

    使用Docker快速搭建Nginx?Web服務(wù)器

    在現(xiàn)代Web開發(fā)中,Nginx作為一款高性能的Web服務(wù)器和反向代理服務(wù)器,被廣泛應(yīng)用于各種項(xiàng)目中,本文主要介紹了如何利用Docker快速搭建Nginx?Web服務(wù)器,需要的可以參考下
    2024-03-03
  • 如何讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql語句

    如何讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql語句

    這篇文章主要介紹了讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Docker容器間通訊直接路由方式實(shí)現(xiàn)網(wǎng)絡(luò)通訊

    Docker容器間通訊直接路由方式實(shí)現(xiàn)網(wǎng)絡(luò)通訊

    今天小編就為大家分享一篇關(guān)于Docker容器間通訊直接路由方式實(shí)現(xiàn)網(wǎng)絡(luò)通訊,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • docker搭建Zookeeper集群的方法步驟

    docker搭建Zookeeper集群的方法步驟

    本文主要介紹了docker搭建Zookeeper集群的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • docker利用selenium+testng實(shí)現(xiàn)web自動(dòng)化的方法

    docker利用selenium+testng實(shí)現(xiàn)web自動(dòng)化的方法

    這篇文章主要給大家介紹了關(guān)于docker利用selenium+testng實(shí)現(xiàn)web自動(dòng)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2018-10-10
  • docker容器化部署及使用方式

    docker容器化部署及使用方式

    這篇文章主要介紹了docker容器化部署及使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Docker的鏡像制作與整套項(xiàng)目一鍵打包部署的實(shí)現(xiàn)

    Docker的鏡像制作與整套項(xiàng)目一鍵打包部署的實(shí)現(xiàn)

    這篇文章主要介紹了Docker的鏡像制作與整套項(xiàng)目一鍵打包部署的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評(píng)論

兴海县| 色达县| 伊宁县| 邵武市| 安福县| 栖霞市| 莫力| 明光市| 阜康市| 三穗县| 饶阳县| 栾城县| 纳雍县| 乐业县| 江陵县| 永川市| 赣州市| 石狮市| 咸阳市| 安塞县| 长乐市| 乐山市| 德兴市| 武城县| 关岭| 昆明市| 澳门| 吉隆县| 营山县| 康乐县| 虹口区| 周至县| 项城市| 岑巩县| 澜沧| 开原市| 寿光市| 和平区| 新源县| 城步| 湟源县|