欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker工作模式及原理詳解

 更新時(shí)間:2021年09月27日 14:44:03   作者:不會(huì)編程的派大星  
Docker是一個(gè)Client-Server結(jié)構(gòu)的系統(tǒng),Docker的守護(hù)進(jìn)程運(yùn)行在主機(jī)上,通過(guò)Socket從客戶端訪問(wèn)!DockerServer接受到DockerClient的指令,就會(huì)執(zhí)行這個(gè)命令

如下圖所示:

在這里插入圖片描述

我們?cè)谑褂锰摂M機(jī)和docker的時(shí)候,就會(huì)出現(xiàn)這樣一個(gè)疑問(wèn):Docker為什么比VM虛擬機(jī)快呢?

在這里插入圖片描述

上面這張圖就很客觀的說(shuō)明了這個(gè)問(wèn)題

1、Docker有著比虛擬機(jī)更少的抽象層。

2、Docker利用的是宿主機(jī)的內(nèi)核,VM需要的是Guest os。

所以說(shuō),新建一個(gè)容器的時(shí)候,docker不需要像虛擬機(jī)一樣重新加載一個(gè)操作系統(tǒng)。虛擬機(jī)是加載Guest os(花費(fèi)時(shí)間分鐘級(jí)別),而docker利用的是宿主機(jī)的操作系統(tǒng),省略了這個(gè)復(fù)雜的過(guò)程(花費(fèi)時(shí)間秒級(jí)別)。

在這里插入圖片描述

搞清楚這些,我們?cè)賮?lái)看看對(duì)客戶端來(lái)說(shuō),我們是怎么使用的?

首先得明白幾個(gè)名詞:

Host 主機(jī)(Docker 引擎)

一個(gè)物理或者虛擬的機(jī)器用于執(zhí)行 Docker 守護(hù)進(jìn)程和容器。

Image 鏡像

什么是 Docker 鏡像?簡(jiǎn)單的理解,Docker 鏡像就是一個(gè) Linux 的文件系統(tǒng)(Root FileSystem),這個(gè)文件系統(tǒng)里面包含可以運(yùn)行在 Linux 內(nèi)核的程序以及相應(yīng)的數(shù)據(jù)。
通過(guò)鏡像啟動(dòng)一個(gè)容器,一個(gè)鏡像就是一個(gè)可執(zhí)行的包,其中包括運(yùn)行應(yīng)用程序所需要的所有內(nèi)容:包含代碼,運(yùn)行時(shí)間,庫(kù),環(huán)境變量和配置文件等。
Docker 把 App 文件打包成為一個(gè)鏡像,并且采用類似多次快照的存儲(chǔ)技術(shù),可以實(shí)現(xiàn):

  • 多個(gè) App 可以共用相同的底層鏡像(初始的操作系統(tǒng)鏡像);
  • App 運(yùn)行時(shí)的 IO 操作和鏡像文件隔離;
  • 通過(guò)掛載包含不同配置/數(shù)據(jù)文件的目錄或者卷(Volume),單個(gè) App 鏡像可以用來(lái)運(yùn)行無(wú)數(shù)個(gè)不同業(yè)務(wù)的容器。

Container 容器

鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計(jì)中的類和實(shí)例一樣,鏡像是靜態(tài)的定義,容器是鏡像運(yùn)行時(shí)的實(shí)體。容器可以被創(chuàng)建、啟動(dòng)、停止、刪除、暫停等。

鏡像分層

Docker 支持通過(guò)擴(kuò)展現(xiàn)有鏡像,創(chuàng)建新的鏡像。實(shí)際上,Docker Hub 中 99% 的鏡像都是通過(guò)在 base 鏡像中安裝和配置需要的軟件構(gòu)建出來(lái)的。

在這里插入圖片描述

從上圖可以看到,新鏡像是從 base 鏡像一層一層疊加生成的。每安裝一個(gè)軟件,就在現(xiàn)有鏡像的基礎(chǔ)上增加一層。
鏡像分層最大的一個(gè)好處就是共享資源。比如說(shuō)有多個(gè)鏡像都從相同的 base 鏡像構(gòu)建而來(lái),那么 Docker Host 只需在磁盤(pán)上保存一份 base 鏡像;同時(shí)內(nèi)存中也只需加載一份 base 鏡像,就可以為所有容器服務(wù)了。而且鏡像的每一層都可以被共享。
如果多個(gè)容器共享一份基礎(chǔ)鏡像,當(dāng)某個(gè)容器修改了基礎(chǔ)鏡像的內(nèi)容,比如 /etc 下的文件,這時(shí)其他容器的 /etc 是不會(huì)被修改的,修改只會(huì)被限制在單個(gè)容器內(nèi)。這就是容器 Copy-on-Write 特性。

