首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解技术(码头)容器体系结构

理解技术(码头)容器体系结构
EN

Stack Overflow用户
提问于 2020-07-05 16:36:01
回答 1查看 276关注 0票数 0

我是新的集装箱,并希望获得一个良好的知识,集装箱技术(码头)是如何从‘零’。我必须写一篇论文,希望到目前为止,我对每件重要的事情都有正确的理解。

下面的图表是我做的,并展示了我目前对容器的理解。

显然,我们需要一个具有内核的操作系统,它允许我们使用硬件。对于Docker,这是Linux。为此使用了一个VM和Linux。

在Linux操作系统之上,我们运行我们的Docker引擎。我们的码头引擎负责启动,建造,配置.我们的图像和容器。但是最重要的是,Docker引擎处理与隔离容器有关的所有事情,例如,它维护名称空间或cgroup的使用方式,以便每个容器都拥有自己的完整文件系统。

那我们就有真正的集装箱了。容器本身几乎每次都需要一种操作系统本身。这主要是一个非常紧凑的阿尔卑斯山或百事箱。他们收集了少数的标准功能,如'file','tar','grep‘,这些都是大多数软件绝对需要的。这个紧凑的操作系统现在正在使用我们整个Linux操作系统中的内核。他们没有自己的内核。

然后,在紧凑型操作系统之上放置实际的软件,如Node.js或NGINX。这个软件只使用紧凑型操作系统,作为回报,它使用了我们整个Linux操作系统中的内核。并且在运行时生成或完成的所有数据或修改都是在容器的可写层上进行的。

如果我正确理解的话,我们的容器或者在容器中运行的所有东西都不是使用整个Linux操作系统,也不是与整个Linux操作系统交互,而是只与内核交互?我也不太明白容器中的可写层是如何工作的。例如,我的软件如何知道来自只读层的修改文件现在出现在可写层中,并且应该使用它?

我真的很希望能对我至今遗漏的内容作出一些修正或建议。谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-07-08 20:43:07

如果我正确理解的话,我们的容器或者在容器中运行的所有东西都不是使用整个Linux操作系统,也不是与整个Linux操作系统交互,而是只与内核交互?

容器只是过程。对于内核,Docker守护进程、NodeJS应用程序和Nginx是进程。这就是为什么容器没有自己的内核。Docker守护进程(以及主机上的其他进程)与在容器中运行的进程之间的区别在于它们的作用域(称为命名空间)。容器中的进程是孤立运行的,它们看不到名称空间周围的任何内容。有许多不同的名称空间,例如,pid命名空间就是其中之一,它限制了其他进程的可见性。这就是为什么容器中的ps命令不显示来自主机或其他容器的进程。名称空间是一个内核,它们更多地是关于进程可以看到和访问什么,而也有一些cgroup对CPU和内存的使用进行限制。

我希望这能在某种程度上帮助您,至少我试图将更多的注意力放在内核上,因为Docker只是一个守护进程,它使用配置好的名称空间、cgroup和自己的文件系统来旋转新进程。

以下是一些可能有用的链接:

如果你想深入一点,我建议看一下名称空间:从chroot()到容器幻灯片,看看关于创建自己的容器的文章

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62743489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档