与Docker容器共享内存(docker版本1.4.1) [英] Shared Memory with Docker containers (docker version 1.4.1)
问题描述
我有一个进程在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
/ p>
当我使用 - ipc选项/#ipc-settingsrel =nofollow>文档我无法让它工作:
docker run - d --ipc = host dockersharedmemor y / 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
转到版本(客户端):go1.3.3
Git commit(client):5bc2ff8 / 1.4.1
操作系统/ Arch(客户端):linux / amd64
服务器版本:1.4.1
服务器API版本:1.16
转到版本(服务器):go1.3.3
Git提交(服务器):5bc2ff8 / 1.4.1
我现在有一个工作示例,结合使用主机上的命令,通过在容器中打出巨大的空间,并结合卷和ipc:
docker运行-d -v / dev / shm:/ dev / shm --ipc = host dockersharedmemory / shmserver
docker 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是不是在哪里?
I have 1 process that writes to a specific section of shared memory (i.e. "/falcon" )in a docker container.
Docker image: dockersharedmemory/shmclient
I have another process that initially creates and reads the same section of shared memory(i.e. "/falcon" ) every second in another docker container.
Docker image: dockersharedmemory/shmserver
When I run the two containers using the following commands I am able to read and write in each container respectfully:
docker run -d -v /dev:/dev dockersharedmemory/shmserver
docker run -d -v /dev:/dev dockersharedmemory/shmclient
When I use the "--ipc" option per documentation i can't get it to work:
docker run -d --ipc=host dockersharedmemory/shmserver
docker run -d --ipc=host dockersharedmemory/shmclient
neither
docker run -d dockersharedmemory/shmserver
drunk_feynman
docker run -d --ipc=container:drunk_feynman dockersharedmemory/shmclient
happy_fermi
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8/1.4.1
OS/Arch (client): linux/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8/1.4.1
I have a working example now with a combination of the commands on the host by punching huge holes in the container with a combination of volumes and 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
You still need -v /dev:/dev what happens if you do
docker run -d -v /dev:/dev --ipc=host dockersharedmemory/shmserver
docker run -d -v /dev:/dev --ipc=host dockersharedmemory/shmclient
If you dont mount bind /dev/ then the container cannot see whats inside /dev/ which is where your IPC/shm resides isnt it ?
这篇关于与Docker容器共享内存(docker版本1.4.1)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!