可寫(xiě)的容器層

當(dāng)容器啟動(dòng)時(shí),一個(gè)新的可寫(xiě)層被加載到鏡像的頂部。這一層通常被稱作“容器層”,“容器層”之下的都叫“鏡像層”。

在這里插入圖片描述

所有對(duì)容器的改動(dòng) - 無(wú)論添加、刪除、還是修改文件都只會(huì)發(fā)生在容器層中。只有容器層是可寫(xiě)的,容器層下面的所有鏡像層都是只讀的。

鏡像層數(shù)量可能會(huì)很多,所有鏡像層會(huì)聯(lián)合在一起組成一個(gè)統(tǒng)一的文件系統(tǒng)。如果不同層中有一個(gè)相同路徑的文件,比如 /a,上層的 /a 會(huì)覆蓋下層的 /a,也就是說(shuō)用戶只能訪問(wèn)到上層中的文件 /a。在容器層中,用戶看到的是一個(gè)疊加之后的文件系統(tǒng)。

只有當(dāng)需要修改時(shí)才復(fù)制一份數(shù)據(jù),這種特性被稱作 Copy-on-Write??梢?jiàn),容器層保存的是鏡像變化的部分,不會(huì)對(duì)鏡像本身進(jìn)行任何修改。

總結(jié)下來(lái)就是:容器層記錄對(duì)鏡像的修改,所有鏡像層都是只讀的,不會(huì)被容器修改,所以鏡像可以被多個(gè)容器共享。

Volume 數(shù)據(jù)卷

實(shí)際上我們的容器就好像是一個(gè)簡(jiǎn)易版的操作系統(tǒng),只不過(guò)系統(tǒng)中只安裝了我們的程序運(yùn)行所需要的環(huán)境,前邊說(shuō)到我們的容器是可以刪除的,那如果刪除了,容器中的程序產(chǎn)生的需要持久化的數(shù)據(jù)怎么辦呢?容器運(yùn)行的時(shí)候我們可以進(jìn)容器去查看,容器一旦刪除就什么都沒(méi)有了。

所以數(shù)據(jù)卷就是來(lái)解決這個(gè)問(wèn)題的,是用來(lái)將數(shù)據(jù)持久化到我們宿主機(jī)上,與容器間實(shí)現(xiàn)數(shù)據(jù)共享,簡(jiǎn)單的說(shuō)就是將宿主機(jī)的目錄映射到容器中的目錄,應(yīng)用程序在容器中的目錄讀寫(xiě)數(shù)據(jù)會(huì)同步到宿主機(jī)上,這樣容器產(chǎn)生的數(shù)據(jù)就可以持久化了,比如我們的數(shù)據(jù)庫(kù)容器,就可以把數(shù)據(jù)存儲(chǔ)到我們宿主機(jī)上的真實(shí)磁盤(pán)中。

Registry 注冊(cè)中心

Docker 用 Registry 來(lái)保存用戶構(gòu)建的鏡像。Registry 分為公共和私有兩種。Docker 公司運(yùn)營(yíng)公共的 Registry 叫做 Docker Hub。用戶可以在 Docker Hub 注冊(cè)賬號(hào),分享并保存自己的鏡像。

Docker 公司提供了公共的鏡像倉(cāng)庫(kù) hub.docker.com(Docker 稱之為 Repository)提供了龐大的鏡像集合供使用。

一個(gè) Docker Registry 中可以包含多個(gè)倉(cāng)庫(kù)(Repository);每個(gè)倉(cāng)庫(kù)可以包含多個(gè)標(biāo)簽(Tag);每個(gè)標(biāo)簽對(duì)應(yīng)一個(gè)鏡像。

通常,一個(gè)倉(cāng)庫(kù)會(huì)包含同一個(gè)軟件不同版本的鏡像,而標(biāo)簽對(duì)應(yīng)該軟件的各個(gè)版本。我們可以通過(guò) <倉(cāng)庫(kù)名>:<標(biāo)簽> 的格式來(lái)指定具體是這個(gè)軟件哪個(gè)版本的鏡像。如果不給出標(biāo)簽,將以 latest 作為默認(rèn)標(biāo)簽。

總結(jié)

