1 Punkte von chcv0313 2025-12-26 | 9 Kommentare | Auf WhatsApp teilen

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

 
chcv0313 2025-12-31

Vielen Dank an alle, die geantwortet haben. Das Ziel für dieses Jahr sollte wohl die Einführung von Kubernetes sein.

 
popopo 2025-12-28

Am einfachsten ist es, die Container als Daemon laufen zu lassen, sodass sie beim Start des Betriebssystems ebenfalls gestartet werden.

  • Vor einem Neustart können sie außerdem einzeln sauber beendet werden.

Bei der EL-Familie (Enterprise Linux, also allgemein RHEL-basierte Systeme) kann man Container als systemd-Service registrieren. Das nennt sich offenbar Quadlet.

 
bungker 2025-12-27

Wenn man nur die Frage sieht, scheint sich das mit depend on, restart always oder unless stoped lö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.

 
tujuc 2025-12-27
  1. Wo liegt Ihre Infrastruktur? AWS? Selbst betrieben oder Server-Hosting? Azure?
  2. Verwalten Sie das allein?
  3. In welchem Zustand haben Sie bisher gearbeitet, und wie weit kennen Sie sich aus?

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.

 
chcv0313 2025-12-27

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 up auszufü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.

 
byun1114 2025-12-27

Reicht es nicht aus, Docker-Neustartoptionen zu setzen?

 
click 2025-12-26

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.

 
cafedead 2025-12-26

Ich verwende k8s.

 
selene 2025-12-29

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.

  1. Maßnahmen treffen, damit es kein Problem ist, wenn Serverprogramme jederzeit beendet werden => Dazu gehören etwa die Implementierung eines graceful shutdown und Refactoring, damit sie stateless arbeiten. (Oder die Bitte an die Engineers, dies umzusetzen.)
  2. Serverprogramme containerisieren und vereinheitlichen => Für jeden Service Dockerfile- und docker compose-Dateien erstellen und erzwingen, dass sie bei Ausführung mit denselben Befehlen zuverlässig starten.
  3. Die Verwaltung so gestalten, dass außer dem Administrator keine anderen Engineers mehr direkt auf die Server zugreifen müssen => Mit einer gewünschten CI/CD-Plattform wie Jenkins/GitHub Actions/AWS CodePipeline lässt sich eine GitOps-ähnliche Struktur aufbauen. Schon wenn Sie nur das erreichen, können Engineers Redeployments/Neustarts ausreichend dadurch steuern, dass sie die Pipeline erneut ausführen.
  4. Danach, wie andere bereits erwähnt haben, weiter ausbauen und professionalisieren (z. B. Einführung von K8s und ArgoCD).