Hallo, ich versuche herauszufinden, warum und wie einige der Prozesse, die Discourse startet, unter meinem normalen Linux-Benutzerkonto ohne Root-Rechte laufen:
Ich betreibe Discourse derzeit auf Clear Linux, daher ist es kein ganz Standard-Basissystem, aber ich habe das gleiche Verhalten auch bei einer Discourse-Installation unter Debian gesehen. Im aktuellen System habe ich mich mit meinem rahim12-Benutzerkonto per SSH angemeldet und sudo su ausgeführt, bevor ich alles rund um den Discourse-Container installiert und konfiguriert habe. Und bei meinen früheren Tests unter Debian habe ich mich direkt als root per SSH in das System eingeloggt. Ist es also normal, dass einige Prozesse wie die Unicorn-Worker unter meinem normalen Benutzerkonto laufen, und wie haben sie gewusst, dass sie es verwenden sollen? Werden sie automatisch unter der Linux-UID von 1000 gestartet?
Es ist eine Eigenart, wie Docker funktioniert.
Der Discourse-Benutzer innerhalb des Containers hat die UID 1000. Wenn Sie also die Prozessliste außerhalb des Containers betrachten, wird der Benutzer angezeigt, der die UID 1000 hat.
In meinem Fall würde er als claudia angezeigt werden, da dies der Benutzername ist, den alle meine Server für die UID 1000 verwenden.
Ahh, interessant, das Host-Betriebssystem sucht also nach dem Benutzernamen für die UID 1000 auf dem Host, aber diese gehört tatsächlich einer anderen UID 1000 innerhalb des Containers?
Und es hat mich tatsächlich ein paar Mal erwischt, denn auf einem meiner lokalen Entwicklungsserver habe ich einen Docker-Container, der Prozesse mit der UID 1001 (interner Container-Benutzername ist WebDev) ausführt, und auf dem Host-Betriebssystem wird ein Konto angezeigt, das seit 2019 deaktiviert ist, aber aus historischen Gründen noch existieren muss.
Vielen Dank für die Erklärung, das ist also eine ziemlich seltsame Eigenart von Docker. Als konventioneller Linux-Administrator, der daran gewöhnt ist, jede einzelne Komponente des Stacks manuell zu installieren und zu konfigurieren, fühle ich mich mit dem undurchsichtigen Containerisierungsparadigma und seinen automatischen Skripten, die Abhängigkeiten und Konfigurationen aus unzähligen verschiedenen Quellen ziehen, nicht ganz wohl. Aber es ist schwer, die Geschwindigkeit und Reproduzierbarkeit der Bereitstellung von Discourse und auch des Dockerized Mailservers, den ich betreibe, zu bestreiten, also beschwere ich mich nicht.
Ich hätte wahrscheinlich erwähnen sollen, dass es eine Eigenart von Docker ist, weil es eine Eigenart von Linux Containern im Allgemeinen ist.
Im Wesentlichen ähneln sie den *BSD Jails, sind aber tatsächlich viel strenger darin, wie sie Dinge isolieren.
Persönlich bin ich kein Fan davon, aber ich verstehe eigentlich vollkommen, warum Discourse Docker verwendet. Die Isolierung macht es tatsächlich viel schwieriger, dass Änderungen am Host Discourse beeinträchtigen. Tatsächlich hatte ich, abgesehen von einem Kernel-Update, das Docker vor einiger Zeit kurzzeitig lahmlegte, nie ein Upgrade des Hosts, das Discourse beschädigte.