Docker 官網(wǎng)寫(xiě)著這樣一句話:Build and Ship any Application Anywhere,再結(jié)合剛才我們所理解的內(nèi)容,總結(jié)下來(lái)就是:一次構(gòu)建,到處運(yùn)行。
此外,Docker 公司提供了公共的鏡像倉(cāng)庫(kù) hub.docker.com(Docker 稱之為 Repository),GitHub connect,自動(dòng)構(gòu)建鏡像,大大簡(jiǎn)化了應(yīng)用分發(fā)、部署、升級(jí)流程。加上 Docker 可以非常方便的建立各種自定義的鏡像文件,這些都是 Docker 成為最流行的容器技術(shù)的重要因素。

通過(guò)以上這些技術(shù)的組合,最后的結(jié)果就是:絕大部分應(yīng)用,開(kāi)發(fā)者都可以通過(guò) docker build 創(chuàng)建鏡像,通過(guò) docker push 上傳鏡像,用戶通過(guò) docker pull 下載鏡像,使用 docker run 運(yùn)行容器應(yīng)用。用戶不再需要去關(guān)心如何搭建環(huán)境,如何安裝,如何解決不同發(fā)行版的庫(kù)沖突——而且通常不會(huì)消耗更多的硬件資源,不會(huì)明顯降低性能。

以上就是Docker工作模式及原理詳解的詳細(xì)內(nèi)容,更多關(guān)于Docker工作模式及原理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Docker部署SQL Server 2019 Always On集群的實(shí)現(xiàn)

    Docker部署SQL Server 2019 Always On集群的實(shí)現(xiàn)

    這篇文章主要介紹了Docker部署SQL Server 2019 Always On集群的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Docker實(shí)現(xiàn)Mariadb分庫(kù)分表及讀寫(xiě)分離功能

    Docker實(shí)現(xiàn)Mariadb分庫(kù)分表及讀寫(xiě)分離功能

    這篇文章主要給大家介紹了關(guān)于Docker實(shí)現(xiàn)Mariadb分庫(kù)分表及讀寫(xiě)分離功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Docker 命令自動(dòng)補(bǔ)全的實(shí)現(xiàn)

    Docker 命令自動(dòng)補(bǔ)全的實(shí)現(xiàn)

    這篇文章主要介紹了Docker 命令自動(dòng)補(bǔ)全的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • docker 容器網(wǎng)絡(luò)模式詳解

    docker 容器網(wǎng)絡(luò)模式詳解

    這篇文章主要為大家介紹了docker 容器網(wǎng)絡(luò)模式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 詳細(xì)介紹如何安裝最新版Docker?Compose

    詳細(xì)介紹如何安裝最新版Docker?Compose

    Docker Compose是一個(gè)用來(lái)定義和運(yùn)行多個(gè)復(fù)雜應(yīng)用的Docker編排工具,下面這篇文章主要給大家介紹了關(guān)于如何安裝最新版Docker?Compose的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Docker容器網(wǎng)絡(luò)更改的實(shí)現(xiàn)

    Docker容器網(wǎng)絡(luò)更改的實(shí)現(xiàn)

    本文主要介紹了Docker容器網(wǎng)絡(luò)更改的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Docker如何實(shí)現(xiàn)修改Docker0網(wǎng)橋默認(rèn)網(wǎng)段

    Docker如何實(shí)現(xiàn)修改Docker0網(wǎng)橋默認(rèn)網(wǎng)段

    這篇文章主要介紹了Docker如何實(shí)現(xiàn)修改Docker0網(wǎng)橋默認(rèn)網(wǎng)段,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • docker部署Vaultwarden密碼共享管理系統(tǒng)的實(shí)現(xiàn)(圖文)

    docker部署Vaultwarden密碼共享管理系統(tǒng)的實(shí)現(xiàn)(圖文)

    Vaultwarden是一個(gè)開(kāi)源的密碼管理器,它提供了類似于Bitwarden的功能,允許用戶安全地存儲(chǔ)和管理密碼、敏感數(shù)據(jù)和身份信息,本文主要介紹了docker部署Vaultwarden密碼共享管理系統(tǒng)的實(shí)現(xiàn),感興趣的可以了解一下
    2023-10-10
  • docker部署SpringCloud微服務(wù)項(xiàng)目方式

    docker部署SpringCloud微服務(wù)項(xiàng)目方式

    這篇文章主要介紹了docker部署SpringCloud微服務(wù)項(xiàng)目方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 5分鐘安裝docker詳細(xì)步驟

    5分鐘安裝docker詳細(xì)步驟

    官方推薦使用通過(guò)設(shè)置docker倉(cāng)庫(kù)的方法來(lái)安裝,安裝和升級(jí)都簡(jiǎn)單些,今天就來(lái)教大家5分鐘入手安裝docker教程超詳細(xì)的安裝步驟,感興趣的朋友一起看看吧
    2021-05-05

最新評(píng)論