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

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

我知道docker使用aufs来控制不同的读写访问级别。 所以它可以在主机上重新使用一些文件。 但是,当我在arch linux运行docker时,docker如何在容器中运行apt-get命令? imagegs是否包含apt-get二进制文件? 但不同的Linux发行版有不同的库和软件版本。 即使configuration文件是不同的。如何docker可以“运行”一个Ubuntu的拱桥Linux?

因为内核是一样的。

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

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

这里是Linux的概述。

内核是处理与硬件通信的操作系统的一部分。 这是操作系统的最低级别。 这里是内核的主要function列表:

  • 内存pipe理
  • networkingpipe理
  • 设备驱动
  • 文件pipe理
  • stream程pipe理

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

是的,图像必须包含apt-get才能运行apt-get。 每个图像可以有不同的软件安装在里面。 所以你可以安装一个Arch docker镜像或一个ubuntu镜像。 您可以使用以下命令search公共图像。

 docker search <your search term> 

所以要search一个你可以使用的Ubuntu映像

 docker search ubuntu 

我build议通过泊坞窗教程 ,仔细阅读所有说明和左边的链接,当你通过。