Я пытаюсь использовать systemctl
команду в ubuntu:16.04
контейнере Docker. Я запускаю следующую команду ...
systemctl status ssh
Однако я получаю ошибку ...
Failed to connect to bus: No such file or directory
Почему это не работает? Это связано с тем, что Ubuntu работает в Docker-контейнере? Как мне systemctl
правильно работать?
service ssh start
Ответы:
Я полагаю, вы начинаете свой док-контейнер с чем-то вроде
Проблема в том, что PID 1 вашего процесса инициализации
/bin/bash
, а не systemd. Подтвердите с помощьюps aux
.В дополнение к этому вы пропустите dbus с будет способ общения. Вот откуда приходит ваше сообщение об ошибке. Но так как ваш PID 1 не systemd, он не поможет установить dbus.
Лучше всего было бы переосмыслить способ, которым вы планируете использовать докер. Не полагайтесь на systemd в качестве диспетчера процессов, но пусть докер-контейнер запускает желаемое приложение на переднем плане.
источник
docker log
./sbin/init
потому что процесс PID = 1. Добавление,--privileged=true
предложенное @sonjaya sonjaya ниже, решило проблему.Другие сообщили о подобной проблеме. Запустите терминал и введите:
Видите ли вы переменную среды, как это?
Где
id -u
заключено в кавычки, а не одинарные кавычки. Эта переменная повторно интерпретируется в число, обычно1000
для обычных пользователей и0
для суперпользователя (sudo).Если переменная окружения
XDG_RUNTIME_DIR
не существует, вам нужно ее создать. Полное обсуждение находится в панели ответов systemd .источник
root
, поэтому я использовал переменнуюXDG_RUNTIME_DIR=/run/root/0
без успеха. Затем я проверил папку/run
и обнаружил, что нет подпапки/run/root
. Могу ли я получить более подробное сообщение об ошибке? Я посмотрел,systemctl --help
но не смог найти подробные сообщения об ошибках.PID 1
обычноsystemd
заменяется в контейнере Docker контейнером Entrypoint .Если вы получаете эту ошибку в подсистеме Windows для Linux (WSL), я обнаружил, что это потому, что Docker не поддерживается. Это связано с отсутствием cgroups и других предпосылок.
источник
Попробуй это:
или же
будет такой же результат.
Здесь я получаю из докера :
источник
Просто запустите
dbus
сервис:источник
Возможно, вы не используете systemd , которая является реализацией init по умолчанию 16.04. Если вы выполнили обновление с 14.04, скорее всего, вы все еще используете upstart , и результатом выполнения команды systemctl будет полученный вами результат.
Смотрите мой ответ на systemctl: команда не найдена 16.04 сервер для получения дополнительной информации.
источник
Я думаю, что внутри docker-контейнера вы можете обновить -rc.d, если вы все еще боретесь с systemd. Я пытался с update-rd.c, и он работает.
источник
Я получаю точно такую же ошибку, а затем успешно запускаю ее с
sudo
источник
sudo
для этого. Похоже на совпадение. Можете ли вы перепроверить?saif@sr-server:~$ systemctl status ssh
Failed to connect to bus: No such file or directory
saif@sr-server:~$ sudo systemctl status ssh
[sudo] password for saif:
● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-01-19 23:38:14 PKT; 4min 4s ago Main PID: 18222 (sshd) Tasks: 15 Memory: 32.7M CPU: 488ms