日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker的运行机制

發(fā)布時間:2024/1/23 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker的运行机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Docker Engine(Docker引擎)是Docker的核心部分,使用的是客戶端-服務器(C/S)架構(gòu)模式,其主要組成部分如圖1所示。

圖1 Docker引擎

從圖6-8可以看出,Docker Engine中包含了三個核心組件(docker CLI、REST API和docker daemon),這三個組件的具體說明如下。

● docker CLI(command line interface):表示Docker命令行接口,開發(fā)者可以在命令行中使用Docker相關指令與Docker守護進程進行交互,從而管理諸如image(鏡像)、container(容器)、network(網(wǎng)絡)和data volumes(數(shù)據(jù)卷)等實體。

● REST API:表示應用程序API接口,開發(fā)者通過該API接口可以與Docker的守護進程進行交互,從而指示后臺進行相關操作。

● docker daemon:表示Docker的服務端組件,他是Docker架構(gòu)中運行在后臺的一個守護進程,可以接收并處理來自命令行接口及API接口的指令,然后進行相應的后臺操作。

? 對于開發(fā)者而言,既可以使用編寫好的腳本文件通過REST API來實現(xiàn)與Docker進程交互,又可以直接使用Docker相關指令通過命令行接口來與Docker進程交互,而其他一些Docker應用則是通過底層的API和CLI進行交互的。
了解了Docker內(nèi)部引擎及作用后,我們還需要通過Docker的具體架構(gòu),來了解Docker的整個運行流程。接下來借助Docker官網(wǎng)的架構(gòu)圖來對Docker架構(gòu)進行詳細說明,如圖1所示。

圖1 Docker架構(gòu)

從圖1中可以看出,Docker架構(gòu)主要包括Client、DOCKER_HOST和Register三部分,關于這三部分的具體說明如下。

1.Client(客戶端)

Client即Docker客戶端,也就是上一小節(jié)Docker Engine中介紹的docker CLI。開發(fā)者通過這個客戶端使用Docker的相關指令與Docker守護進程進行交互,從而進行Docker鏡像的創(chuàng)建、拉取和運行等操作。

2.DOCKER_HOST(Docker主機)

DOCKER_HOST即Docker內(nèi)部引擎運行的主機,主要指Docker daemon(Docker守護進程)。可以通過Docker守護進程與客戶端還有Docker的鏡像倉庫Registry進行交互,從而管理Images(鏡像)和Containers(容器)等。

3.Registry(注冊中心)

Registry即Docker注冊中心,實質(zhì)就是Docker鏡像倉庫,默認使用的是Docker官方遠程注冊中心Docker Hub,也可以使用開發(fā)者搭建的本地倉庫。Registry中包含了大量的鏡像,這些鏡像可以是官網(wǎng)基礎鏡像,也可以是其他開發(fā)者上傳的鏡像。

我們在實際使用Docker時,除了會涉及到圖中的三個主要部分外,還會涉及到很多Docker Objects(Docker對象),例如Images(鏡像)、Containers(容器)、Networks(網(wǎng)絡)、Volumes(數(shù)據(jù)卷)、Plugins(插件)等。其中常用的兩個對象Image和Containers的說明如下。

● Images(鏡像)

Docker 鏡像就是一個只讀的模板,包含了一些創(chuàng)建Docker容器的操作指令。通常情況下,一個Docker鏡像是基于另一個基礎鏡像創(chuàng)建的,并且新創(chuàng)建的鏡像會額外包含一些功能配置。例如:開發(fā)者可以依賴于一個Ubuntu的基礎鏡像創(chuàng)建一個新鏡像,并可以在新鏡像中安裝Apache等軟件或其它應用程序。

● Containers(容器)

Docker容器屬于鏡像的一個可運行實例(鏡像與容器的關系其實與Java中的類與對象相似),開發(fā)者可以通過API接口或者CLI命令行接口來創(chuàng)建、運行、停止、移動、刪除一個容器,也可以將一個容器連接到一個或多個網(wǎng)絡中,將數(shù)據(jù)存儲與容器進行關聯(lián)。
Docker使用了一系列的底層技術來充分發(fā)揮其技術特色,這些底層技術包括有Namespaces、Control groups、Union file systems和Container format等,其具體含義如下。

  • Namespaces(名稱空間)
  • Docker使用名稱空間來為容器提供隔離的工作空間。當一個容器運行時,Docker就會為該容器創(chuàng)建一系列的名稱空間,并為名稱空間提供一層隔離。每一個容器都運行在相對隔離的環(huán)境下,對其他名稱空間是相對受限的。

    2.Control groups(控制組)

    基于Linux系統(tǒng)的Docker引擎也依賴于另一項叫做Control groups(cgroups,控制組)的技術。控制組可以對程序進行資源限定,并允許Docker引擎在容器間進行硬件資源共享以及隨時進行限制和約束,例如,開發(fā)者可以限制某特定容器的可用內(nèi)存。

    3.Union file systems(聯(lián)合文件系統(tǒng))

    聯(lián)合文件系統(tǒng)(UnionFS)是一種分層、輕量級并且高性能的文件系統(tǒng),它支持將文件系統(tǒng)的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統(tǒng)下。不同Docker容器可以共享一些基礎的文件系統(tǒng)層,與自己獨有的改動層一起使用,可以大大的提高存儲效率。Docker目前支持的聯(lián)合文件系統(tǒng)包括AUFS、btrfs、 vfs 和 DeviceMapper。

    4.Container format(容器格式)

    Docker引擎將名稱空間、控制組和聯(lián)合文件系統(tǒng)組合成一個叫做容器格式的整體。當前默認的容器格式是libcontainer,未來Docker可能會通過與其他技術(如BSD Jails或者Solaris Zones)的集成使用來開發(fā)其他的容器格式。

    總結(jié)

    以上是生活随笔為你收集整理的Docker的运行机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。