systemctl не удалось соединиться с шиной - докер ubuntu:16.04 контейнер

Я пытаюсь использовать systemctl команда в a ubuntu:16.04 контейнер докера. Я выполняю следующую команду...

systemctl status ssh

Однако я получаю ошибку...

Failed to connect to bus: No such file or directory

Почему это не работает? Это связано с Ubuntu, работающей в контейнере докера? Как я могу добраться systemctl работать правильно?

73
задан 17 August 2016 в 16:19

8 ответов

Я предполагаю, что Вы запускаете свой контейнер докера с чего-то как

docker run -t -i ubuntu:16.04 /bin/bash

, проблема теперь состоит в том, что Ваш PID 1 процесса init /bin/bash, не systemd. Подтвердите с ps aux.

В дополнение к этому Вы отсутствуете, dbus с был бы способом связаться. Это - то, куда Ваше сообщение об ошибке прибывает из. Но поскольку Ваш PID 1 не является systemd, он не поможет установить dbus.

Лучший должен был бы заново продумать способ, которым Вы планируете использовать докера. Не полагайтесь на systemd как на диспетчер процессов, но имейте контейнер докера, запускает Ваше требуемое приложение на переднем плане.

50
ответ дан 22 November 2019 в 23:22

Другие сообщили о подобной проблеме. Запустите терминал и тип:

$ env

Вы видите переменную среды как это?

XDG_RUNTIME_DIR=/run/user/`id -u`

, Где id -u включается в обратные галочки не одинарные кавычки. Этой переменной обычно дают иное толкование в число 1000 для обычных пользователей и 0 для суперпользователя (sudo).

, Если переменная среды XDG_RUNTIME_DIR не существует, необходимо создать ее. Полное обсуждение находится в панель запуска systemd ответы .

11
ответ дан 22 November 2019 в 23:22

Вы не можете работать systemd, который является реализацией по умолчанию init на 16,04. Если Вы обновили от 14,04, Вы, скорее всего, все еще работаете выскочка , и результат выполнения , команда systemctl является выводом, который Вы получили.

См. мой ответ в systemctl: команда, не найденная 16,04 серверами для больше.

1
ответ дан 22 November 2019 в 23:22

Только начните dbus услуга:

/etc/init.d/dbus start
2
ответ дан 22 November 2019 в 23:22

Внутренний контейнер докера, я думаю, что можно обновить-rc.d, если Вы все еще боретесь с systemd. Я попробовал обновлением-rd.c, и оно работает.

0
ответ дан 22 November 2019 в 23:22

Я получал ту же самую ошибку, и затем я выполняю ее успешно с sudo

sudo systemctl status ssh
0
ответ дан 22 November 2019 в 23:22

Попробуйте это:

docker run -ti -d --privileged=true images_docker  "/sbin/init"

или

docker run -ti -d --privileged=true images_docker

будет тот же результат.

Здесь я добираюсь из документа Докера:

По умолчанию контейнеры Докера “непривилегированны” и не могут, например, выполнить демона Докера в контейнере Докера. Это вызвано тем, что по умолчанию контейнеру не позволяют получить доступ ни к каким устройствам, но “привилегированному” контейнеру предоставляют доступ ко всем устройствам (см. документацию относительно cgroups устройств).

Когда оператор выполнит выполненного докера - привилегированный, Докер включит доступ ко всем устройствам на хосте, а также установит некоторую конфигурацию в AppArmor или SELinux для разрешения контейнера, почти всего одинакового доступ к хосту как процессы, работающие вне контейнеров на хосте. Дополнительная информация о выполнении с - привилегированный доступна на Блоге Докера.

3
ответ дан 22 November 2019 в 23:22

Если Вы получаете эту ошибку в Windows Subsystem для Linux (WSL), я нашел, что это - потому что Докер не поддерживается. Это происходит из-за отсутствия cgroups и других предпосылок.

6
ответ дан 22 November 2019 в 23:22

Другие вопросы по тегам:

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