Docker中的共享内核是什么意思?

gau*_*rav 14 virtualization docker

在Docker中,来宾OS与Host OS共享相同的内核.

有人可以详细说明它.

让我有一些内核版本的centos,当我们拉ubuntu图像然后它有不同的内核,那我们怎么能说他们有相同的内核?

Von*_*onC 20

当我们拉ubuntu图像然后它有不同的内核

不,它没有:它没有内核部分:它依赖于所有系统调用的主机内核(运行docker引擎的内核).

如" Docker vs Virtualization "中所述:

最初,Docker是作为Linux容器(LXC)之上的抽象层构建的.LXC本身只是Linux收容功能的一个API.
从Docker 0.9开始,LXC不再是默认设置,并且已经被用Go编写的自定义库(libcontainer)取代.整体libcontainer的优势是在各种Linux发行版中更加一致的内核接口.唯一的问题是它需要Linux 3.8及更高版本.

请参阅" 为什么理解用户空间与内核空间重要 ".
" 操作系统容器与应用程序容器 ":

容器是操作系统虚拟化的产物.它们提供了一个轻量级的虚拟环境,可以从主机和任何其他容器中分离和隔离一组进程和资源,如内存,CPU,磁盘等.
隔离保证容器内的任何进程都无法看到容器外的任何进程或资源.

https://risingstack-blog.s3-eu-west-1.amazonaws.com/2015/05/os-virtualization.jpg

操作系统容器是共享主机操作系统内核但提供用户空间隔离的虚拟环境

https://risingstack-blog.s3-eu-west-1.amazonaws.com/2015/05/os-containers.jpg

正如" 所有Linux发行版都使用相同的内核吗? "中提到的,即使每个发行版都有自己的内核配置,也可以在发行版中共享内核.

  • @gaurav * 不是 * 拉动自己的内核:它依赖于已经存在的内核。 (3认同)
  • @VonC 我不知道什么更令人印象深刻 - 你在评论中的耐心或你的答案的质量:)!不管怎样,干得好! (2认同)