Docker 的宿主系统是 CentOS ,为什么可以运行 Ubuntu 的镜像呢?

首先需要区分 Linux 内核与 Linux 发行版

  • Linux 内核是 Linux 操作系统的核心, 负责硬件管理, 比如管理内存、管理磁盘(文件系统)、管理 CPU(进程)等等 ...

  • Linux 发行版是在 Linux 内核的基础上添加了一些工具软件,比如图形界面、函数库、软件包管理系统等等 ...

CentOS 与 Ubuntu 是不同的 Linux 发行版, 它们都是基于 Linux 内核, 只是添加的工具软件不同。比如, 他们的软件包管理系统不同, CentOS 使用 yum 命令安装软件, 而 Ubuntu 使用 apt-get 命令安装软件。

因此 CentOS 与 Ubuntu 的内核是相同的(版本可能不同),只是所安装的软件不同,即文件系统不同。

Docker 容器技术是基于 Linux 内核实现的, 它主要用到了两个内核模块:

  • Namespace: 用于容器的隔离,例如 PID Namespace 使得容器中的进程无法感知宿主机以及其他容器中的进程。

  • Cgroups:用于容器的资源控制,比如限制容器所使用的内存大小或者 CPU 个数。

在 CentOS 上运行基于 Ubuntu 镜像的容器时,容器使用了 CentOS 主机的内核以及 Ubuntu 镜像,Ubuntu 镜像中安装了 Ubuntu 的各种软件(apt-get)。

你可能感兴趣的:(Docker 的宿主系统是 CentOS ,为什么可以运行 Ubuntu 的镜像呢?)