我们可以使用docker提取不同的图像.这些图像是不同的linux发行版.
我知道docker使用aufs来控制不同的读写访问级别.所以它可以在主机上重用一些文件.但是,当我的主机运行arch linux
时,docker如何在容器中运行apt-get
呢?图像是否包含apt-get
二进制?但是不同的linux发行版有不同的LIB和软件版本.甚至配置文件也不同.docker如何在arch linux中"运行"ubuntu?
我们可以使用docker提取不同的图像.这些图像是不同的linux发行版.
我知道docker使用aufs来控制不同的读写访问级别.所以它可以在主机上重用一些文件.但是,当我的主机运行arch linux
时,docker如何在容器中运行apt-get
呢?图像是否包含apt-get
二进制?但是不同的linux发行版有不同的LIB和软件版本.甚至配置文件也不同.docker如何在arch linux中"运行"ubuntu?
因为内核是一样的.
所有linux发行版的共同点,以及它们为什么被称为linux,是因为它们都使用linux内核.
容器与主机共享同一内核,这就是为什么可以在Ubuntu主机上运行Arch映像.
下面是Linux的概述.
内核是操作系统的一部分,处理与硬件的通信.这是操作系统的最低级别.以下是内核的主要功能列表:
因此,当您使用容器时,您只能访问主机的内核,因为它是唯一与硬件通信的部分,只要您的操作系统使用good syscall
,您就可以在容器中运行任何linux发行版.(这就是你不能在容器中使用Windows的原因:它没有使用相同的syscall
).