我在一个具有不同进程的应用程序上工作,并被要求包含那些进程以实现更多隔离。
问题在于,进程与单个“管理程序”进程共享内存以便交换数据(它们使用经典的共享缓冲区)。该解决方案是为满足性能要求而实施的,因为它在用户空间中运行,因此在用户空间和内核空间之间没有内容切换。
如果我没看错,则不可能在单个IPC名称空间内运行多个docker容器,但是我不知道单个docker容器是否可能属于不同的IPC名称空间,这可以解决我的问题。
欢迎使用其他解决方案,请记住性能是一项要求,在此先感谢您。
此后,--ipc=host和--ipc=container:id选项已添加到Docker create和run命令中以共享IPC资源。
--ipc=host
--ipc=container:id
create
run
--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="" : 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>