Docker“共享依赖关系”

2024-04-23

在阅读 Docker 的同时,我多次停下来,因为 Docker 容器不仅共享主机内核,而且如果可能的话,它们还共享通用的二进制文件和库。

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

1- 验证/解释 --> 是真是假+解释(这是如何发生的)
2- 如果为真 --> 是否有一个实际的例子,我可以运行 2 个容器(相同/差异图像)并验证它们看到相同的文件/库。

我希望我的问题很清楚并且有人有答案:)


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

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

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

在系统级别,Docker 将每个映像层安装在另一个映像层之上,直到最终/顶部映像。如果重叠,每个图层都会覆盖其父内容。为此,它使用所谓的“联合文件系统”(Aufs),甚至卷快照。更多信息here https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/#images-and-layers.

图像从未被修改,它们是只读的。在最后一个/上面的图像之上,添加了一个额外的可写层,它将包含正在运行的容器所做的更改/添加。

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

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

docker run ubuntu:trusty /bin/bash

Then:

docker run ubuntu-upstart:trusty /bin/bash

Docker 会告诉你它已经有了一些层,因此会下载所有层。

检查有关编写的文档Dockerfile http://docs.docker.com/reference/builder/#from(图像构建脚本),这应该能让您对这一切如何工作有一个很好的了解。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker“共享依赖关系” 的相关文章

随机推荐

  • 用于 AR 的 Android 视频流捕获

    我希望能够从 Android 手机摄像头捕获视频 然后处理该视频 处理涉及向直播流添加一层 AR 这在安卓上可行吗 很确定应该是这样 我查看了android网站 http developer android com guide topics
  • 如何检测设备是否支持刘海屏?

    目前我面临着检测移动设备是否支持 Android 中的缺口显示的问题 任何人都可以帮助我吗 我需要使用 android studio 中的代码来完成此操作 Thanks 一些奥利奥设备也有凹口显示 如果您的目标是支持所有操作系统 那么您可以
  • Python:使用虚拟类来传递变量名称?

    这是后续返回一个字典的函数 其键是输入参数的名称 https stackoverflow com questions 9586305 python function that returns a dict whose keys are th
  • 比较 dateutil.relativedelta

    我正在尝试在两个相对增量之间进行 gt 比较 if relativedelta current date last activity date gt relativedelta minutes 15 以下是 Eclipse 中调试器窗口的输
  • 更改python文件的第一行

    我只需要读取一个大文件的第一行并更改它 有没有一种技巧可以使用Python仅更改文件的第一行并将其另存为另一个文件 我所有的代码都是用 Python 完成的 这将帮助我保持一致性 这个想法是不必读取然后写入整个文件 shutil copyf
  • 尝试用C语言创建链表

    我正在尝试用 C 语言创建一个链表结构 但我不太确定出了什么问题 我的错误是 linked c 6 2 error unknown type name linkedList linked c In function makeList lin
  • 如何将图像从 React 上传到 ASP.NET Core Web API?

    我在 mt 服务器端有 Web API 控制器 HttpPost CreateImage public void CreateImage FromBody ImageDTO img Image image new Image FileNam
  • Mule 文件入站轮询配置

    我想以特定的时间间隔一次从特定目录轮询 10 个文件 如果该目录中存在 250 个文件 Mule 文件入站应从 250 个文件中取出 10 个文件并处理它们 然后再处理 10 个文件等 我的轮询频率值为 10000 我尝试像这样应用 max
  • 递归获取所有孩子

    我需要递归地从嵌套对象中获取所有子对象 我已经写了一个函数来做到这一点 有点 但我认为它可以改进 我怎样才能让它更短更干净 我已经包含了我用于测试的数据以及我编写的需要改进的函数 let data id 1 child id 2 child
  • 从 GCM 2.0 迁移到 GCM 3.0 InstanceID API

    目前我已经在 Play 商店上发布了我的应用程序 并且在该项目中我正在使用 compile com google android gms play services 7 0 0 Google Play 服务库版本7 0在我的项目中使用 Go
  • 实体框架不创建数据库

    一直在使用 ASP NET MVC 3 项目尝试 Entity Framework 4 1 的 Code First 功能 但是 数据库 SQL Server 2008 R2 不会在应用程序启动时自动创建表映射 关于如何让它这样做有什么想法
  • C 中的动态二维数组分配

    我应该如何在 C 中分配动态数组 目前我有一个我写的函数叫做malloc2D看起来像这样 void malloc2D size t unitSize uint firstCount uint secondCount void pointer
  • 为什么我不能在 Laravel 路径中使用“php artisan”命令(Windows)

    我尝试在 Ubuntu 中学习 Laravel 命令 php artisan 在终端的 laravel 文件夹路径中工作 我刚开始在Win7中这样做 我在cmd exe中输入 cd c wamp www myproject 来更改larav
  • 增加具有重复组的组的行号

    我正在研究 PLSQL Oracle 12 的查询 其中我需要增加每个组的数据集的行号 我的问题与这个问题类似 增加组上的行号 https stackoverflow com questions 11116275 increment row
  • WPF:无法让我控制焦点

    我似乎无法真正控制焦点 XAML
  • 在Playframework2中,如何服务多个资源目录?

    asset目录有两个 一个是 ui dist另一个是 public 我尝试这样写路线 GET assets file controllers Assets at path public file GET ui file controller
  • 如何将自定义标签库与 Thymeleaf 和 Spring Boot 结合使用?

    我用 Spring MVC JSP 和 Tyles 创建了一个自定义标签库 所以我有几个 tagx文件 在新项目中 我决定尝试 Spring Boot 和 Thymeleaf 但我想保留我的自定义库 那么您是否可以使用 thymeleaf
  • mysql复合索引是否会使其他一些索引完全冗余?

    如果我在 a b 上有一个复合索引 我知道仅与 a 相关的查询仍将使用复合索引 但与 b 相关的查询不会 我的问题是 如果我有 a b 索引 是否有任何正当理由在 a 上建立单列索引 我读到的内容对于 a b 索引是否完全替代 a 或者仅仅
  • 将重叠间隔与 lubridate 结合起来

    我希望组合润滑间隔 以便如果它们重叠 则从内部第一个时间中取出最小值 并从内部最后一个时间中取出最大值 并汇总以创建一个跨越整个周期的新间隔 这是一个代表 library lubridate warn conflicts FALSE lib
  • Docker“共享依赖关系”

    在阅读 Docker 的同时 我多次停下来 因为 Docker 容器不仅共享主机内核 而且如果可能的话 它们还共享通用的二进制文件和库 我从中了解到的是 如果我在同一台主机上运行相同的 docker 映像两次 并且该映像使用一些文件 x y