Распределение памяти между контейнерами Docker: «--ipc = host» против «--ipc = shareable» - PullRequest
1 голос
/ 04 июля 2019

Я настраиваю два док-контейнера - один в качестве сервера для хранения данных в памяти, а другой в качестве клиента для доступа к этим данным. Чтобы сделать это, я считаю, что мне нужно использовать флаг --ipc для совместного использования памяти между контейнерами. Документация Docker достаточно хорошо объясняет флаг --ipc. Что имеет смысл для меня по документации работает:

docker run -d --ipc=shareable data-server
docker run -d --ipc=container:data-server data-client

Но все прочитанные мной вопросы о Stackoverflow ( 1 , 2 , 3 , 4 ) связывают оба контейнера напрямую на хост:

docker run -d --ipc=host data-server
docker run -d --ipc=host data-client

Что больше подходит для этого варианта использования? Если ipc=host лучше, когда вы будете использовать ipc=shareable?

1 Ответ

1 голос
/ 04 июля 2019

С Документ :

- ipc = "MODE": установить режим IPC для контейнера

«shareable»: Собственное частное пространство имен IPC с возможностью делиться им с другими контейнерами.

"host": использовать пространство имен IPC хост-системы.

Разница между shareable & host заключается только в том, может ли хост докера посещать общую память.

  • Пространство имен IPC (POSIX / SysV IPC) обеспечивает разделение именованных сегментов общей памяти, семафоров и очередей сообщений.

    Так что нет никакой разницы в использовании между контейнерами или между хостами, нет никакой разницы в производительности для этих двух режимов.

  • Совместно используемая память обычно используется базами данных и специально созданными (обычно C / OpenMPI, C ++ / с использованием библиотек boost) высокопроизводительными приложениями для научных вычислений и финансовых услуг.

    Так что это относится к безопасности этих сервисов, если использовать host, хост также сможет посещать эти сервисы, и, как вы знаете, докер хост может быть открытым для внешнего, который может встретиться хакерская атака. При sharedable база данных доступна только внутри контейнеров, что может уменьшить утечку данных, если хост захвачен. Но если вам действительно нужно сотрудничать с хостом, поэтому все равно можете использовать host, я думаю, именно поэтому host здесь. И когда люди отвечают на вопросы, иногда нелегко полностью понять среду и требования спрашивающего, поэтому, я думаю, host - более универсальный способ использования.

...