Es scheint unzählige verschiedene Möglichkeiten zu geben, wie Systemdienste in Docker-Containern ausgeführt werden können. Das neueste Beispiel für einen direkten Rat, den ich gefunden habe, ist das Ausführen von Docker mit --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro --cap-add=SYS_ADMIN --security-opt=seccomp:unconfined
. Es scheitert jedoch immer noch :
Fehler: Dienst konnte nicht gestartet werden [ntpd]: Die Ausführung von '/ usr / sbin / systemctl start ntpd' wurde zurückgegeben. 1: Verbindung zum Bus fehlgeschlagen: Keine solche Datei oder kein solches Verzeichnis
Was ist das absolute Minimum, das ich tun muss, um einfache Dienste unter systemd 231 auf einem Docker 1.12.1-Container mit einer aktuellen Arch Linux-Distribution auszuführen?
arch-linux
systemd
docker
l0b0
quelle
quelle
ENTRYPOINT
System geben . Wenn Sie nach einer Art Container-Integration mit systemd suchen, können Sie einen nspawn-ServiceENTRYPOINT
.Antworten:
Ich hatte das gleiche Problem beim Testen meiner Ansible-Playbooks, für die systemd erforderlich ist. Und wie Sie sagten, scheint Docker hier der beste Ansatz zu sein, da es viel einfacher ist, einen Container als eine virtuelle Maschine auf und ab zu bringen.
Zunächst einmal ist das Base / Archlinux- Image veraltet - Sie sollten stattdessen Archlinux / Base verwenden. Um systemd völlig unprivilegiert auszuführen, sollten einige Dinge getan werden:
Die resultierende Befehlszeile ist
Wenn wir über das Ausführen eines bestimmten Dienstes wie ntpd aus Ihrem Beispiel sprechen, müssen Sie hinzufügen
Andernfalls schlägt ntpd mit der Verweigerung der Berechtigung fehl, da niemand möchte, dass ein Container standardmäßig die Systemzeit festlegt.
Ps Ich habe eine ganze Weile gelernt, wie sich systemd verhält, und es geschafft, es mit der Anzahl der Betriebssystem-Images zum Laufen zu bringen. Ich habe meine Erfahrung in einem Artikel beschrieben, in dem systemd im Docker-Container ausgeführt wird . Es ist auf Russisch, aber ich glaube, Google Übersetzer sollte in Ihrem Browser funktionieren. Vielen Dank
quelle