瞭解用於 Linux 和 Windows 容器的 Docker “容器主機”與“容器作業系統”

Floyd Hilton發表於2017-11-27

瞭解用於 Linux 和 Windows 容器的 Docker “容器主機”與“容器作業系統”

讓我們來探討一下“容器主機”和“容器作業系統”之間的關係,以及它們在 Linux 和 Windows 容器之間的區別。

一些定義

  • 容器主機Container Host:也稱為主機作業系統Host OS。主機作業系統是 Docker 客戶端和 Docker 守護程式在其上執行的作業系統。在 Linux 和非 Hyper-V 容器的情況下,主機作業系統與執行中的 Docker 容器共享核心。對於 Hyper-V,每個容器都有自己的 Hyper-V 核心。
  • 容器作業系統Container OS:也被稱為基礎作業系統Base OS。基礎作業系統是指包含作業系統如 Ubuntu、CentOS 或 windowsservercore 的映象。通常情況下,你將在基礎作業系統映象之上構建自己的映象,以便可以利用該作業系統的部分功能。請注意,Windows 容器需要一個基礎作業系統,而 Linux 容器不需要。
  • 作業系統核心Operating System Kernel:核心管理諸如記憶體、檔案系統、網路和程式排程等底層功能。

如下的一些圖

Linux Containers

在上面的例子中:

  • 主機作業系統是 Ubuntu。
  • Docker 客戶端和 Docker 守護程式(一起被稱為 Docker 引擎)正在主機作業系統上執行。
  • 每個容器共享主機作業系統核心。
  • CentOS 和 BusyBox 是 Linux 基礎作業系統映象。
  • “No OS” 容器表明你不需要基礎作業系統以在 Linux 中執行一個容器。你可以建立一個含有 scratch 基礎映象的 Docker 檔案,然後執行直接使用核心的二進位制檔案。
  • 檢視這篇文章來比較基礎 OS 的大小。

Windows Containers - Non Hyper-V

在上面的例子中:

  • 主機作業系統是 Windows 10 或 Windows Server。
  • 每個容器共享主機作業系統核心。
  • 所有 Windows 容器都需要 nanoserverwindowsservercore 的基礎作業系統。

Windows Containers - Hyper-V

在上面的例子中:

  • 主機作業系統是 Windows 10 或 Windows Server。
  • 每個容器都託管在自己的輕量級 Hyper-V 虛擬機器中。
  • 每個容器使用 Hyper-V 虛擬機器內的核心,它在容器之間提供額外的分離層。
  • 所有 Windows 容器都需要 nanoserverwindowsservercore 的基礎作業系統。

幾個好的連結


via: http://floydhilton.com/docker/2017/03/31/Docker-ContainerHost-vs-ContainerOS-Linux-Windows.html

作者:Floyd Hilton 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章