Docker為什么這么快(四大關(guān)鍵核心原因)
Docker 的快速性是其核心優(yōu)勢,以下是其快速性的4大關(guān)鍵原因@mikechen
1. 輕量級隔離:共享主機內(nèi)核,秒級啟動
Docker 并不像虛擬機那樣模擬整套硬件并安裝操作系統(tǒng),而是采用了 操作系統(tǒng)級虛擬化:
最新文章
- 所有容器共享宿主機內(nèi)核;
- 每個容器運行在獨立的用戶空間中;
- 利用 Linux 的 Namespace + Cgroups 實現(xiàn)進程級隔離;
?? 容器本質(zhì)上就是一個被隔離的普通進程,啟動只需創(chuàng)建進程 + 掛載文件系統(tǒng),無需啟動內(nèi)核或服務(wù),大多數(shù)容器可以在 幾百毫秒內(nèi)啟動。
2. 分層存儲:UnionFS 減少冗余,加速構(gòu)建和啟動
UnionFS 聯(lián)合文件系統(tǒng): Docker 鏡像采用分層結(jié)構(gòu),每一層都是對文件系統(tǒng)的增量修改。
UnionFS 技術(shù)將這些只讀層聯(lián)合掛載成一個統(tǒng)一的文件系統(tǒng),供容器使用。
最新文章
這樣有如下好處:
減少冗余
多個鏡像可以共享相同的底層鏡像層,只需存儲各自獨特的差異部分,極大地節(jié)省了磁盤空間。
加速構(gòu)建
在構(gòu)建鏡像時,Docker 會緩存每一層,如果 Dockerfile 中的指令沒有改變,構(gòu)建過程可以重用之前的鏡像層,顯著加快了構(gòu)建速度。
加速啟動
當(dāng)啟動容器時,Docker 只需要加載必要的鏡像層。
如果某些層已經(jīng)被其他容器使用,可以直接復(fù)用內(nèi)存中的緩存,無需重復(fù)加載,從而加速了容器的啟動過程。
3. 低資源占用:只包含必要依賴,運行效率高
Docker 容器只打包應(yīng)用程序及其必要的依賴庫、運行時環(huán)境和配置文件。
不包含完整的操作系統(tǒng),這使得容器的體積通常比虛擬機鏡像小得多。
最新文章
由于容器只運行應(yīng)用程序所需的組件,因此其對 CPU、內(nèi)存和磁盤 I/O 等資源的消耗也遠低于運行完整操作系統(tǒng)的虛擬機。
這使得在同一臺物理機上可以運行更多的容器,提高了資源利用率和運行效率。
4. 高效運行時:containerd 和 runc 直接操作內(nèi)核
Docker 的運行機制也非常高效,核心依賴兩個關(guān)鍵運行組件:
containerd: Docker 架構(gòu)中的一個核心組件,負責(zé)管理容器的生命周期,包括創(chuàng)建、啟動、停止、刪除等。
最新文章
runc: 一個輕量級的、符合 OCI (Open Container Initiative) 標準的容器運行時。
runc 直接與 Linux 內(nèi)核交互,利用 Namespaces 和 Cgroups 等內(nèi)核特性來創(chuàng)建和運行容器。
直接操作內(nèi)核: runc 作為底層的容器運行時,直接調(diào)用內(nèi)核接口來創(chuàng)建和管理容器的隔離環(huán)境和資源限制。
避免了額外的中間層開銷,從而實現(xiàn)了高效的容器運行。





















