在Docker容器中运行dbus-daemon

我正在尝试创build一个Docker容器,里面运行着一个自定义的D-Bus总线。

我configuration我的Dockerfile如下:

FROM ubuntu:16.04 COPY myCustomDbus.conf /etc/dbus-1/ RUN apt-get update && apt-get install -y dbus RUN dbus-daemon --config-file=/etc/dbus-1/myCustomDbus.conf 

build立后,套接字被创build,但它被标记为“文件”,而不是“套接字” ,我不能用它作为总线…

 -rwxrwxrwx 1 root root 0 Mar 20 07:25 myCustomDbus.sock 

如果我删除这个文件并在terminal中再次运行dbus-daemon命令,那么成功创build套接字:

 srwxrwxrwx 1 root root 0 Mar 20 07:35 myCustomDbus.sock 

我不确定这是D-Bus问题还是docker问题。

你应该使用启动脚本。 只有当容器被创build然后停止时,“运行”命令才被执行。

不要使用“RUN”命令,而应该使用“ENTRYPOINT”命令来运行启动脚本。

Dockerfile应该是这样的:

 FROM ubuntu:14.04 COPY myCustomDbus.conf /etc/dbus-1/ COPY run.sh /etc/init/ RUN apt-get update && apt-get install -y dbus ENTRYPOINT ["/etc/init/run.sh"] 

和run.sh:

 #!/bin/bash dbus-daemon --config-file=/etc/dbus-1/myCustomDbus.conf --print-address