2026 OpenClaw Docker-Produktion
Komponieren · Image-Upgrades · Volumes vs. Systemd-Baseline

Teams, die eine Container-Isolierung für OpenClaw Gateway wünschen, sich aber an Upgrade-Abenden vor manuellen Bearbeitungspfaden fürchten, verzichten in der Regel auf Compose, benannte Volumes und Image-Digests. Dieser Artikel beschreibt einen reproduzierbaren Docker-Produktionspfad mit einer klaren Trennung vom lokalen Ubuntu 24.04 + systemd + Tunnel-Bare-Metal-Leitfaden: Baselines, docker-compose.yml-Form, persistente Volumes, Image-Upgrades und Integritätsprüfungen sowie eine Symptomtabelle für häufige Containerfehler.

01

Wie diese Anleitung funktioniert, funktioniert mit dem Artikel systemd + Tunnel Bare-Metal

Der Bare-Metal-Pfad minimiert die Abstraktion: Prozesse auf dem Host, Systemd für Neustarts, Tunnel für öffentlichen Eingang. Der Docker-Pfad tauscht das Artefakt von „Verzeichnissen + Unit-Dateien“ zu „Bilder + Compose“ aus: Bei Upgrades handelt es sich hauptsächlich um das Abrufen neuer Digests, das Neuerstellen von Containern und das Überprüfen, dass die Mounts noch in einer Reihe stehen. Beide können das Gateway mit TLS am Rand im Loopback halten; Die Abzweigung besteht darin, ob Sie die Bildlieferkette und die Volumenverwaltung im Austausch für Reproduzierbarkeit und feinere Rollbacks akzeptieren.

Wenn Sie Register, Scans und SBOMs bereits standardisieren, ist Compose oft die Produktionsform mit der geringsten Reibung. Ein einzelner VPS mit geringer Abwanderung kann auf dem Papier mit systemd allein immer noch günstiger sein. Die folgenden sechs Schmerzpunkte stammen aus echten Triage-Threads – sie sagen Ihnen, ob Sie für Container bereit sind.

  1. 01

    Behandelnlatestals Versionierung:Pin-Digest oder unveränderliche Build-Tags in der Produktion; andernfalls wird „es hat letzte Nacht funktioniert“ keiner Dateisystemebene zugeordnet.

  2. 02

    Konfiguration in Bilder umwandeln:Verwenden Sie Env, Secrets oder schreibgeschützte Mounts. andernfalls erzwingt jede Token-Rotation einen Neuaufbau und verhindert die Containerlieferung.

  3. 03

    Anonyme Volumes, die Festplatten füllen:Unbenannte Cache-Volumes aus Experimenten werden stillschweigend verbraucht/var/lib/docker; bevorzugen benannte Volumes oder externen Objektspeicher.

  4. 04

    Gesundheitsprüfungen, die immer 200 zurückgeben:Die Prüfung nur des HTTP-Ports ohne Modell-/Konfigurationsbereitschaft führt nach Verkehrsverschiebungen zu Massen-502-Fehlern.

  5. 05

    Unterschiedliche Compose- und Tunnel-Konfigurationen:Der Eingang, der immer noch auf einen alten veröffentlichten Port verweist, führt dazu, dass externe Symptome nichts mit Containerprotokollen zu tun haben.

  6. 06

    macOS-Workloads in Linux-Container erzwingen:Das Gleiche gilt für den Bare-Metal-Artikel: Xcode-/Simulator-Jobs gehören zu Remote-Mac-Ausführern, nicht zu „magischen Sandbox“-Linux.

Wenn Sie antworten können: „Woher kommen die Bilder, welche Datenträger werden gespeichert, wem gehören Upgrades?“, fahren Sie mit den Baselines und Vorlagen fort. Wenn nicht, schreiben Sie einen One-Pager in der Inszenierung, bevor Sie mit der Produktion in Berührung kommen.

Wenn Sie beide Pfade ausführen, teilen Sie sich einen Listen- und Tunneltopologievertrag: Ordnen Sie Container 127.0.0.1 auf dem Host-Loopback zu und beenden Sie TLS bei Cloudflared oder einem gleichwertigen System. Bei der Migration von systemd → Compose wird dann nur der Prozess-Supervisor ausgetauscht, nicht die Sicherheitsgrenze.

Wenn Sie sowohl Installationsskripte als auch ein Compose-Repository verwalten, deklarieren Sie eine einzige Quelle der Wahrheit – entweder ist Compose kanonisch und CI rendert Systemd-Snippets für seltene Bare-Metal-Fälle oder umgekehrt. Dual-Track-Drift zeigt sich normalerweise dadurch, dass Ports, Volume-Namen und Umgebungspfade nur auf einer Seite geändert werden.

