了解用于Linux和 Windows容器的Docker“容器主機(jī)”與“容器操作系統(tǒng)”
作者:Floyd Hilton
本文主要來探討一下“容器主機(jī)”和“容器操作系統(tǒng)”之間的關(guān)系,以及它們在 Linux 和 Windows 容器之間的區(qū)別。
讓我們來探討一下“容器主機(jī)”和“容器操作系統(tǒng)”之間的關(guān)系,以及它們在 Linux 和 Windows 容器之間的區(qū)別。
一些定義
- 容器主機(jī):也稱為主機(jī)操作系統(tǒng)。主機(jī)操作系統(tǒng)是 Docker 客戶端和 Docker 守護(hù)程序在其上運(yùn)行的操作系統(tǒng)。在 Linux 和非 Hyper-V 容器的情況下,主機(jī)操作系統(tǒng)與運(yùn)行中的 Docker 容器共享內(nèi)核。對于 Hyper-V,每個容器都有自己的 Hyper-V 內(nèi)核。
- 容器操作系統(tǒng):也被稱為基礎(chǔ)操作系統(tǒng)?;A(chǔ)操作系統(tǒng)是指包含操作系統(tǒng)如 Ubuntu、CentOS 或 windowsservercore 的鏡像。通常情況下,你將在基礎(chǔ)操作系統(tǒng)鏡像之上構(gòu)建自己的鏡像,以便可以利用該操作系統(tǒng)的部分功能。請注意,Windows 容器需要一個基礎(chǔ)操作系統(tǒng),而 Linux 容器不需要。
- 操作系統(tǒng)內(nèi)核:內(nèi)核管理諸如內(nèi)存、文件系統(tǒng)、網(wǎng)絡(luò)和進(jìn)程調(diào)度等底層功能。
如下的一些圖
Linux Containers
在上面的例子中:
- 主機(jī)操作系統(tǒng)是 Ubuntu。
- Docker 客戶端和 Docker 守護(hù)進(jìn)程(一起被稱為 Docker 引擎)正在主機(jī)操作系統(tǒng)上運(yùn)行。
- 每個容器共享主機(jī)操作系統(tǒng)內(nèi)核。
- CentOS 和 BusyBox 是 Linux 基礎(chǔ)操作系統(tǒng)鏡像。
- “No OS” 容器表明你不需要基礎(chǔ)操作系統(tǒng)以在 Linux 中運(yùn)行一個容器。你可以創(chuàng)建一個含有 scratch 基礎(chǔ)鏡像的 Docker 文件,然后運(yùn)行直接使用內(nèi)核的二進(jìn)制文件。
- 查看這篇文章來比較基礎(chǔ) OS 的大小。
Windows Containers - Non Hyper-V
在上面的例子中:
- 主機(jī)操作系統(tǒng)是 Windows 10 或 Windows Server。
- 每個容器共享主機(jī)操作系統(tǒng)內(nèi)核。
- 所有 Windows 容器都需要 nanoserver 或 windowsservercore 的基礎(chǔ)操作系統(tǒng)。
Windows Containers - Hyper-V
在上面的例子中:
- 主機(jī)操作系統(tǒng)是 Windows 10 或 Windows Server。
- 每個容器都托管在自己的輕量級 Hyper-V 虛擬機(jī)中。
- 每個容器使用 Hyper-V 虛擬機(jī)內(nèi)的內(nèi)核,它在容器之間提供額外的分離層。
- 所有 Windows 容器都需要 nanoserver 或 windowsservercore 的基礎(chǔ)操作系統(tǒng)。
幾個好的鏈接
責(zé)任編輯:龐桂玉
來源:
Linux中國