Es gibt einen Server, der von Dutzenden Personen gemeinsam genutzt wird.
Jede Person stellt ihr Projekt in einem Container bereit,
und wenn Probleme wie ein Neustart des Servers auftreten, ist es für den Administrator schwierig, angemessen mit diesen Containern umzugehen.
Sollte man sich im Vorfeld von jeder Person die Docker-Befehle zum Starten der Container geben lassen und diese dann einzeln ausführen,
oder sollte man alles mit Docker Compose aufsetzen und dann für jedes Projekt einzeln in den jeweiligen Ordner wechseln und compose up ausführen usw.?
Ich bitte um Ratschläge, wie man als Administrator mehrere Container verwaltet.
9 Kommentare
Vielen Dank an alle, die geantwortet haben. Das Ziel für dieses Jahr sollte wohl die Einführung von Kubernetes sein.
Am einfachsten ist es, die Container als Daemon laufen zu lassen, sodass sie beim Start des Betriebssystems ebenfalls gestartet werden.
Bei der EL-Familie (Enterprise Linux, also allgemein RHEL-basierte Systeme) kann man Container als
systemd-Service registrieren. Das nennt sich offenbar Quadlet.Wenn man nur die Frage sieht, scheint sich das mit
depend on,restart alwaysoderunless stopedlösen zu lassen, aber vermutlich gibt es schwierige Situationen, die in der Frage nicht enthalten sind. Aber bei mehreren Dutzend Leuten werdet ihr am Ende wohl auf Kubernetes gehen müssen.Schon wenn ihr die Frage genauso der KI stellt, könnt ihr vermutlich eine Antwort finden.
Mit den obigen Informationen lässt sich deutlich einfacher darüber sprechen.
Wenn ich nur auf Basis dessen antworte, was Sie einfach so geschrieben haben....
Ich weiß nicht, warum ein Befehl zum Starten von Containern nötig sein sollte. Lassen Sie sich eine Compose-Datei erstellen und richten Sie es am besten so ein, dass alles auf dieser Grundlage mit demselben Befehl (
compose) gestartet werden kann.:) Da Sie Administrator sind, sagen Sie einfach, dass es so gebaut werden soll — die anderen werden das schon umsetzen, also setzen Sie sich damit durch :)
Ich halte k8s für eine Lösung mit hoher Belastung in einer Umgebung, die man allein verwaltet, und empfehle es daher nicht besonders.
Ich finde grundsätzlich, dass es immer am besten ist, die Infrastruktur möglichst einfach zu halten.
Es sind vier On-Premises-Server.
Ich mache das allein.
Docker wurde nach bestandener Sicherheitsprüfung vor inzwischen vier Monaten im Unternehmen eingeführt, und von k8s kenne ich nur die Grundlagen. Die Einführung von HARBOR für Docker muss ich bald ebenfalls umsetzen, und sobald Harbor eingeführt ist, wird Docker Hub voraussichtlich gesperrt. Wahrscheinlich werde nur ich Zugriff auf Docker Hub behalten, und wenn Anfragen hereinkommen, werde nur ich Images aus Docker Hub holen und in das interne
Harbor hochladen.
Ich hielt es für unrealistisch, alles per Compose-Befehl durchzudrücken oder für jedes Projekt einzeln in den jeweiligen Ordner zu gehen und manuell
compose upauszuführen, daher habe ich das nicht so gemacht. Stattdessen habe ich darum gebeten, Docker-Befehle mit absoluten Pfaden anzugeben, aber in letzter Zeit kann ich den Gedanken nicht abschütteln, dass das der falsche Ansatz ist.Reicht es nicht aus, Docker-Neustartoptionen zu setzen?
In solchen Fällen ist es sinnvoll, Kubernetes zu verwenden und jedem Benutzer einen eigenen Context zuzuweisen.
Außerdem lassen sich die Berechtigungen so einschränken, dass jeder Nutzer nur seinen jeweiligen Context verwenden kann.
Ich verwende k8s.
Ich denke ähnlich wie tujuc: Ohne erfahrene Person Kubernetes allein einzuführen und anschließend stabil und ohne Zwischenfälle zu betreiben, halte ich für mit ziemlich viel Risiko verbunden.
Allerdings ist es etwas schwer zu beurteilen, weil Sie von einer Situation sprechen, in der vier Server gemeinsam von mehreren Dutzend Personen genutzt werden.
Ich denke aber, dass es sinnvoller ist, nicht die Zahl der beteiligten Personen als Maßstab zu nehmen, sondern zu prüfen, ob die Anzahl der Serverprogramme zu groß und die Komplexität zu hoch geworden ist; in so einem Fall lohnt es sich, das Lernen von k8s in Betracht zu ziehen.
Wenn ich in Ihrer Situation wäre, würde ich die Umgebung vermutlich in den folgenden Schritten verbessern.
Dockerfile- unddocker compose-Dateien erstellen und erzwingen, dass sie bei Ausführung mit denselben Befehlen zuverlässig starten.