LXC 和 libcontainer 之间的区别 [关闭]
Posted
技术标签:
【中文标题】LXC 和 libcontainer 之间的区别 [关闭]【英文标题】:Difference between LXC and libcontainer [closed] 【发布时间】:2016-03-13 03:57:49 【问题描述】:在浏览 docker 文档时,我发现 docker 现在使用的是 libcontainer 而不是 LXC。有没有人知道 libcontainer 如何比 LXC 更好(如果是这样..)?
【问题讨论】:
【参考方案1】: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”查看更多信息
【讨论】:
问题是关于 libcontainer,而不是关于 libnetwork @ISanych 对,那我改写答案 @VonC 感谢您的回复。这意味着,现在 docker 有了命名空间、cgroups(来自 LXC)和来自 libcontainer 的附加内核特性 selinux、netlink、功能等。我是对的 VonC 吗? @YogeshJilhawar 是的,这就是 SPEC 提到的(github.com/opencontainers/runc/blob/…:amespaces、标准文件系统设置、默认 Linux 功能集以及有关资源预留的信息)【参考方案2】:我宁愿建议你通过这个链接来全面了解 Docker 为什么启动 libcontainer
http://www.zdnet.com/article/docker-libcontainer-unifies-linux-container-powers/
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。【参考方案3】:据我所知.. LXC 是 docker 引擎执行其容器/命名空间等的默认执行驱动程序。 Docker 开发了“libcontainer”并添加到他们的 docker 引擎中。如果我错了,请纠正我。
【讨论】:
以上是关于LXC 和 libcontainer 之间的区别 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章