Docker架構

Docker架構

爲了更好的使用Docker和理解Docker中一些不常見的行爲,我們最好了解在Docker表層之下的一些東西。

 

在下面的圖片中,我們可以看到Docker安裝的主要元件

  1. 中間部分是Docker daemon,負責創建,運行和監控容器,同時構建和存儲鏡像,Docker daemon通過docker daemon命令來運行,通常由宿主機管理。

  2. Docker client位於右手邊,用於和Docker daemon通過HTTP通信,默認情況下這主要是通過Unix domain socket通信,但是也可以使用TCP socket來讓遠端客戶作爲系統管理socket。因爲所以的事情都可以通過HTTP來完成,也很容易讓遠端用戶連接和使用開發語言來綁定,但是這也有一些實現上的指示。用於和daemon交流的API已經良好的定義和寫好了文檔,開發者可以直接寫程序來與daemon交互而無需使用Docker client。最後,Docker clientdaemon在同一個二進制裏面分發。

  3. Docker registries存儲和分發鏡像。默認的registryDocker Hub,託管了成千上萬的鏡像。許多組織運行他們自己的registry可以用戶存儲金融的或敏感的鏡像,或者避免了網絡擁擠。 以後我們可以試着運行自己的registry Docker daemon會回覆docker pull的請求從registry下載鏡像。它也會通過docker run請求和Dockerfile中的FROM指令自動下載鏡像的,前提是本地沒有鏡像。

Docker architect.png

底層的技術

Docker daemon使用"execution driver"來創建容器,默認,這是Docker自己的runc驅動,但是也有合法的支持LXC的去掉。Runc與下面的kernel特性聯繫緊密

  1. cgroups:負責管理被容器使用的資源(例如,CPU和內存使用情況)。他們也可以負責凍結和解凍容器,被用於docker pause功能。

  2. namespace負責隔離容器,確保容器的文件系統,主機名,網絡和進程和剩餘的系統隔離開來。

  3. UFS用於存儲容器的層(layers)UFS提供一個或多個的存儲驅動,例AUFS,devicemapper,BTRFS或者Overlay

 

相關的技術

Docker引擎和Docker Hub沒有組成一個完成的容器解決方案。許多用戶會發現他們需要服務和軟件,例如集羣管理,服務發現工具和更的高網絡性能。Docker Inc計劃構建一個完全的開箱即用(out-of-the-box)的方案。也就是可替換電池戰略,主要涉及到API的層次,允許元件連接Docker Engine,並且支持Docker 技術打包爲一個獨立的二進制,來很容易的替換第三方的等價元件。

 

下面包含了一些Docker支持的技術

Swarm Docker集羣解決方案。Swarm可以爲幾個容器分組,允許用戶把他們當做統一的資源來用

Compose 是一個工具用來構建和運行由多個Docker容器組成的應用。主要用於開發和測試而不是成產環境

Machine 安裝和配置Docker主機在本地或遠程資源

Kitematic 用於管理Docker MAC OSwindos GUI

Docker Trusted Registry 目前沒開源的產品

 

已經有大量的第三方服務和應用和Docker相處的很好,幾個解決方案也已經在下面的領域合併了

 

Networking   Weave  Project Calico

Service discovery Consul, Registrator, SkyDNS,  etcd.

Orchestration and cluster management 

Kubernetes from Google, Marathon (a frame work for Mesos), CoreOSs Fleet, and Dockers own Swarm tooling.

 

當然還有其他各種各樣的插件了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章