docker - 与 Docker 容器共享内存(Docker 版本 1.4.1)

标签 docker ipc shared-memory

我有 1 个进程写入 docker 容器中共享内存的特定部分(即 "/falcon")。

Docker 镜像:dockersharedmemory/shmclient

我有另一个进程,它最初在另一个 docker 容器中每秒创建和读取共享内存的同一部分(即 "/falcon")。

Docker 镜像:dockersharedmemory/shmserver

当我使用以下命令运行两个容器时,我可以分别在每个容器中读写:
docker run -d -v /dev:/dev dockersharedmemory/shmserverdocker run -d -v /dev:/dev dockersharedmemory/shmclient
当我使用 "--ipc"每个选项documentation我无法让它工作:
docker run -d --ipc=host dockersharedmemory/shmserverdocker run -d --ipc=host dockersharedmemory/shmclient
两者都不
docker run -d dockersharedmemory/shmserverdrunk_feynmandocker run -d --ipc=container:drunk_feynman dockersharedmemory/shmclienthappy_fermi
客户端版本:1.4.1
客户端 API 版本:1.16
Go 版本(客户端):go1.3.3
Git 提交(客户端):5bc2ff8/1.4.1
操作系统/Arch(客户端):linux/amd64
服务器版本:1.4.1
服务器 API 版本:1.16
Go 版本(服务器):go1.3.3
Git 提交(服务器):5bc2ff8/1.4.1

我现在有一个工作示例,其中包含主机上的命令组合,方法是使用卷和 ipc 的组合在容器中打出大洞:docker run -d -v /dev/shm:/dev/shm --ipc=host dockersharedmemory/shmserverdocker run -d -v /dev/shm:/dev/shm --ipc=host dockersharedmemory/shmclient

最佳答案

你仍然需要 -v/dev:/dev
如果你这样做会发生什么

docker run -d -v /dev:/dev --ipc=host dockersharedmemory/shmserver

docker run -d -v /dev:/dev --ipc=host dockersharedmemory/shmclient

如果你不挂载 bind/dev/那么容器就看不到/dev/里面有什么,这不是你的 IPC/shm 所在的地方吗?

关于docker - 与 Docker 容器共享内存(Docker 版本 1.4.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29173193/

相关文章:

hadoop - yarn hadoop 2.4.0 : info message: ipc. 客户端重试连接到服务器

c# - .NET 程序最快的 IPC 方法是什么?

c - 如何使用 GPGPU 高效地执行加载和位操作?

ruby-on-rails - 无法打开与本地主机 :9200 - Rails on Docker 的 TCP 连接

azure - 如何在 Jenkins Docker 容器中挂载 Azure 应用服务存储?

multithreading - 如何从clojure中的子进程执行非阻塞读取标准输出?

c++ - 尝试使用 CreateFileMapping 和自定义 DACL 创建只读共享内存区域在 OpenFileMapping 中失败

c - 在 Solaris 中的父进程和子进程之间共享内存(在 C 中)

带有 rsync 的 docker-machine

selenium - 在 Docker 中暴露端口不起作用