成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

什么是容器鏡像?

系統(tǒng)
容器鏡像包含一個打包的應(yīng)用,以及它的依賴關(guān)系,還有它在啟動時運行的進程信息。

[[422713]]

容器鏡像包含一個打包的應(yīng)用,以及它的依賴關(guān)系,還有它在啟動時運行的進程信息。

容器是當(dāng)今 IT 運維的一個關(guān)鍵部分。容器鏡像container image包含了一個打包的應(yīng)用,以及它的依賴關(guān)系,還有它在啟動時運行的進程信息。

你可以通過提供一組特殊格式的指令來創(chuàng)建容器鏡像,可以是提交給注冊中心Registry,或者是作為 Dockerfile 保存。例如,這個 Dockerfile 為 PHP Web 應(yīng)用創(chuàng)建了一個容器:

  1. FROM registry.access.redhat.com/ubi8/ubi:8.1
  2.  
  3. RUN yum --disableplugin=subscription-manager -y module enable php:7.3 \
  4. && yum --disableplugin=subscription-manager -y install httpd php \
  5. && yum --disableplugin=subscription-manager clean all
  6.  
  7. ADD index.php /var/www/html
  8.  
  9. RUN sed -i 's/Listen 80/Listen 8080/' /etc/httpd/conf/httpd.conf \
  10. && sed -i 's/listen.acl_users = apache,nginx/listen.acl_users =/' /etc/php-fpm.d/www.conf \
  11. && mkdir /run/php-fpm \
  12. && chgrp -R 0 /var/log/httpd /var/run/httpd /run/php-fpm \
  13. && chmod -R g=u /var/log/httpd /var/run/httpd /run/php-fpm
  14.  
  15. EXPOSE 8080
  16. USER 1001
  17. CMD php-fpm & httpd -D FOREGROUND

這個文件中的每條指令都會在容器鏡像中增加一個layer。每一層只增加與下面一層的區(qū)別,然后,所有這些堆疊在一起,形成一個只讀的容器鏡像。

它是如何工作的?

你需要知道一些關(guān)于容器鏡像的事情,按照這個順序理解這些概念很重要:

  1. 聯(lián)合文件系統(tǒng)
  2. 寫入時復(fù)制(COW)
  3. 疊加文件系統(tǒng)
  4. 快照器

聯(lián)合文件系統(tǒng)

聯(lián)合文件系統(tǒng)Union File System(UnionFS)內(nèi)置于 Linux 內(nèi)核中,它允許將一個文件系統(tǒng)的內(nèi)容與另一個文件系統(tǒng)的內(nèi)容合并,同時保持“物理”內(nèi)容的分離。其結(jié)果是一個統(tǒng)一的文件系統(tǒng),即使數(shù)據(jù)實際上是以分支形式組織。

這里的想法是,如果你有多個鏡像有一些相同的數(shù)據(jù),不是讓這些數(shù)據(jù)再次復(fù)制過來,而是通過使用一個叫做layer的東西來共享。 

UnionFS

每一層都是一個可以在多個容器中共享的文件系統(tǒng),例如,httpd 基礎(chǔ)層是 Apache 的官方鏡像,可以在任何數(shù)量的容器中使用。想象一下,由于我們在所有的容器中使用相同的基礎(chǔ)層,我們節(jié)省了多少磁盤空間。

這些鏡像層總是只讀的,但是當(dāng)我們用這個鏡像創(chuàng)建一個新的容器時,我們會在它上面添加一個薄的可寫層。這個可寫層是你創(chuàng)建、修改、刪除或進行每個容器所需的其他修改的地方。

寫時復(fù)制(COW)

當(dāng)你啟動一個容器時,看起來好像這個容器有自己的整個文件系統(tǒng)。這意味著你在系統(tǒng)中運行的每個容器都需要自己的文件系統(tǒng)副本。這豈不是要占用大量的磁盤空間,而且還要花費大量的時間讓容器啟動?不是的,因為每個容器都不需要它自己的文件系統(tǒng)副本!

容器和鏡像使用寫時復(fù)制copy-on-write(COW)機制來實現(xiàn)這一點。寫時復(fù)制策略不是復(fù)制文件,而是將同一個數(shù)據(jù)實例分享給多個進程,并且只在一個進程需要修改或?qū)懭霐?shù)據(jù)時進行復(fù)制。所有其他進程將繼續(xù)使用原始數(shù)據(jù)。

Docker 對鏡像和容器都使用了寫時復(fù)制的機制。為了做到這一點,在舊版本中,鏡像和運行中的容器之間的變化是通過圖驅(qū)動graph driver來跟蹤的,現(xiàn)在則是通過快照器snapshotter來跟蹤。

在運行中的容器中執(zhí)行任何寫操作之前,要修改的文件的副本被放在容器的可寫層上。這就是發(fā)生  的地方。現(xiàn)在你知道為什么它被稱為“寫時復(fù)制”了么。

這種策略既優(yōu)化了鏡像磁盤空間的使用,也優(yōu)化了容器啟動時間的性能,并與 UnionFS 一起工作。

