Community-Lösung

Portainer-Stack schlägt unter ZimaOS fehl: Zuerst relative Volume-Pfade prüfen

A ZimaOS user saw an error while creating a Portainer stack and initially suspected the host filesystem was read-only. The root cause was later identified as relative volume paths in docker-compose.yml.

Dieser Thread begann als Frage dazu, wie man ein schreibgeschütztes Dateisystem in ZimaOS deaktiviert, aber das war nicht das eigentliche Problem. Nach der Überprüfung des Stacks stellte der ursprüngliche Verfasser fest, dass die Compose-Datei relative Volume-Pfade verwendete.

Diese Unterscheidung ist wichtig, weil das Ändern von Berechtigungen im Host-Dateisystem oder das erneute Einhängen von Systempfaden in diesem Fall die falsche Lösung gewesen wäre.

Portainer-Fehler bei der Stack-Bereitstellung, der den Benutzer dazu veranlasste, die Docker-Compose-Volume-Pfade zu überprüfen
Originaler Community-Screenshot der fehlgeschlagenen Portainer-Stack-Bereitstellung, bevor die Ursache in den relativen Volume-Pfaden erkannt wurde.

Compose-Datei überprüfen, bevor ZimaOS geändert wird

Wenn ein Container-Stack einen Pfad nicht erstellen oder beschreiben kann, sollte zunächst festgestellt werden, was die Compose-Datei in den Container einbindet. Ein Bind-Mount kann auf einen Host-Pfad verweisen, während ein benanntes Volume von Docker verwaltet wird. Die aktuellen Docker-Compose-Volume-Regeln weisen darauf hin, dass relative Host-Pfade vom Speicherort des Compose-Projekts aus aufgelöst werden.

Bei einem selbst gehosteten NAS ist ein expliziter persistenter Pfad oft leichter nachzuvollziehen als ein mehrdeutiger relativer Pfad, da überprüft werden kann, ob das Quellverzeichnis tatsächlich existiert und beschreibbar ist.

Warum die Annahme eines schreibgeschützten Dateisystems irreführend war

Ein tatsächliches Problem mit einem schreibgeschützten Dateisystem betrifft normalerweise mehr als einen Compose-Pfad und sollte anhand des tatsächlichen Mount-Status und der Systemprotokolle diagnostiziert werden. In diesem Thread musste der Benutzer keinen Schutzmechanismus von ZimaOS deaktivieren. Stattdessen korrigierte er seine Konfiguration der relativen Volume-Pfade.

Was die Community vorgeschlagen hat

Bevor die eigentliche Ursache bekannt war, schlug eine Antwort aus der Community vor, den Entwicklermodus von ZimaOS zu öffnen, das Web-Terminal als Root zu verwenden und das erforderliche Verzeichnis manuell zu erstellen. Das kann nützlich sein, wenn der vorgesehene Host-Pfad tatsächlich nicht existiert, sollte aber erst nach der Überprüfung des Compose-Pfads erfolgen und diese nicht ersetzen.

Eine sicherere Reihenfolge bei der Fehlersuche

  1. Alle volumes:-Einträge in der Compose-Datei überprüfen.
  2. Feststellen, ob jede Quelle ein benanntes Volume, ein absoluter Host-Pfad oder ein relativer Pfad ist.
  3. Bestätigen, dass das erwartete Host-Verzeichnis existiert.
  4. Bestätigen, dass der Container nicht ausdrücklich mit :ro oder read_only: true eingebunden ist.
  5. Den Mount-Status des Host-Dateisystems nur dann untersuchen, wenn der gleiche Schreibfehler außerhalb der Container-Konfiguration weiterhin auftritt.

Aktueller Docker- und Portainer-Kontext

Für aktuelle ZimaOS-Bereitstellungen bietet die Seite zu den Portainer-Hardwareanforderungen den umfassenderen Kontext zu Persistenz und Laufzeit von Portainer, während die Seite zur ersten Docker-Anwendung erklärt, wie ZimaOS persistente Daten in Container einbindet. Wenn ein Mount tatsächlich schreibgeschützt und nicht lediglich falsch adressiert ist, unterscheidet die Anleitung zur Behebung schreibgeschützter Docker-Bind-Mounts zwischen einem konfigurierten :ro-Mount und einem Host-Dateisystem, das keine Schreibvorgänge mehr akzeptiert.

Die Docker-Regeln für Bind-Mounts bestätigen, dass Bind-Mounts Host-Quellpfade verwenden können und dass das schreibgeschützte Verhalten ausdrücklich mit readonly oder ro gesteuert wird. Das offizielle Verhalten von Portainer-Stacks definiert einen Portainer-Stack als eine zusammengehörige Gruppe von Diensten. Daher sollte die Compose-Datei überprüft werden, bevor der ZimaOS-Host selbst geändert wird.

Fazit

Der gemeldete Fehler bei der Portainer-Stack-Bereitstellung wurde nicht durch das Deaktivieren eines schreibgeschützten Dateisystems behoben. Der Benutzer korrigierte relative Volume-Pfade in docker-compose.yml. Bei ähnlichen Container-Fehlern unter ZimaOS sollte die Mount-Definition in Compose überprüft werden, bevor Änderungen am Dateisystem des Hosts vorgenommen werden.