在Docker容器中运行dbus-daemon

oOn*_*nez 5 dbus unix-socket docker

我正在尝试使用内部运行的自定义D-Bus总线创建一个Docker容器.

我配置我的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
Run Code Online (Sandbox Code Playgroud)

构建之后,套接字被创建但它被标记为"文件",而不是"套接字",我不能将它用作总线...

-rwxrwxrwx  1 root root    0 Mar 20 07:25 myCustomDbus.sock
Run Code Online (Sandbox Code Playgroud)

如果我删除此文件并dbus-daemon在终端中再次运行该命令,则成功创建套接字:

srwxrwxrwx  1 root root    0 Mar 20 07:35 myCustomDbus.sock
Run Code Online (Sandbox Code Playgroud)

我不确定它是D-Bus问题还是Docker问题.

oOn*_*nez 5

您应该使用"ENTRYPOINT"来运行启动脚本,而不是使用"RUN"命令.

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 Code Online (Sandbox Code Playgroud)

并运行.sh:

#!/bin/bash
dbus-daemon --config-file=/etc/dbus-1/myCustomDbus.conf --print-address
Run Code Online (Sandbox Code Playgroud)