为什么docker能够运行不同的Linux发行版?

时间:2014-08-22 09:45:23

标签: linux docker

我们可以使用docker来拉出不同的图像。而这些图像是不同的linux发行版。 但无论运行哪个Linux发行版docker,docker都可以像在虚拟机中一样运行这些不同的linux发行版。

我知道docker使用aufs来控制不同的读写访问级别。因此它可以在主机上重用一些文件。但是当我的主机运行apt-get时,docker如何在容器中运行arch linux?图像是否包含apt-get二进制文件?但不同的linux发行版有不同的库和软件版本。甚至配置文件也不同。如何停靠和运行" ubuntu在一个拱形linux?

2 个答案:

答案 0 :(得分:61)

因为内核是相同的。

所有Linux发行版的共同点,以及它们被称为linux的原因,都是因为它们都使用了linux内核。

容器与主机共享相同的内核,这就是为什么你可以在Ubuntu主机上运行Arch映像。

以下是Linux的概述。

内核是操作系统的一部分,用于处理与硬件的通信。它是操作系统的最低级别。以下是内核的主要功能列表:

  • 内存管理
  • 网络管理
  • 设备驱动程序
  • 文件管理
  • 流程管理

因此,当您使用容器时,您只能访问主机的内核,因为它是唯一与硬件通信的部分,只要您的操作系统使用好的syscall,您就是能够在容器内运行任何Linux发行版。 (这就是您无法在容器中使用Windows的原因:它没有使用相同的syscall)。

答案 1 :(得分:3)

是的,图片必须包含apt-get才能运行apt-get。每个图像都可以在其中安装不同的软件。因此,您可以安装Arch docker image或ubuntu图像。您可以使用以下命令搜索公共图像。

docker search <your search term>

所以要搜索你可以使用的ubuntu图像

docker search ubuntu

我建议您通过docker tutorial进行操作,并仔细阅读左侧的所有说明和链接。