Starten Sie einen Dienst in docker-container fehlgeschlagen mit dem Fehler: Failed to get D-Bus connection: No connection to service manager
Ich installiert Andockfenster Bild-und baute ein Bild erfolgreich.
Wenn ich per ssh auf den Behälter und führen Sie den Befehl service xxx start
ein Fehler aufgetaucht:
service nginfra start
Umleitung von /bin/systemctl start nginfra.service /sbin/service:
Zeile 79: /bin/systemctl: Keine solche Datei oder Verzeichnis
Eigentlich fakesystemd
installiert ist, den container statt systemd
.
So entfernte ich fakesystemd
und installiert systemd
mit dem Befehl:
yum swap -- entfernen fakesystemd -- install systemd systemd-libs
Aber ich kann immer noch nicht den Dienst starten:
service nginfra start
Umleitung von /bin/systemctl start nginfra.service nicht bekommen
D-Bus connection: No connection to service manager.
Hat jemand jemals treffen und dieses Problem gelöst?
- Bitte lernen, wie man format-posts zu machen es lesbar für andere.
- Wenn Sie teilen Sie Ihre Dockerfile, wäre es einfacher für andere, um zu helfen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es geschafft das Problem zu beheben, in einer CentOS:7 Docker-container.
Ich habe folgte vor allem die Anleitung CentOS Docker image-Projekt.
Bauen Sie jetzt das Bild, und führen Sie es mindestens die folgenden Argumente
docker run
Befehl:-v /run -v /sys/fs/cgroup:/sys/fs/cgroup:ro
Dann wichtigste Punkt ist, dass
/usr/sbin/init
muss der erste Prozess innerhalb der Docker-container.Also, wenn Sie möchten, verwenden Sie ein benutzerdefiniertes Skript führt einige Befehle, bevor Sie ausgeführt
/usr/sbin/init
haben, starten Sie es am Ende Ihres Skripts mitexec /usr/sbin/init
(in einem bash-Skript).Hier ist ein Beispiel:
Und hier ist der Inhalt
cmd.sh
:Haben, könnten Sie
System is booting up. See pam_nologin(8)
wenn Ihr mit dem PAM-system, in diesem Fall, löschen/usr/lib/tmpfiles.d/systemd-nologin.conf
in IhremDockerfile
da erstellt er die Datei/var/run/nologin
erzeugt diesen speziellen Fehler.run --privillaged
.Failed to get D-Bus connection: Operation not permitted
und ein[!!!!!!] Failed to mount API filesystems, freezing.
-v /run -v /sys/fs/cgroup:/sys/fs/cgroup:ro
zudocker run
haben Sie es?Dies ist bekanntes Problem mit
systemd
-basierte Betriebssysteme innerhalb Docker-Container.Kurze Antwort: so gut wie ersetzen
fakesystemd
mitsystemd
müssen Sie/sys/fs/cgroup
als nur-lese-Volumen in die container, erstellen Sie das Bild und führen es in die "privilegierte" - Modus.Dies ist die beste Anleitung, die ich gefunden habe für diese. Es nutzt Centos als Beispiel, aber sollte funktionieren mit jedem
systemd
-basierten OS.