Próbuję użyć systemctl
polecenia w ubuntu:16.04
kontenerze dokowanym. Korzystam z następującego polecenia ...
systemctl status ssh
Jednak pojawia się błąd ...
Failed to connect to bus: No such file or directory
Dlaczego to nie działa? Czy ma to związek z uruchomieniem Ubuntu w kontenerze dokowanym? Jak mogę systemctl
prawidłowo działać?
service ssh start
Odpowiedzi:
Zakładam, że zaczynasz swój kontener dokerów czymś takim
Problem polega teraz na tym, że proces inicjacji PID 1
/bin/bash
nie jest systemowy. Potwierdź za pomocąps aux
.Oprócz tego brakuje ci dbus, który byłby sposobem na komunikację. Stąd pochodzi komunikat o błędzie. Ale ponieważ twój PID 1 nie jest systemowy, nie pomoże zainstalować dbus.
Najlepiej byłoby przemyśleć sposób, w jaki planujesz używać dokera. Nie polegaj na systemd jako menedżerze procesów, ale pozwól kontenerowi dokera uruchomić żądaną aplikację na pierwszym planie.
źródło
docker log
./sbin/init
ponieważ był to proces PID = 1. Dodanie--privileged=true
zgodnie z sugestią @sonjaya sonjaya poniżej rozwiązało problem.Inni zgłosili podobny problem. Uruchom terminal i wpisz:
Czy widzisz taką zmienną środowiskową?
Gdzie
id -u
jest ujęte w backtyki, a nie pojedyncze cytaty. Ta zmienna jest ponownie interpretowana na liczbę zwykle1000
dla zwykłych użytkowników i0
superużytkowników (sudo).Jeśli zmienna środowiskowa
XDG_RUNTIME_DIR
nie istnieje, musisz ją utworzyć. Pełna dyskusja znajduje się w odpowiedziach systemowych startera .źródło
root
, więc użyłem zmiennejXDG_RUNTIME_DIR=/run/root/0
bez powodzenia. Następnie sprawdziłem folder/run
i stwierdziłem, że nie ma podfolderu/run/root
. Czy w każdym razie mogę uzyskać bardziej szczegółowy komunikat o błędzie? Spojrzałem na,systemctl --help
ale nie widziałem sposobu na uzyskanie szczegółowych komunikatów o błędach.PID 1
zwyklesystemd
zastępuje się go w kontenerze Docker z punktem wejścia kontenera .Jeśli pojawia się ten błąd w podsystemie Windows dla systemu Linux (WSL), stwierdziłem, że jest to spowodowane tym, że Docker nie jest obsługiwany. Wynika to z braku grup i innych wymagań wstępnych.
źródło
Spróbuj tego:
lub
będzie taki sam wynik.
Oto dokument Dockera :
źródło
Być może nie działa systemd , co jest domyślną implementacją init 16.04. W przypadku uaktualnienia z 14.04, jesteś najprawdopodobniej nadal działa dorobkiewicz , a wynik uruchamiając systemctl polecenia jest wyjście masz.
Zobacz moją odpowiedź na stronie systemctl: komenda nie znaleziono serwera 16.04 więcej.
źródło
Po prostu uruchom
dbus
usługę:źródło
Wewnątrz kontenera dokerów, myślę, że możesz zaktualizować-rc.d, jeśli nadal masz problemy z systemd. Próbowałem z update-rd.c i działa.
źródło
Otrzymałem dokładnie ten sam błąd, a następnie pomyślnie go uruchomiłem
sudo
źródło
sudo
. Wygląda na zbieg okoliczności. Czy możesz powtórzyć test?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