【发布时间】:2014-11-28 16:22:51
【问题描述】:
我一直在研究 Docker,我从 this post 了解到,运行多个 docker 容器意味着要快,因为它们通过“LXC 主机”共享内核级资源,但是,我还没有找到任何关于这种关系是如何工作的,具体到 docker 配置,以及在什么级别共享资源。
Docker镜像和Docker容器共享资源有什么关系,资源是如何共享的?
编辑:
当谈到共享资源的“内核”时,这是哪个内核?它是指主机操作系统(docker 二进制文件所在的级别)还是指容器所基于的映像的内核?基于不同Linux发行版的容器不会需要运行在不同类型的内核上吗?
编辑 2:
最后的编辑让我的问题更清楚一点,我很好奇 docker 是否真的没有运行映像的完整操作系统,正如他们在“Docker 与虚拟机”
下面的说法似乎与上图矛盾,taken from here:
容器由操作系统、用户添加的文件和 元数据。正如我们所见,每个容器都是从一个镜像构建的。
【问题讨论】:
-
Docker 容器都在同一个内核中运行,而虚拟机则为每个来宾运行一个内核。所以,就内核中的哪些资源是共享的而言......真的,那将是绝对所有,除了那些在命名空间中彼此远离的项目(非共享挂载、进程树条目、 cgroups 等)。
-
如果你想深入了解,几乎任何 LXC 介绍都可以。
-
我已经修改了我的答案以涵盖您的编辑,希望这使主机/内容分离更加清晰