我的应用程序在以下帮助下执行某些任务NFS-甘尼萨. 在此期间,它通过 DBus 与 NFS-Ganesha 对话。
但是现在我计划在 Docker 容器上运行 NFS-Ganesha。(我的应用程序仍将在主机上正常运行,而不是在 docker 容器上。)
但问题是,我必须做出一些安排,以便我在主机上的应用程序&Docker 容器上的 NFS-Ganesha可以互相交谈数据总线。
我不知道需要进行哪些配置更改。
如果您对此有任何答案或建议,我将不胜感激。
答案1
如果在中运行容器特权模式是一个选项(请注意,通常不鼓励这样做,请参阅下文),您可以将主机的 D-Bus 套接字挂载到容器中:
docker run --privileged \
-v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket \
--name your-container
如果主机和容器都是 Ubuntu,这些路径都适用。在其他系统上它们可能会有所不同。
安全注意事项
正如我上面所说,通常不鼓励以特权模式运行容器,因为它会绕过所有隔离功能:
Docker 的 --privileged 标志实际上禁用了所有隔离功能。容器可能应用了不同的 PID 和 MNT 命名空间以及 cgroups 配置文件。但是,如果在 Docker 容器上运行 --privileged 标志,用户(以及无意中攻击者)就可以访问连接到主机的硬盘。