44

私はさまざまなプロセスを持つアプリケーションで作業しており、より多くの分離を実現するためにそれらのプロセスを含めるように求められています。

問題は、データを交換するためにプロセスが単一の「ハイパーバイザー」プロセスとメモリを共有することです (従来の共有バッファーを使用します)。このソリューションは、パフォーマンス要件のために実装されました。また、ユーザー空間で実行されているため、ユーザー空間とカーネル空間の間でコンテンツを切り替えることはありません。

私が間違っていなければ、単一の IPC 名前空間内で複数の Docker コンテナーを実行することはできませんが、単一の Docker コンテナーが異なる IPC 名前空間に属している可能性があるかどうかはわかりません。これで問題が解決する可能性があります。

他のソリューションも歓迎します。ただし、パフォーマンスが要件であることを覚えておいてください。よろしくお願いします。

4

4 に答える 4

45

その後--ipc=host--ipc=container:id IPC リソースを共有するためのオプションが Dockercreaterunコマンドに追加されました。

--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>
于 2016-06-09T04:05:43.980 に答える