Ich versuche, den systemctl
Befehl in einem ubuntu:16.04
Docker-Container zu verwenden. Ich führe den folgenden Befehl aus ...
systemctl status ssh
Allerdings bekomme ich den Fehler ...
Failed to connect to bus: No such file or directory
Warum funktioniert das nicht? Steht dies im Zusammenhang mit Ubuntu, das in einem Docker-Container ausgeführt wird? Wie kann ich richtig systemctl
arbeiten?
service ssh start
Antworten:
Ich nehme an, Sie starten Ihren Docker-Container mit so etwas wie
Das Problem ist jetzt, dass Ihr Init-Prozess PID 1 ist
/bin/bash
, nicht systemd. Bestätigen Sie mitps aux
.Außerdem fehlt dir dbus, mit dem du kommunizieren würdest. Hier kommt Ihre Fehlermeldung her. Da Ihre PID 1 nicht systemd ist, hilft es nicht, dbus zu installieren.
Am besten überlegen Sie, wie Sie Docker verwenden möchten. Verlassen Sie sich nicht auf systemd als Prozessmanager, sondern lassen Sie den Docker-Container Ihre gewünschte Anwendung im Vordergrund ausführen.
quelle
docker log
./sbin/init
dem Prozess PID = 1 erhalten. Das Hinzufügen,--privileged=true
wie von @sonjaya sonjaya unten vorgeschlagen, löste das Problem.Andere haben ein ähnliches Problem gemeldet. Starten Sie das Terminal und geben Sie Folgendes ein:
Sehen Sie eine Umgebungsvariable wie diese?
Wo
id -u
in Backticks nicht einfache Anführungszeichen eingeschlossen sind. Diese Variable wird in der Regel1000
für normale Benutzer und0
für Superuser (sudo) in eine Zahl uminterpretiert .Wenn die Umgebungsvariable
XDG_RUNTIME_DIR
nicht vorhanden ist, müssen Sie sie erstellen. Die vollständige Diskussion ist in Launchpad-System und Antworten .quelle
root
, habe ich die VariableXDG_RUNTIME_DIR=/run/root/0
ohne Erfolg verwendet. Dann habe ich den Ordner überprüft/run
und festgestellt, dass es keinen Unterordner gibt/run/root
. Kann ich trotzdem eine ausführlichere Fehlermeldung erhalten? Ich habe nachgesehensystemctl --help
, konnte aber keine Möglichkeit finden, detaillierte Fehlermeldungen zu erhalten.PID 1
das, was normalerweisesystemd
in einem Docker-Container mit dem Container Entrypoint ersetzt wird .Wenn dieser Fehler im Windows-Subsystem für Linux (WSL) auftritt, liegt dies daran, dass Docker nicht unterstützt wird. Dies ist auf fehlende Gruppen und andere Voraussetzungen zurückzuführen.
quelle
Versuche dies:
oder
wird das gleiche Ergebnis sein.
Hier bekomme ich von der Doku von Docker :
quelle
Möglicherweise führen Sie nicht systemd aus. Dies ist die Standardimplementierung von init am 16.04. Wenn Sie von 14.04 aktualisiert hat , sind Sie wahrscheinlich noch läuft Emporkömmling , und das Ergebnis des laufenden systemctl Befehl ist die Ausgabe , die Sie bekommen.
Siehe meine Antwort unter systemctl: comand not found 16.04 server für mehr.
quelle
Starten Sie einfach den
dbus
Dienst:quelle
Im Docker-Container können Sie, glaube ich, update-rc.d ausführen, wenn Sie immer noch Probleme mit systemd haben. Ich habe es mit update-rd.c versucht und es funktioniert.
quelle
Ich habe genau den gleichen Fehler erhalten und ihn dann erfolgreich mit ausgeführt
sudo
quelle
sudo
. Scheint ein Zufall zu sein. Kannst du bitte nochmal testen?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