---
author: Floyd Hilton
category: 容器与云
comments_data: []
count:
  commentnum: 0
  favtimes: 2
  likes: 0
  sharetimes: 0
  viewnum: 8919
date: '2017-11-27 22:57:06'
editorchoice: false
excerpt: 让我们来探讨一下“容器主机”和“容器操作系统”之间的关系，以及它们在 Linux 和 Windows 容器之间的区别。
fromurl: http://floydhilton.com/docker/2017/03/31/Docker-ContainerHost-vs-ContainerOS-Linux-Windows.html
id: 9088
islctt: true
largepic: /images/p/201711/27/225657t2mt8222b5ma5c24.png
permalink: /article-9088-1.html
pic: /images/p/201711/27/225657t2mt8222b5ma5c24.png.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: 让我们来探讨一下“容器主机”和“容器操作系统”之间的关系，以及它们在 Linux 和 Windows 容器之间的区别。
tags:
- 容器
- 主机
- Docker
thumb: false
title: 了解用于 Linux 和 Windows 容器的 Docker “容器主机”与“容器操作系统”
titlepic: true
translator: geekpi
updated: '2017-11-27 22:57:06'
---

![](/images/p/201711/27/225657t2mt8222b5ma5c24.png)


让我们来探讨一下“容器主机”和“容器操作系统”之间的关系，以及它们在 Linux 和 Windows 容器之间的区别。


### 一些定义


* <ruby> 容器主机 <rt>  Container Host </rt></ruby>：也称为<ruby> 主机操作系统 <rt>  Host OS </rt></ruby>。主机操作系统是 Docker 客户端和 Docker 守护程序在其上运行的操作系统。在 Linux 和非 Hyper-V 容器的情况下，主机操作系统与运行中的 Docker 容器共享内核。对于 Hyper-V，每个容器都有自己的 Hyper-V 内核。
* <ruby> 容器操作系统 <rt>  Container OS </rt></ruby>：也被称为<ruby> 基础操作系统 <rt>  Base OS </rt></ruby>。基础操作系统是指包含操作系统如 Ubuntu、CentOS 或 windowsservercore 的镜像。通常情况下，你将在基础操作系统镜像之上构建自己的镜像，以便可以利用该操作系统的部分功能。请注意，Windows 容器需要一个基础操作系统，而 Linux 容器不需要。
* <ruby> 操作系统内核 <rt>  Operating System Kernel </rt></ruby>：内核管理诸如内存、文件系统、网络和进程调度等底层功能。


### 如下的一些图


![Linux Containers](/images/p/201711/27/225709cc3cn4cwwj24acgs.png)


在上面的例子中：


* 主机操作系统是 Ubuntu。
* Docker 客户端和 Docker 守护进程（一起被称为 Docker 引擎）正在主机操作系统上运行。
* 每个容器共享主机操作系统内核。
* CentOS 和 BusyBox 是 Linux 基础操作系统镜像。
* “No OS” 容器表明你不需要基础操作系统以在 Linux 中运行一个容器。你可以创建一个含有 [scratch](https://hub.docker.com/_/scratch/) 基础镜像的 Docker 文件，然后运行直接使用内核的二进制文件。
* 查看[这篇](https://www.brianchristner.io/docker-image-base-os-size-comparison/)文章来比较基础 OS 的大小。


![Windows Containers - Non Hyper-V](/images/p/201711/27/225710zkx228jja2ux6kbc.png)


在上面的例子中：


* 主机操作系统是 Windows 10 或 Windows Server。
* 每个容器共享主机操作系统内核。
* 所有 Windows 容器都需要 [nanoserver](https://hub.docker.com/r/microsoft/nanoserver/) 或 [windowsservercore](https://hub.docker.com/r/microsoft/windowsservercore/) 的基础操作系统。


![Windows Containers - Hyper-V](/images/p/201711/27/225710nqztqqb295cqfuqf.png)


在上面的例子中：


* 主机操作系统是 Windows 10 或 Windows Server。
* 每个容器都托管在自己的轻量级 Hyper-V 虚拟机中。
* 每个容器使用 Hyper-V 虚拟机内的内核，它在容器之间提供额外的分离层。
* 所有 Windows 容器都需要 [nanoserver](https://hub.docker.com/r/microsoft/nanoserver/) 或 [windowsservercore](https://hub.docker.com/r/microsoft/windowsservercore/) 的基础操作系统。


### 几个好的链接


* [关于 Windows 容器](https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/)
* [深入实现 Windows 容器，包括多用户模式和“写时复制”来节省资源](http://blog.xebia.com/deep-dive-into-windows-server-containers-and-docker-part-2-underlying-implementation-of-windows-server-containers/)
* [Linux 容器如何通过使用“写时复制”来节省资源](https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/#the-copy-on-write-strategy)




---


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


作者：[Floyd Hilton](http://floydhilton.com/about/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出