Starten eines Dienstes im Andock-Container fehlgeschlagen, mit Fehler: Fehler beim Abrufen der D-Bus-Verbindung: Keine Verbindung zum Dienst-Manager

8

Ich habe das Docker-Image installiert und ein Image erfolgreich erstellt.

Wenn ich per SSH in den Container klicke und den Befehl service xxx start starte, erscheint ein Fehler:

  

Dienst nginfra Start

     

Umleiten nach / bin / systemctl Starten Sie nginfra.service / sbin / service:   Zeile 79: / bin / systemctl: Keine solche Datei oder Verzeichnis

Tatsächlich ist fakesystemd im Container installiert und nicht in systemd .

Also habe ich fakesystemd entfernt und systemd mit dem Befehl installiert:     yum swap - entferne fakesystemd - installiere systemd systemd-libs

Aber ich kann den Dienst immer noch nicht starten:

  

Dienst nginfra Start

     

Umleitung zu / bin / systemctl start nginfra.service Fehler beim Abrufen   D-Bus Verbindung: Keine Verbindung zum Service Manager.

Hat sich jemals jemand getroffen und dieses Problem gelöst?

    
baoxinru 13.02.2015, 08:29
quelle

2 Antworten

5

Ich habe es geschafft, dieses Problem in einem CentOS: 7 Docker Container zu beheben. Ich habe hauptsächlich das Handbuch zum CentOS Docker Image-Projekt gefolgt.

> %Vor%

Erstellen Sie nun das Image und führen Sie es mit mindestens den folgenden Argumenten in docker run command: -v /run -v /sys/fs/cgroup:/sys/fs/cgroup:ro

aus

Dann ist der Hauptpunkt, dass /usr/sbin/init der erste Prozess innerhalb des Docker-Containers sein muss.

Wenn Sie also ein benutzerdefiniertes Skript verwenden möchten, das einige Befehle ausführt, bevor Sie /usr/sbin/init ausführen, starten Sie es am Ende Ihres Skripts mit exec /usr/sbin/init (in einem Bash-Skript).

Hier ist ein Beispiel:

%Vor%

Und hier ist der Inhalt von cmd.sh :

%Vor%

Sie könnten System is booting up. See pam_nologin(8) haben, wenn Sie das PAM-System verwenden, löschen Sie in diesem Fall /usr/lib/tmpfiles.d/systemd-nologin.conf in Ihrem Dockerfile , weil es die Datei /var/run/nologin erzeugt, die diesen spezifischen Fehler erzeugt.

    
Anthony O. 01.03.2017 14:25
quelle
4

Dies ist bekanntes Problem mit systemd -basierten Betriebssystemen in Docker-Containern.

Kurze Antwort: Zusätzlich zum Ersetzen von fakesystemd durch systemd müssen Sie /sys/fs/cgroup als schreibgeschütztes Volume an den Container anhängen, das Image erstellen und dann im "privilegierten" Modus ausführen.

Dies ist der beste Leitfaden, den ich dafür gefunden habe . Es verwendet Centos als Beispiel, sollte aber mit jedem systemd -basierten Betriebssystem arbeiten.

    
ocean 18.09.2015 02:51
quelle

Tags und Links