Общая память с контейнерами 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/shmserverdocker 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, не так ли?

Другие вопросы по тегам