dockerdbusunix-socket

Run dbus-daemon inside Docker container


I am trying to create a Docker container with a custom D-Bus bus running inside.

I configured my Dockerfile as follow:

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

After building, the socket is created but it is flagged as "file", not as "socket", and I can not use it as a bus...

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

If I remove this file and run the dbus-daemon command again in a terminal, the socket is successfully created :

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

I am not sure if it is a D-Bus problem or a docker one.


Solution

  • Instead of using the "RUN" command, you should use the "ENTRYPOINT" one to run a startup script.

    The Dockerfile should look like that :

    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"]
    

    And run.sh :

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