Container erleichtern die Hölle der Abhängigkeiten, machen aber keine geheimen Rotations- oder Audit-Anforderungen überflüssig. Env_file als Safe ohne Berechtigungen und Rotation zu behandeln, ist moralisch dasselbe wie das Übertragen von Token – nur mit einem verzögerten Vorfalldatum.

02

Entscheidungstabelle: Compose-Produktion vs. Systemd-Bare-Metal vs. öffentliche Bindung

Überprüfen Sie „Installationsminuten“ neben „Kosten pro vierteljährlichem Upgrade“: Container kosten im Voraus mehr, lassen sich aber besser wiederholen. Ersetzen Sie Platzhalternamen/Ports durch Ihre tatsächlichen Werte.

DimensionGateway auf öffentlicher IPsystemd + Loopback + Tunnel (Bare Metal)Docker Compose-Produktion
LiefereinheitHandgerollte Verzeichnisse/SkripteEinheit + KonfigurationsdateienBildauszug + Datei erstellen
Upgrade-PfadHohe DriftBinär/config ersetzen, systemctl rollenImage abrufen, Container neu erstellen, Volumes überprüfen
IsolierungSchwachMittel (Benutzer/Berechtigungen)Stärker (Namespaces/Cgroups – keine vollständigen VMs)
BeobachtbarkeitDIYJournald ist klarVereinheitlichen Sie Docker-Protokolle oder Sidecar-Agenten
Typische KostenHöchstes SicherheitsrisikoModerate SkripterstellungBildlieferkette + Volumenoperationen

Compose deklariert Laufzeit + Persistenz + Abhängigkeitskanten; Wenn Sie sich weigern, Volumes und Tags zu benennen, verschieben Sie das Chaos nur, bis die Festplattenwarnung ausgelöst wird.

03

Voraussetzungen: Docker Engine, Compose v2 und Dimensionierung

Installieren Sie unter Ubuntu 24.04 LTS oder ähnlichem die unterstützte Docker Engine und das Compose v2-Plugin (docker compose) und vermeiden Sie dabei die veraltete eigenständige Docker-Compose-Binärdatei, die CI von prod unterscheidet. Budgetieren Sie RAM über das Gateway hinaus für Protokolle, temporäres Entpacken und gleichzeitige Verbindungen. Beobachten Sie das Wachstum von /var/lib/docker separat.

Die Sicherheit entspricht dem Bare-Metal-Artikel: keine öffentlichen Listener für App-Ports, nur SSH-Schlüssel, standardmäßig verweigernde Firewall. Container fügen Namespaces hinzu – sie implementieren TLS oder Zugriffsrichtlinien nicht auf magische Weise.

  1. 01

    Pin-Versionen:erfassendocker versionUnddocker compose versionim Runbook; Ausrichtung der Staging-/Prod-Minderjährigen.

  2. 02

    Protokolltreiber + Rotation:mit Standard-JSON-Dateisatzmax-size/max-fileDaher kann ein gesprächiger Container die Festplatte nicht füllen.

  3. 03

    Dediziertes Netzwerk:Deklarieren Sie in Compose eine benutzerdefinierte Bridge, sodass standardmäßig nur das Gateway und der Tunnel-Sidecar kommunizieren.

  4. 04

    Registrierungsdisziplin:Dokumentenregister, Bildname, Digest; Prod-Pulls sollten dieselbe Registry verwenden, die Sie getestet haben – vermeiden Sie docker.io in dev und private Registry in prod ohne Tracking.

  5. 05

    Volumen-/Bindungsstrategie:schreibgeschützte Konfigurations-Mounts, beschreibbare Volumes nur für Laufzeit/Cache, Geheimnisse als Modus-400-Dateien oder Docker-Geheimnisse.

  6. 06

    Abwärts/aufwärts proben:im Staging-Laufdocker compose downDannup -d; Bestätigen Sie, dass die Volumes überleben und der Upstream-Tunnel weiterhin auf den richtigen Loopback-Port zielt.

info

Notiz:Echte OpenClaw-Image-Namen, Env-Schlüssel und CLI-Flags folgen den Originaldokumenten – die YAML unten dient der Veranschaulichung; Ersetzen Sie Platzhalter und löschen Sie nicht verwendete Schlüssel vor der Produktion.

04

Stellen Sie das Grundgerüst zusammen: Ports, Volumes, Integritätsprüfungen, Upgrade-Befehle

Veröffentlichen Sie mit 127.0.0.1:host:container, damit der Host-Loopback den Tunnel speist – derselbe Vertrag wie „Nur Loopback binden“ im Bare-Metal-Leitfaden. Gesundheitsprüfungen sollten die HTTP-Bereitschaft nachweisen; Wenn der Upstream einen Befehl zur Konfigurationsvalidierung ausliefert, erweitern Sie start_period, damit neue Container nicht während des Bootens beendet werden.

