Mehrere Hermes-Profile bedeuten mehrere Docker-Container? Ein Konfigurationsschlüssel lässt sie sich einen einzigen teilen

Du betreibst drei Hermes-Profile: eines für die Arbeit, eines für private Projekte, eines für Experimente. Jedes Profil ist mit dem Docker-Terminal-Backend konfiguriert, sodass bei jedem Start gleich mehrere Container auf deiner Maschine hochfahren – mehr Speicherverbrauch, langsamere Starts, Abhängigkeiten, die in jedem einzeln installiert werden, und Umgebungsänderungen, die Container für Container synchronisiert werden müssen. PR #94633, gemerged am 25. August, bietet eine elegante Lösung: Vertrauenswürdige Profile können sich einen persistenten Docker-Container teilen, gesteuert über einen einzigen Konfigurationsschlüssel.
Vorher: ein Container pro Profil
Zuerst das Standardverhalten: Das Docker-Backend von Hermes (terminal.backend: docker) gibt jedem Profil seinen eigenen Container – die Isolationsregel, die noch am selben Tag durch PR #94560 festgelegt wurde: Container sind pro Profil abgegrenzt und benannt (profile:<name>), keine Querverbindungen. Der Vorteil ist eine saubere Isolation; der Nachteil sind doppelte Ressourcen: Drei Profile bedeuten drei Sätze Abhängigkeiten, drei Caches, drei Umgebungen.
Wenn du Docker hauptsächlich für einmalige isolierte Aufgaben nutzt, ist dieser Standard völlig in Ordnung – keine Änderungen nötig. Wenn aber mehrere deiner Profile zur „vertrauenswürdigen Familie“ gehören – etwa ein Arbeitsprofil und ein Experimentierprofil, die tatsächlich dieselbe Dev-Umgebung verwenden –, ist die Duplizierung reine Verschwendung.
Jetzt: ein Schlüssel, ein Container
PR #94633 führt einen neuen Konfigurationsschlüssel ein: terminal.docker_shared_container_key. Die Regeln sind einfach:
- Nicht gesetzt (Standard: leerer String): aktuelles Verhalten, jedes Profil behält seinen eigenen Container;
- Mehrere Profile auf denselben Wert gesetzt: Sie teilen sich einen persistenten Container, gekennzeichnet als
shared:<your-key>; - Auch direkte CLI-Aufrufe (ohne Profilkontext) mit demselben konfigurierten Schlüssel landen in diesem gemeinsamen Container.
Konfiguration:
hermes config set terminal.docker_shared_container_key team/ws
Oder bearbeite die Konfigurationsdatei direkt (hermes config path zeigt deren Speicherort):
terminal:
backend: docker
docker_shared_container_key: "team/ws"
Sobald die Profile work und research beide team/ws verwenden, landen ihre Befehle im selben Container: Abhängigkeiten einmal installieren und alle sehen sie, Caches bleiben warm, Umgebungsänderungen greifen an einer Stelle. In den offiziellen Tests lösen beide Profile denselben Container-Schlüssel shared:team/ws auf.
Fälle, in denen das Teilen bewusst ignoriert wird
Das ist kein blindes Zusammenlegen – drei Grenzen sollte man kennen:
- SSH-Backends machen nicht mit:
terminal.docker_shared_container_keybetrifft nur das Docker-Backend; SSH-Umgebungen ignorieren es vollständig; - Nicht-persistenter Modus bleibt isoliert: Wenn du Wegwerf- (nicht-persistente) Docker-Sitzungen nutzt, stopft der gemeinsame Schlüssel keine zwei flüchtigen Sitzungen in einen Container – die Isolation pro Sitzung bleibt erhalten;
- Unterschiedliche Schlüssel = kein Teilen: Der Schlüssel ist die Isolationsgrenze; Profile mit unterschiedlichen Werten nutzen jeweils ihren eigenen Container.
Außerdem bleiben Dateien, die im gemeinsamen Container entstehen (z. B. MEDIA-Anhänge), aus den Sitzungen abrufbar – die offiziellen Tests deckten ausdrücklich die Medienauslieferung aus der gemeinsamen Sandbox ab.
Wann aktivieren, wann in Ruhe lassen
Gute Kandidaten: Profile, die eigentlich nur verschiedene Einstiegspunkte in dieselbe Dev-Umgebung sind; ein gemeinsamer „Umgebungs-Container“ für ein Team; private Nutzer mit mehreren Profilen, die Speicherplatz und Startzeit sparen wollen.
Standard beibehalten: Profile mit geringem gegenseitigem Vertrauen (z. B. solche, die nicht vertrauenswürdige Automatisierung hosten); Umgebungen, die eine strenge Audit-Isolation benötigen; experimentelle Profile, deren Abhängigkeitsversionen kollidieren könnten. Isolation ist immer sicherer als Teilen – der gemeinsame Schlüssel ist für „vertrauenswürdige“ Profile gedacht, und genau das bedeutet „trusted profiles“ im PR-Titel.
Zusammenfassung
Ein Konfigurationsschlüssel verwandelt „ein Docker-Container pro Profil“ in „ein Container für die ganze Familie“: terminal.docker_shared_container_key leer lassen erhält die Standard-Isolation, während mehrere Profile mit demselben Wert einen persistenten Container teilen. Mehr zu Multi-Profil-Workflows findest du in unserem Leitfaden zu mehreren Profil-Instanzen; für Konfigurationsdatei-Operationen deckt die Befehlsreferenz zu hermes config den Rest ab. Noch unsicher, ob Docker das richtige Backend ist? Die Installationsanleitung geht alle Backend-Optionen durch.