通过 Docker 与主机的 Dbus 通信

通过 Docker 与主机的 Dbus 通信

我的应用程序在以下帮助下执行某些任务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 标志,用户(以及无意中攻击者)就可以访问连接到主机的硬盘。

(来源:https://blog.trendmicro.com/trendlabs-security-intelligence/why-running-a-privileged-container-in-docker-is-a-bad-idea/

相关内容