2017-04-04 101 views
1

Ich versuche, einen Docker-Container auf CentOS 7 zu erstellen, der R, shiny-server und rududio-server hostet, aber ich muss systemd für die Dienste haben anfangen. Ich kann das systemd-fähige Centos-Image als Grundlage verwenden, aber dann muss ich den Container im privilegierten Modus ausführen und den Zugriff auf/sys/fs/cgroup auf dem Host erlauben. Ich bin vielleicht in der Lage, die weniger sichere Situation zu tolerieren, aber dann kann ich den Container nicht mit Benutzern teilen, die Docker unter Windows oder Mac ausführen.Dienste in CentOS 7 Docker Bild ohne systemd

Ich habe diese Frage gefunden, aber es ist 2 Jahre alt und scheint keine Auflösung zu haben.

Alle Tipps oder Alternativen sind willkommen.

UPDATE: ERFOLG!

Hier ist, was ich gefunden habe: Für shiny-server musste ich nur shiny-server mit den entsprechenden Parametern von der Kommandozeile aus ausführen. Ich nahm den entsprechenden Aufruf in eine Skriptdatei auf und rufe sie mit der letzten CMD-Zeile in meiner Dockerfile auf.

rududio-Server war schwieriger. Zuerst musste ich Initskripte installieren, um die Abhängigkeiten zu erhalten, so dass einige der ersten Skripte funktionieren würden. Danach würde die Ausführung von rstudio-server start im Wesentlichen nichts tun und keinen Fehler liefern. Ich verfolgte den Anruf über die verschiedenen Links und fand mich in/usr/lib/rududio-server/bin/rududio-server. Die Funktion daemonCmd() testet cat/proc/1/comm, um zu ermitteln, wie der Server gestartet wird. Aus irgendeinem Grund scheiterte es, aber wenn man sich das Skript anschaut, scheint es klar zu sein, dass es /etc/init.d/rstudio-server start ausführen muss. Wenn ich das manuell oder in einer Docker CMD-Zeile mache, scheint es zu funktionieren.

Ich habe diese zwei CMD-Zeilenanforderungen genommen und sie in ein sh-Skript geschrieben, das von einer CMD-Zeile in der Dockerfile aufgerufen wird.

Ein bisschen ein Hack, aber nicht schlecht. Ich freue mich über weitere Vorschläge.

+1

_why_ benötigen Sie systemd, speziell? – jaxxstorm

+0

shiny-server und rududio-server benötigen systemd, um die Dienste bei der Installation zu aktivieren und zu starten. Gibt es eine Möglichkeit für mich, solche Dienste ohne systemd zu starten? Ich habe versucht init, aber es schien andere Systemabhängigkeiten zu haben, die ich nicht umgehen konnte. – KirkDCO

Antwort

Verwandte Themen