【小資說庫】第13期 應用程序開發人員、DBA和DBMS開發人員的分工是怎樣的?
807
2025-03-31
docker Engine(docker引擎)是Docker的核心部分,使用的是客戶端-服務器(C/S)架構模式,其主要組成部分如圖1所示。
圖1 Docker引擎
從圖6-8可以看出,Docker Engine中包含了三個核心組件(docker CLI、REST API和docker daemon),這三個組件的具體說明如下。
● docker CLI(command line interface):表示Docker命令行接口,開發者可以在命令行中使用Docker相關指令與Docker守護進程進行交互,從而管理諸如image(鏡像)、container(容器)、network(網絡)和data volumes(數據卷)等實體。
● REST API:表示應用程序API接口,開發者通過該API接口可以與Docker的守護進程進行交互,從而指示后臺進行相關操作。
● docker daemon:表示Docker的服務端組件,他是Docker架構中運行在后臺的一個守護進程,可以接收并處理來自命令行接口及API接口的指令,然后進行相應的后臺操作。
對于開發者而言,既可以使用編寫好的腳本文件通過REST API來實現與Docker進程交互,又可以直接使用Docker相關指令通過命令行接口來與Docker進程交互,而其他一些Docker應用則是通過底層的API和CLI進行交互的。
了解了Docker內部引擎及作用后,我們還需要通過Docker的具體架構,來了解Docker的整個運行流程。接下來借助Docker官網的架構圖來對Docker架構進行詳細說明,如圖1所示。
圖1 Docker架構
從圖1中可以看出,Docker架構主要包括Client、DOCKER_HOST和Register三部分,關于這三部分的具體說明如下。
1.Client(客戶端)
Client即Docker客戶端,也就是上一小節Docker Engine中介紹的docker CLI。開發者通過這個客戶端使用Docker的相關指令與Docker守護進程進行交互,從而進行Docker鏡像的創建、拉取和運行等操作。
2.DOCKER_HOST(Docker主機)
DOCKER_HOST即Docker內部引擎運行的主機,主要指Docker daemon(Docker守護進程)。可以通過Docker守護進程與客戶端還有Docker的鏡像倉庫Registry進行交互,從而管理Images(鏡像)和Containers(容器)等。
3.Registry(注冊中心)
Registry即Docker注冊中心,實質就是Docker鏡像倉庫,默認使用的是Docker官方遠程注冊中心Docker Hub,也可以使用開發者搭建的本地倉庫。Registry中包含了大量的鏡像,這些鏡像可以是官網基礎鏡像,也可以是其他開發者上傳的鏡像。
我們在實際使用Docker時,除了會涉及到圖中的三個主要部分外,還會涉及到很多Docker Objects(Docker對象),例如Images(鏡像)、Containers(容器)、Networks(網絡)、Volumes(數據卷)、Plugins(插件)等。其中常用的兩個對象Image和Containers的說明如下。
● Images(鏡像)
Docker 鏡像就是一個只讀的模板,包含了一些創建Docker容器的操作指令。通常情況下,一個Docker鏡像是基于另一個基礎鏡像創建的,并且新創建的鏡像會額外包含一些功能配置。例如:開發者可以依賴于一個Ubuntu的基礎鏡像創建一個新鏡像,并可以在新鏡像中安裝Apache等軟件或其它應用程序。
● Containers(容器)
Docker容器屬于鏡像的一個可運行實例(鏡像與容器的關系其實與Java中的類與對象相似),開發者可以通過API接口或者CLI命令行接口來創建、運行、停止、移動、刪除一個容器,也可以將一個容器連接到一個或多個網絡中,將數據存儲與容器進行關聯。
Docker使用了一系列的底層技術來充分發揮其技術特色,這些底層技術包括有Namespaces、Control groups、Union file systems和Container format等,其具體含義如下。
Namespaces(名稱空間)
Docker使用名稱空間來為容器提供隔離的工作空間。當一個容器運行時,Docker就會為該容器創建一系列的名稱空間,并為名稱空間提供一層隔離。每一個容器都運行在相對隔離的環境下,對其他名稱空間是相對受限的。
2.Control groups(控制組)
基于Linux系統的Docker引擎也依賴于另一項叫做Control groups(cgroups,控制組)的技術。控制組可以對程序進行資源限定,并允許Docker引擎在容器間進行硬件資源共享以及隨時進行限制和約束,例如,開發者可以限制某特定容器的可用內存。
3.Union file systems(聯合文件系統)
聯合文件系統(UnionFS)是一種分層、輕量級并且高性能的文件系統,它支持將文件系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統下。不同Docker容器可以共享一些基礎的文件系統層,與自己獨有的改動層一起使用,可以大大的提高存儲效率。Docker目前支持的聯合文件系統包括AUFS、btrfs、 vfs 和 DeviceMapper。
4.Container format(容器格式)
Docker引擎將名稱空間、控制組和聯合文件系統組合成一個叫做容器格式的整體。當前默認的容器格式是libcontainer,未來Docker可能會通過與其他技術(如BSD Jails或者Solaris Zones)的集成使用來開發其他的容器格式。
Docker 容器
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。