疊加文件系統(tǒng)

疊加文件系統(tǒng)Overlay File System位于現(xiàn)有文件系統(tǒng)的頂部,結(jié)合了上層和下層的目錄樹,并將它們作為一個單一的目錄來呈現(xiàn)。這些目錄被稱為layer。下層保持不被修改。每一層只增加與下一層的差異(計算機術(shù)語為 “diff”),這種統(tǒng)一的過程被稱為聯(lián)合掛載union mount

最低的目錄或鏡像層被稱為下層目錄lowerdir,上面的目錄被稱為 上層目錄upperdir。最后的覆蓋層或統(tǒng)一層被稱為合并層merged。 

Layered file system

常見的術(shù)語包括這些層的定義:

  • 基礎(chǔ)層Base layer:是你的文件系統(tǒng)的文件所在的地方。就容器鏡像而言,這個層就是你的基礎(chǔ)鏡像。
  • 疊加層Overlay layer:通常被稱為容器層container layer,因為對運行中的容器所做的所有改變,如添加、刪除或修改文件,都會寫到這個可寫層。對這一層所做的所有修改都存儲在下一層,是基礎(chǔ)層和差異層的聯(lián)合視圖。
  • 差異層Diff layer包含了在疊加層所作的所有修改。如果你寫的東西已經(jīng)在基礎(chǔ)層了,那么疊加文件系統(tǒng)就會把文件復(fù)制到差異層,并做出你想寫的修改。這被稱為寫時復(fù)制。

快照器

通過使用層和圖驅(qū)動,容器可以將其更改作為其容器文件系統(tǒng)的一部分來構(gòu)建、管理和分發(fā)。但是使用圖驅(qū)動graph driver的工作真的很復(fù)雜,而且容易出錯。快照器SnapShotter與圖驅(qū)動不同,因為它們不用了解鏡像或容器。

快照器的工作方式與 Git 非常相似,比如有樹的概念,并跟蹤每次提交對樹的改變。一個快照snapshot代表一個文件系統(tǒng)狀態(tài)。快照有父子關(guān)系,使用一組目錄。可以在父級和其快照之間進行差異比較(diff),以創(chuàng)建一個層。

快照器提供了一個用于分配、快照和掛載抽象的分層文件系統(tǒng)的 API。

總結(jié)

你現(xiàn)在對什么是容器鏡像以及它們的分層方法如何使容器可移植有了很好的認識。接下來,我將介紹容器的運行機制和內(nèi)部結(jié)構(gòu)。 

 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2020-07-14 14:59:00

控制反轉(zhuǎn)依賴注入容器

2020-10-23 17:21:51

容器CaaS技術(shù)

2021-09-11 15:38:23

容器運行鏡像開放

2023-06-13 15:12:25

2018-03-22 14:47:13

容器開發(fā)人員筆記本

2014-05-08 16:10:01

虛擬化容器的虛擬化

2020-07-21 14:35:44

Servlet容器ApacheTomcat

2020-08-07 09:06:26

CaaS容器技術(shù)

2019-09-23 13:10:02

容器進程

2021-04-21 10:34:54

UPS電源電容器

2019-09-10 13:34:30

Linux操作系統(tǒng)軟件

2023-05-30 14:56:18

Docker開發(fā)容器

2022-02-16 20:04:08

容器KubernetesShim

2021-03-20 22:46:22

IaaSSaaSPaaS

2016-09-01 13:39:33

Linux鏡像XML 解析器

2023-09-01 13:49:00

內(nèi)存進程線程

2022-08-02 07:48:06

容器鏡像版本

2017-12-19 21:29:58

物聯(lián)網(wǎng)區(qū)塊鏈大數(shù)據(jù)

2019-07-16 14:44:52

DockerMySQL操作系統(tǒng)

2019-05-22 15:36:22

Linux容器鏡像
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 午夜精品久久 | 免费视频一区二区 | 久草精品在线 | 久久99精品视频 | 狠狠入ady亚洲精品经典电影 | 久久久国产一区二区三区 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 美女视频一区二区三区 | 福利精品 | 免费观看一级特黄欧美大片 | 国产精品不卡视频 | 久久久www成人免费无遮挡大片 | 在线欧美一区 | 青青草社区 | 日本久久精品视频 | 中文字幕1区 | 亚洲国产精品激情在线观看 | 久久av一区 | 欧美久久久久久久久 | 欧美一二区 | 国产精品网址 | 日韩美女爱爱 | 天天爽夜夜操 | 欧美中文字幕一区二区 | 久久国产成人 | 国产免费看 | 免费黄视频网站 | 欧美精品二区三区 | 一区二区三区在线免费看 | 国产欧美一区二区精品久导航 | 日本亚洲一区二区 | 久久久久久国产精品 | 羞羞视频一区二区 | 在线看片网站 | 在线日韩不卡 | 欧美色性 | 欧美一级免费看 | 日韩精品久久久久 | 亚洲性人人天天夜夜摸 | 颜色网站在线观看 | 国产高清在线 |