Настройте док-контейнер для связи с хостом по d-bus

Если ваши системы работают network-manager, вы можете взглянуть на nmtui. В производных от RedHat имя пакета — NetworkManager-tui.

Это не совсем то, что вам нужно, но вы можете попробовать. Также вы можете что-нибудь придумать с помощьюdialogили ncurses.

0
14.10.2019, 16:46
2 ответа

Я нашел решение. Вот мой Dockerfile:

FROM i386/ubuntu:16.04

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y dbus

COPY dbus.conf /etc/dbus-1/session.d/

ENTRYPOINT ["dbus-run-session", "slaveApp"]

И мой dbus.conf:

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
    "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">

<busconfig>
    <listen>tcp:host=localhost,bind=*,port=6667,family=ipv4</listen>
    <listen>unix:tmpdir=/tmp</listen>
    <auth>ANONYMOUS</auth>
    <allow_anonymous/>
</busconfig>

И установите переменную адреса на хосте:

export DBUS_SESSION_BUS_ADDRESS=tcp:host=${containerIp},port=6667,family=ipv4

В моем главном приложении я инициирую соединение (Я использовал Qt):

 QDBusConnection::connectToBus("tcp:host=${containerIp},port=6667", "qt_default_session_bus"); 

Главное приложение теперь может отправлять сообщения подчиненному приложению. Однако я не пытался отправлять сообщения от ведомого к ведущему.

Ответ взят из этого поста :https://stackoverflow.com/a/45487266/6509266

5
28.01.2020, 03:11

Мне удалось получить контейнерную установку Spotify для захвата хоста DBus со следующим (на Ubuntu)

pkexec systemd-nspawn \
  --setenv=DISPLAY=unix$DISPLAY \
  --setenv=PULSE_SERVER=unix:/run/user/1000/pulse/native \
  --setenv=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus \
  --bind-ro /tmp/.X11-unix \
  --bind /run/user/1000 \
  --bind-ro /run/user/1000/bus \
  --bind /dev/snd \
  -u spotify \
  -M spotify \
  spotify

Таким образом, похоже, ключ здесь в том, чтобы убедиться, что вы привязали -хост DBUS_SESSION_BUS_ADDRESSк контейнеру и экспортировали туда ту же самую переменную с тем же значением. У меня также установлен DBus в контейнере, но, учитывая, что я не загружаю образ, а просто запускаю Spotify, я полагаю, что это не требуется.

0
03.02.2021, 14:59

Теги

Похожие вопросы