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

时间:2015-03-20 18:13:25

标签: docker ipc shared-memory

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

Docker镜像:dockersharedmemory / shmclient

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

Docker镜像:dockersharedmemory / shmserver

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

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

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

当我按documentation使用" - 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 version(client):go1.3.3
Git commit(client):5bc2ff8 / 1.4.1
OS / Arch(客户端):linux / amd64
服务器版本:1.4.1
服务器API版本:1.16
转版本(服务器):go1.3.3
Git commit(server):5bc2ff8 / 1.4.1

我现在有了一个工作示例,它通过在容器中使用卷和ipc的组合在容器中打出巨大的孔来组合主机上的命令: docker run -d -v /dev/shm:/dev/shm --ipc=host dockersharedmemory/shmserver docker run -d -v /dev/shm:/dev/shm --ipc=host dockersharedmemory/shmclient

1 个答案:

答案 0 :(得分:2)

你仍然需要-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 /那么容器看不到你的IPC / shm所在的/ dev /里面是什么呢?