Общая память с контейнерами Docker (версия Docker 1.4.1)
У меня есть 1 процесс, который пишет в определенный раздел разделяемой памяти (например, "/ сокол") в контейнере Docker.
Изображение докера: dockersharedmemory/shmclient
У меня есть другой процесс, который первоначально создает и читает один и тот же раздел разделяемой памяти (то есть "/ сокол") каждую секунду в другом контейнере докера.
Изображение докера: 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 commit (клиент): 5bc2ff8/1.4.1
OS / Arch (клиент): linux/amd64
Версия сервера: 1.4.1
Версия API сервера: 1.16
Версия Go (сервер): go1.3.3
Git commit (сервер): 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 ответ
Вам все еще нужен -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, не так ли?