linux - 为什么 docker 有能力运行不同的 linux 发行版?

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

我知道 docker 使用 aufs控制不同的读写访问级别。所以它可以重用主机上的一些文件。但是当我的主机运行 arch linux 时,docker 如何在容器中运行 apt-get 呢?图像是否包含 apt-get 二进制文件?但是不同的 linux 发行版有不同的库和软件版本。连配置文件都不一样。docker如何在arch linux中“运行”ubuntu?

最佳答案

因为内核是一样的。

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

容器与主机共享相同的内核,这就是您可以在 Ubuntu 主机上运行 Arch 镜像的原因。

这里是 Linux 的概述。

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

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

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

https://stackoverflow.com/questions/25444099/

相关文章:

python - 在 matplotlib 中设置颜色条范围

python - 如何列出导入的模块?

linux - 如何在复杂的文本文件中替换 shell 变量

c++ - 如何调用存储在char数组中的机器码?

linux - du 计算文件大小的硬链接(hard link)?

linux - 我应该使用什么 Linux shell?

c++ - 如何在 Linux 上执行适用于 x86、arm、GCC 和 icc 的原子操作?

python - 类属性和实例属性有什么区别?

python - Numpy:从二维数组中获取随机行集

python - 在 Python 中锁定文件