我知道的典型 docker 容器堆栈是 docker(client) -> dockerd -> containerd -> runC。然后您还会听说libcontainer。我想知道 libcontainer 在上面的堆栈中的位置以及它的作用/目的是什么。
问问题
183 次
1 回答
1
简短的回答:
从github.com/docker/libcontainer开始的东西
现在似乎在github.com/opencontainers/runc/tree/master/libcontainer继续
这意味着我们现在有:docker→ containerd→ runc→libcontainer
一点历史
部分来自:下面是低级 Linux 容器运行时的历史。
开头:
...上游 Docker 开发人员,包括我的 Red Hat 团队的一些成员,决定他们想要一种 golang-native 方式来启动容器,而不是启动一个单独的应用程序。工作开始了
libcontainer
,作为一个用于启动容器的本地 golang 库......
在开放容器倡议(OCI)成立后:
...
libcontainer
Docker 的部分被分解并捐赠给了 OCI。上游 Docker 工程师和我们的工程师帮助创建了一个新的前端工具来读取 OCI 运行时规范 JSON 文件并与之交互libcontainer
以运行容器。这个名为 的工具runc
也被捐赠给了 OCI。
进一步阅读:
- 容器简史:从 1970 年代至今
- 揭开容器运行时的神秘面纱
- 所有不同的容器运行时是怎么回事?- Ricardo Aravena,来自 KubeCon Europe 2018的 Branch Metrics
于 2020-06-24T14:30:07.953 回答