1. ホーム
  2. docker

[解決済み] dockerコンテナ間でメモリを共有することは可能ですか?

2022-03-04 17:25:38

質問

私は異なるプロセスを持つアプリケーションに取り組んでおり、より高い分離を達成するためにそれらのプロセスを含むように依頼されています。

問題は、データを交換するために、プロセスが1つのハイパーバイザーとメモリを共有していることです(古典的な共有バッファを使用しています)。このソリューションは、パフォーマンス要件と、ユーザースペースで実行されるため、ユーザースペースとカーネルスペースの間でコンテンツが切り替わらないという理由から実装されました。

私が間違っていなければ、単一の IPC ネームスペース内で複数の docker コンテナを実行することはできませんが、単一の docker コンテナが異なる IPC ネームスペースに属することが可能かどうかはわかりません。

他の解決策も歓迎します。ただ、パフォーマンスが要件であることを念頭においてください、よろしくお願いします。

解決方法は?

その --ipc=host--ipc=container:id オプションが追加され、Docker の create run コマンドを使用して、IPCリソースを共有することができます。

--ipc=""  : Set the IPC mode for the container,
             'container:<name|id>': reuses another container's IPC namespace
             'host': use the host's IPC namespace inside the container

ホストとのIPC

docker run --ipc=host <image>

他のコンテナとのIPC

docker run --ipc=container:<id> <image>

他のコンテナとのIPCには shareable オプションを設定します (dockerd が IPC をデフォルトで設定する場合)。 private )

docker run --ipc=shareable <image>