带有Docker容器的共享内存(Docker 1.4.1版)



我有一个进程,它会写入docker容器中共享内存的特定部分(即"/fargon")。

Docker镜像:dockersharedmemory/shmclient

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

Docker镜像:dockersharedmemory/shmserver

当我使用以下命令运行两个容器时,我能够分别在每个容器中读写:

docker run -d -v /dev:/dev dockersharedmemory/shmserver

docker run -d -v /dev:/dev dockersharedmemory/shmclient

当我根据文档使用"--ipc"选项时,我无法使其工作:

docker run -d --ipc=host dockersharedmemory/shmserver

docker run -d --ipc=host dockersharedmemory/shmclient

两个

docker run -d dockersharedmemory/shmserver

drunk_feynman

docker run -d --ipc=container:drunk_feynman dockersharedmemory/shmclient

happy_fermi

客户端版本:1.4.1
客户端API版本:1.16
Go版本(客户端):go1.3.3
Git提交(客户端):5bc2ff8/1.4.1
OS/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所在的地方,不是吗?

相关内容

最新更新