gpt4 book ai didi

linux - Docker 镜像/容器里面有什么?

转载 作者:IT老高 更新时间:2023-10-28 12:42:23 25 4
gpt4 key购买 nike

考虑到 docker 镜像/容器有多种风格 - Ubuntu、CentOS、CoreOS 等。我很好奇镜像/容器的真正组成部分,以及与主机操作系统共享的内容?分界线在哪里?

例如,我可以下载基本的 Ubuntu 镜像并在 CentOS 主机上启动它。然后,当我在 Ubuntu 容器内四处寻找时,我可以看到它看起来和感觉就像一个 Ubuntu 服务器(文件系统布局等)。但是如果我运行 uname 命令,我会看到内核和 CentOS 主机之类的东西......

显然,我了解底层内核由同一主机上的所有容器共享。但是还有什么是与主机操作系统共享的,图像/容器的一部分是什么?

例如内核是主机的一部分,文件系统布局是图像/容器的一部分......是否有定义这个的规范?

最佳答案

区分 图像容器 ( docs ) 会很有帮助。 图像 是静态的并且只存在于磁盘上。 containerimage 的运行实例,它包括自己的进程树以及 RAM 和其他运行时资源。

图像 是层的逻辑分组以及关于创建容器时要做什么以及如何组装层的元数据。该元数据的一部分是每个层都知道其父级的 ID。

那么,层中有什么?您添加到父级的文件(和目录)。还有一些特殊文件(“whiteout”)表明从父级中删除了某些内容。

当你 docker run 一个图像时,docker 创建一个容器:它以正确的顺序解压所有层,创建一个新的“根”文件系统,与主持人。 docker 还读取图像元数据并启动创建图像时指定的“入口点”或“命令”——这会启动一个新的进程子树。从容器内部看,第一个进程看起来像是树的根,但从主机上你可以看到它是进程的子树。

根文件系统使一个 Linux 发行版与另一个不同(也可能存在一些内核模块差异,以及引导加载程序/引导文件系统差异,但这些通常对正在运行的进程是不可见的)。内核与主机共享,实际上仍在容器内管理其通常的职责。但是根文件系统是不同的,所以当你在容器中时,它的外观和感觉就像 Docker 镜像中的任何发行版。

容器不仅有自己的文件系统和进程树,还拥有自己的逻辑网络接口(interface),还可以选择分配自己的 RAM 和 CPU 时间。但是,作为运算符(operator),您可以控制容器,因此您可以决定与容器共享主机的网络接口(interface),为其提供对 RAM 和 CPU 的无限制访问权限,甚至可以将主机中的设备、文件和目录挂载到容器。默认设置是将事物分开,但您可以根据需要尽可能多地打破隔离模型。

关于linux - Docker 镜像/容器里面有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27359771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com