【发布时间】:2016-03-13 03:57:49
【问题描述】:
在浏览 docker 文档时,我发现 docker 现在使用的是 libcontainer 而不是 LXC。有没有人知道 libcontainer 如何比 LXC 更好(如果是这样..)?
【问题讨论】:
在浏览 docker 文档时,我发现 docker 现在使用的是 libcontainer 而不是 LXC。有没有人知道 libcontainer 如何比 LXC 更好(如果是这样..)?
【问题讨论】:
Linux Containers (LXC) 在 docker 0.9 之前使用(在 March 13, 2014, with the release of version 0.9 上,Docker 放弃了 LXC 作为默认执行环境,并用自己的 libcontainer 库替换它)作为 docker 的一个执行驱动程序,并为Linux 内核包含特性。它非常特定于 Linux
libcontainer(现为opencontainers/runc)是一种抽象,以支持更广泛的隔离技术,如described in this article
这意味着 Docker 将自己从其原始实现中抽象出来,允许其他供应商(如 CoreOS)实现自己的容器版本。
注意:从那时起(What’s the difference between runc, containerd, docker?)显示:
在 2016 年,容器空间蓬勃发展,docker 决定将单体架构拆分为多个独立部分,其中一些甚至可以用于其他项目 — 这就是
containerd发生的事情。那是 Docker 1.11(非常古老的历史)。
Containerd 是一个守护进程,充当各种容器运行时和操作系统的 API 门面。使用containerd,时,您不再使用系统调用,而是使用更高级别的实体,如快照和容器 — 其余部分被抽象出来。
如果您想更深入地了解containerd,请在他们的 GitHub 存储库中找到 design documentation。
在底层,containerd使用runc完成所有 linux 工作 .
在“How containerd compares to runC”查看更多信息
【讨论】:
我宁愿建议你通过这个链接来全面了解 Docker 为什么启动 libcontainer
http://www.zdnet.com/article/docker-libcontainer-unifies-linux-container-powers/
【讨论】:
据我所知.. LXC 是 docker 引擎执行其容器/命名空间等的默认执行驱动程序。 Docker 开发了“libcontainer”并添加到他们的 docker 引擎中。如果我错了,请纠正我。
【讨论】: