Skip to main content
 首页 » 编程设计

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

2024年11月01日26小虾米

我有 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 所在的地方吗?