docker-compose.yml
services:
  openclaw-gateway:
    image: ghcr.io/example/openclaw-gateway@sha256:<DIGEST>
    restart: unless-stopped
    env_file:
      - ./gateway.env
    volumes:
      - openclaw_data:/var/lib/openclaw
      - ./gateway.yaml:/etc/openclaw/gateway.yaml:ro
    ports:
      - "127.0.0.1:8787:8787"
    healthcheck:
      test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8787/health"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 40s

volumes:
  openclaw_data:

Upgrade-Reihenfolge: ① Docker Compose Pull im Staging, um Digest zu überprüfen; ② Sichern Sie die Daten des benannten Volumes oder exportieren Sie die Konfiguration. ③ prod docker compose up -d --no-deps --build (löschen Sie --build, wenn es nicht verwendet wird) und überwachen Sie den Zustand; ④ Locken vom Host und durch den Tunnel; ⑤ Erwägen Sie erst dann die Bereinigung des Docker-Images (gefährlich, wenn Sie noch Rollback-Ebenen benötigen).

Triage-Stack: Containerprotokolle für Konfiguration/Berechtigungen; host ss -tlnp für Loopback-Bindung; Tunneleingang für den richtigen Port. Wenn das Internet 502 sieht, Curl 127.0.0.1 aber funktioniert, vermuten Sie Routing – nicht zuerst das Image.

Führen Sie für Blau/Grün kurz zwei Compose-Projekte aus (verschiedene Projektnamen und Loopback-Ports) und verschieben Sie die Gewichtungen am Tunnel oder im internen LB. Dann docker compose -p old_project down oder alte Container behalten Volume-Sperren und Hintergrundarbeit.

Wenn das Gateway einen Host-Unix-Socket oder ein lokales Modell-Sidecar erreichen muss, überprüfen Sie network_mode: host – es umgeht einen Teil der Port-Map-Isolation und sollte eine von zwei Personen überprüfte Änderung sein.

warning

Warnung:niemals festlegengateway.envmit API-Schlüsseln; CI darf gerenderte Compose-Umgebung nicht drucken. Eine falsche Volume-UID/GID zeigt sich oft als ungenaue Zustandsprüfung und nicht als sofortiger Absturz.

05

Harte Zahlen und Topologiehinweise für das Bereitschaftsdokument

Nutzen Sie diese, um sich an der Plattform „Container sind kein kostenloses Mittagessen“ zu orientieren. Ersetzen Sie es durch Ihre P95-Metriken und Scheibenkurven.

Warnung bei Neustartanzahl, fehlerhafter Dauer und Volume-Nutzung – nicht nur bei der CPU. Dienste im Gateway-Stil kommen oft erst dann zum Einsatz, wenn die Festplatten- oder Dateideskriptoren erschöpft sind.

  • Layers and disk: frequent pulls of large bases can add tens of GB per month under /var/lib/docker; pair alerts with volume backup policy.
  • Health intervals: too tight amplifies jitter, too loose slows traffic cutover; 30s interval + sane start_period is a common starting point.
  • Rollback window: keep at least one known-good digest and annotate compose with the change ticket—avoid “rollback == latest”.

Linux-Container passen zu OpenClaw-Gateways, Warteschlangen und leichter Orchestrierung, aber Xcode, Simulatoren und Apple Silicon-Funktionen stoßen an ihre Grenzen – zahlen Sie ewig für Kompatibilitäts-Shims oder verlagern Sie die Ausführung auf dedizierte Macs. Im Vergleich zum Betrieb von Gateways auf Laptops oder „temporären“ Hosts, auf denen Ruhezustand, Updates und Eingabeaufforderungen die Automatisierung unterbrechen, richten vertraglich vereinbarte dedizierte Remote-Macs langlebige Apple-Workloads aus, während Linux Docker oder systemd für die Steuerungsebene behält – Fehlerdomänen bleiben sauber. Für stabile Agenten und Build-Pipelines ist die Miete eines NodeMini Cloud Mac Mini normalerweise die bessere Lösung: Behalten Sie das Gateway in einem VPS-Container und verlagern Sie schwere Arbeit an bestellbare Ausführungsknoten, anstatt die falsche Ebene zu patchen.

FAQ

FAQ

Ja – aufgeteilt nach Umgebung (Staging Compose, Prod Systemd) oder nach Dienst. Teilen Sie den Listen+Tunnel-Vertrag, damit nie zwei Gateways um denselben Loopback-Port kämpfen. Weitere OpenClaw-Beiträge:Kategoriefilter.

Überprüfendocker logsund ob der Gesundheitsbefehl immer noch mit den neuen Bildpfaden übereinstimmt; Überprüfen Sie die Volume-Berechtigungen und die Umgebung. Weitere Informationen finden Sie hierMietpreisefür Remote-Mac-Knoten.

Durchsuchen Sie dieHilfecenterfür SSH/VNC und Netzwerk. Überprüfen Sie für Container-Netzwerke auch die Host-Firewall-Regeln unddocker network.