Docker“共享依赖项”

 苦咖啡青柠檬 发布于 2023-01-10 09:09

在阅读Docker的同时,我停了几次,因为Docker容器不仅共享主机内核,而且还共享相同的二进制文件和库。

我从中了解到的是,如果我在同一主机上运行相同的docker镜像两次,并且此镜像正在使用某些文件x,y,z(例如,libraries / bins ..任何东西)。这些文件还将在两个启动的容器之间共享吗?更重要的是,如果我运行两个不同的映像,它们仍然可以共享这些公共依赖项。我要的只是两件事...

1-验证/说明->是/否+说明(这是怎么发生的)
2-如果是->是否有实际示例,我可以运行2个容器(具有相同/差异图像)并进行验证他们看到的是相同的文件/库。

我希望我的问题很清楚,并且有人可以回答:)

1 个回答
  • 是的,两个问题的答案都是“正确的”。如果您在同一主机上启动2个(或更多)容器,且所有容器都使用相同的基本映像,则将共享基本映像的全部内容。

    实际上,所谓的“图像”是堆叠在一起的多个具有父子关系的称为“图层”的图像。

    现在,如果您使用不同的图像启动多个容器,则可能会发生这些图像共享一些公共层的情况,这取决于它们的构建方式。

    在系统级别,Docker将每个图像层都安装在另一个图像层上,直到最终/顶部图像。如果每一层重叠,则它们的父内容将被覆盖。为此,它使用所谓的“联合文件系统”(Aufs)甚至是卷快照。更多信息在这里。

    映像永远不会被修改,它们是只读的。在最后一个/上一个图像的顶部,添加了一个额外的可写层,它将包含正在运行的容器所做的更改/添加。

    这意味着该可写层也可以变成图像层,并且您可以从该新图像启动其他容器。

    要查看“用自己的眼睛共享”的图层,只需运行以下示例:

    docker run ubuntu:trusty /bin/bash
    

    然后:

    docker run ubuntu-upstart:trusty /bin/bash
    

    Docker会告诉您它已经具有一些层,因此将全部下载。

    查看有关编写Dockerfile(映像构建脚本)的文档,这应该使您对所有这些工作原理有一个很好的了解。


    2023-01-10 09:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有