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

Docker工作模式及原理詳解

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

如下圖所示:

在這里插入圖片描述

我們在使用虛擬機和docker的時候,就會出現(xiàn)這樣一個疑問:Docker為什么比VM虛擬機快呢?

在這里插入圖片描述

上面這張圖就很客觀的說明了這個問題

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

2、Docker利用的是宿主機的內核,VM需要的是Guest os。

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

在這里插入圖片描述

搞清楚這些,我們再來看看對客戶端來說,我們是怎么使用的?

首先得明白幾個名詞:

Host 主機(Docker 引擎)

一個物理或者虛擬的機器用于執(zhí)行 Docker 守護進程和容器。

Image 鏡像

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

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

Container 容器

鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態(tài)的定義,容器是鏡像運行時的實體。容器可以被創(chuàng)建、啟動、停止、刪除、暫停等。

鏡像分層

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

在這里插入圖片描述

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

可寫的容器層

當容器啟動時,一個新的可寫層被加載到鏡像的頂部。這一層通常被稱作“容器層”,“容器層”之下的都叫“鏡像層”。

在這里插入圖片描述

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

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

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

總結下來就是:容器層記錄對鏡像的修改,所有鏡像層都是只讀的,不會被容器修改,所以鏡像可以被多個容器共享。

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

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

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

Registry 注冊中心

Docker 用 Registry 來保存用戶構建的鏡像。Registry 分為公共和私有兩種。Docker 公司運營公共的 Registry 叫做 Docker Hub。用戶可以在 Docker Hub 注冊賬號,分享并保存自己的鏡像。

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

一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag);每個標簽對應一個鏡像。

通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽對應該軟件的各個版本。我們可以通過 <倉庫名>:<標簽> 的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標簽,將以 latest 作為默認標簽。

總結

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

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

以上就是Docker工作模式及原理詳解的詳細內容,更多關于Docker工作模式及原理的資料請關注腳本之家其它相關文章!

相關文章

  • Docker 常用命令整理(實用篇)

    Docker 常用命令整理(實用篇)

    這篇文章主要介紹了Docker 常用命令整理,需要的朋友可以參考下
    2017-02-02
  • docker拉取clickhouse鏡像的方法實現(xiàn)

    docker拉取clickhouse鏡像的方法實現(xiàn)

    本文主要介紹了docker拉取clickhouse鏡像的方法實現(xiàn),解決從DockerHub拉取鏡像時的網(wǎng)絡連接問題,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • docker?部署hbase并且java?Api連接的操作過程

    docker?部署hbase并且java?Api連接的操作過程

    這篇文章主要介紹了docker?部署hbase并且java?Api連接的操作過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • Docker設置代理的方法教程

    Docker設置代理的方法教程

    本篇文章主要介紹了Docker設置代理的方法教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Docker 實用技巧總結

    Docker 實用技巧總結

    這篇文章主要介紹了Docker 實用技巧總結的相關資料,需要的朋友可以參考下
    2016-10-10
  • docker 搭建基于prometheus的監(jiān)控體系步驟實現(xiàn)

    docker 搭建基于prometheus的監(jiān)控體系步驟實現(xiàn)

    本文主要介紹了docker 搭建基于prometheus的監(jiān)控體系步驟實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • 重啟docker服務應用自啟停命令(推薦)

    重啟docker服務應用自啟停命令(推薦)

    這篇文章主要介紹了重啟docker服務應用自啟停命令,文中給大家提到了服務器重啟后啟動Docker命令,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Ubuntu Docker 源碼編譯(1.9.1 )詳解

    Ubuntu Docker 源碼編譯(1.9.1 )詳解

    這篇文章主要介紹了Ubuntu Docker 源碼編譯(1.9.1 )詳解的相關資料,這里對編譯過程進行了詳細的分析介紹,需要的朋友可以參考下
    2016-11-11
  • CentOS 6.5 制作可以ssh登錄的Docker鏡像

    CentOS 6.5 制作可以ssh登錄的Docker鏡像

    這篇文章主要介紹了CentOS 6.5 制作可以ssh登錄的Docker鏡像,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Docker Compose一鍵ELK部署的方法實現(xiàn)

    Docker Compose一鍵ELK部署的方法實現(xiàn)

    這篇文章主要介紹了Docker Compose一鍵ELK部署的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論

佛学| 兴安盟| 宜都市| 晋中市| 宁都县| 邮箱| 海丰县| 勃利县| 安岳县| 阿坝| 梁山县| 栾城县| 萍乡市| 三亚市| 毕节市| 阿克陶县| 历史| 象州县| 麻栗坡县| 长沙县| 资溪县| 若尔盖县| 蓬安县| 青神县| 南丰县| 徐州市| 保德县| 新竹县| 报价| 西昌市| 万年县| 邳州市| 康乐县| 迭部县| 凤城市| 马公市| 盈江县| 敖汉旗| 荣昌县| 新河县| 兴宁市|