Docker 底層實現

2022-09-06 04:27:09 字數 663 閱讀 9174

docker 底層的核心技術包括 linux 上的命名空間(namespaces)、控制組(control groups)、union 檔案系統(union file systems)和容器格式(container format)。

我們知道,傳統的虛擬機器通過在宿主主機中執行 hypervisor 來模擬一整套完整的硬體環境提供給虛擬機器的作業系統。虛擬機器系統看到的環境是可限制的,也是彼此隔離的。 這種直接的做法實現了對資源最完整的封裝,但很多時候往往意味著系統資源的浪費。 例如,以宿主機和虛擬機器系統都為 linux 系統為例,虛擬機器中執行的應用其實可以利用宿主機系統中的執行環境。

我們知道,在作業系統中,包括核心、檔案系統、網路、pid、uid、ipc、記憶體、硬碟、cpu 等等,所有的資源都是應用程序直接共享的。 要想實現虛擬化,除了要實現對記憶體、cpu、網路io、硬碟io、儲存空間等的限制外,還要實現檔案系統、網路、pid、uid、ipc等等的相互隔離。 前者相對容易實現一些,後者則需要宿主機系統的深入支援。

隨著 linux 系統對於命名空間功能的完善實現,程式設計師已經可以實現上面的所有需求,讓某些程序在彼此隔離的命名空間中執行。大家雖然都共用乙個核心和某些執行時環境(例如一些系統命令和系統庫),但是彼此卻看不到,都以為系統中只有自己的存在。這種機制就是容器(container),利用命名空間來做許可權的隔離控制,利用 cgroups 來做資源分配。

Docker 底層實現

docker 採用了 c s架構,包括客戶端和服務端。docker daemon 作為服務端接受來自客戶的請求,並處理這些請求 建立 執行 分發容器 客戶端和服務端既可以執行在乙個機器上,也可通過 socket 或者 restful api 來進行通訊 docker daemon 一般在宿主主機後台...

Docker底層原理

docker底層原理 docker 是乙個client server結構的系統,docker守護程序執行在主機上 然後通過socket連線從客戶端訪問,守護程序從客戶端接受命令並管理執行在主機上的容器。後台守護程序docker daemon docker 為啥子比vm快 1.docker 有著比虛擬...

Docker底層原理

docker是乙個c s架構的系統,docker守護程序執行在主機上,然後通過socket連線從客戶端訪問,守護程序從客戶端接收命令並管理執行在主機上的容器。容器是乙個執行時環境。docker比vm快 docker有著比虛擬機器更少的抽象層。由於docker不需要hypervisor實現硬體資源虛擬...