gpt4 book ai didi

docker - 容器中的共享库

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

对于两个进程 A 和 B,它们都使用库 libc.so,libc.so 只加载到内存中一次。这是 A 和 B 都运行在同一主机和同一 rootfs 上的正常情况。

对于容器,如果A和B运行在不同的容器中,A和B是否共享同一个内存区域?

例如

图像A

--libc.so

--programA

图片B

--libc.so

--程序B

我们使用 chroot 在不同的 rootfs 中运行 A 和 B。这两个 libc.so 是一样的。 libc.so 会被加载到内存中两次吗?

最佳答案

实际上,使用共享库 libc.so 可以的进程 A 和 B 共享相同的内存。有点不直观,这取决于您使用的 docker 存储驱动程序。如果您使用的存储驱动程序可以将共享库文件公开为来自同一个设备/inode,当它们驻留在同一个 docker 层时,那么它们将共享相同的虚拟内存缓存页面。当使用 aufs、overlay 或 overlay2 存储驱动程序时,您的共享库将共享内存,但在使用任何其他存储驱动程序时它们不会。

我不确定为什么 Docker 文档中没有更明确地说明这个细节。或者也许是,但我只是错过了它。如果您尝试运行密集容器,这似乎是一个关键的区别。

关于docker - 容器中的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35863608/

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