当前位置: 首页 > 面试题库 >

是否可以在Docker容器之间共享内存?

白子默
2023-03-14
问题内容

我在一个具有不同进程的应用程序上工作,并被要求包含那些进程以实现更多隔离。

问题在于,进程与单个“管理程序”进程共享内存以便交换数据(它们使用经典的共享缓冲区)。该解决方案是为满足性能要求而实施的,因为它在用户空间中运行,因此在用户空间和内核空间之间没有内容切换。

如果我没看错,则不可能在单个IPC名称空间内运行多个docker容器,但是我不知道单个docker容器是否可能属于不同的IPC名称空间,这可以解决我的问题。

欢迎使用其他解决方案,请记住性能是一项要求,在此先感谢您。


问题答案:

此后,--ipc=host--ipc=container:id选项已添加到Docker
createrun命令中以共享IPC资源。

--ipc=""  : Set the IPC mode for the container,
             'container:<name|id>': reuses another container's IPC

namespace
‘host’: use the host’s IPC namespace inside the container


IPC与主机

docker run --ipc=host <image>

IPC与另一个容器

docker run --ipc=container:<id> <image>


 类似资料:
  • 问题内容: 嗨,我正在使用Docker部署一些服务,在这里我想在不同的Docker容器之间共享Docker卷。 假设我有一个Docker容器A在/ data挂载了一个卷。这是A的Dockerfile 据我了解,这会将一个卷附加到容器,但不会将主机目录装载到该容器。因此,该卷内的数据仍位于容器A内。 我有另一个提供ftp服务的容器B。它访问卷/ public下的数据。B的Dockerfile是 现在

  • 我正在使用Docker部署一些服务,我想在不同的容器之间共享Docker卷。 假设我有一个Docker容器a,它在/data处挂载了一个卷。下面是它的DockerFile: 根据我的理解,这会将卷附加到容器,但不会将主机目录挂载到容器。所以这个卷里面的数据仍然在容器A里面。

  • 问题内容: 我在同一页面上有两个不同的应用程序。 我可以通过服务(或其他方式)在这两个应用之间共享数据吗? 还是不可能? (我怀疑这是不可能通过常规的角度机构实现的)-但我认为仍然值得提出… 可以使用window变量完成此操作-但我要避免这样做。 谢谢! 问题答案: 我最终以以下方式解决了该问题: 我必须承认这一解决方案并不理想,但这是我找到的最干净的解决方案。

  • 问题内容: 我正在使用docker-compose和v3。我正在尝试在Docker中挂载卷: 我想将此作为卷,然后从多个容器中引用该卷。的卷配置参考仅示出了作为命名体积,用没有值,因此它不会像以上。 这给了我: 错误:在文件“ ./docker-compose.yml”中,卷“ app-volume”必须是映射而不是字符串。 显然,我知道我需要更改键/值对,但是我不确定 如何 更改它,以便可以在服

  • 我想把它作为一个卷,然后从多个容器中引用该卷。卷配置引用只将显示为命名卷,没有值,因此看起来不像上面那样。 这给了我: 错误:在文件“./docker-compose.yml”中,卷“app-volume”必须是映射,而不是字符串。 显然,我知道我需要更改键/值对,但我不确定如何更改它,以便在服务之间共享卷。 我还签出了,但这实际上只允许从其他容器继承。我看到有人在另一个包含他们想要的映射的容器上

  • 问题内容: 我有1个进程写入docker容器中共享内存的特定部分(即“ / falcon”)。 Docker映像:dockersharedmemory / shmclient 我有另一个进程,它最初在另一个Docker容器中每秒创建和读取共享内存的同一部分(即“ / falcon”)。 Docker映像:dockersharedmemory / shmserver 使用以下命令运行两个容器时,我可