Запустите dbus-daemon внутри контейнера Docker

Я пытаюсь создать контейнер Docker с собственной шиной D-Bus, работающей внутри.

Я настроил свой 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

После создания сокет создается, но помечается как "файл", не как "розетка", и я не могу использовать его как шину...

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

Если я удалю этот файл и снова запущу команду dbus-daemon в терминале, сокет будет успешно создан:

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

Я не уверен, проблема ли это в D-Bus или в докере.


person oOnez    schedule 20.03.2017    source источник
comment
Не могли бы вы найти решение для этого?   -  person Vivek Shankar    schedule 17.07.2017


Ответы (3)


Вместо использования команды «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"]

И запустить.ш :

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

Вы должны использовать сценарий запуска. Команда «запустить» выполняется только тогда, когда контейнер создан, а затем остановлен.

person sdhd    schedule 08.07.2017

мой run.sh:

if ! pgrep -x "dbus-daemon" > /dev/null
then
    # export DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address | cut -d, -f1)

    # or:
    dbus-daemon --config-file=/usr/share/dbus-1/system.conf
    # and put in Dockerfile:
    # ENV DBUS_SESSION_BUS_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
else
    echo "dbus-daemon already running"
fi

if ! pgrep -x "/usr/lib/upower/upowerd" > /dev/null
then
    /usr/lib/upower/upowerd &
else
    echo "upowerd already running"
fi

затем хром работает с

--use-gl=свифтшейдер

без ошибок

person Shimon Doodkin    schedule 26.07.2021