我正在创建两个应用程序,主控和从属,它们通过 d-bus 进行通信。在同一主机上运行时,我的应用程序按预期工作。
现在我想将从属应用程序移动到 docker 容器,并且在主机和容器之间共享 d-bus 会话时遇到问题。这是我的 Dockerfile:
来自 i386/ubuntu:16.04 音量/运行/用户/1000/ ENV DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus 运行 apt-get 更新 运行 apt-get upgrade -y 运行 apt-get install -y dbus #RUN apt-get install -y libnotify-bin #RUN apt-get install -y dbus-x11 运行 adduser -u 1000 myuser #COPY dbus.conf /etc/dbus-1/session.d/ 用户 1000:1000 入口点 ["dbus-daemon", "--session", "--print-address"]
/run/user/1000/bus 是我的 DBUS_SESSION_BUS_ADDRESS 变量的值。
我用
docker create --mount type=bind,source=/run/user/1000/bus,target=/run/user/1000/bus mycontainer
/run/user/1000/bus 在容器内是可见的,但是当容器启动时它会打印地址
unix:abstract=/tmp/dbus-iXrYzptYOX,guid=78a790f0f6a4387a39ac3d505da478a3我的应用程序无法通信。
如果我将我的 dbus.conf 添加到容器中的 /etc/dbus-1/session.d/ 并覆盖
<listen>unix:path=/run/user/1000/bus</listen>
我收到消息“无法启动消息总线:无法绑定套接字“/run/user/1000/bus”:地址已在使用中”
我不确定我是否应该在 docker 中启动 dbus-daemon。
我怎样才能使这项工作?