Rozwiązanie społecznościowe

Stos Portainera nie działa w ZimaOS: najpierw sprawdź względne ścieżki woluminów

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.

Ten wątek zaczął się od pytania o wyłączenie systemu plików tylko do odczytu w ZimaOS, ale nie to było prawdziwym problemem. Po sprawdzeniu stosu autor oryginalnego wpisu odkrył, że plik Compose używał względnych ścieżek woluminów.

To rozróżnienie ma znaczenie, ponieważ zmiana uprawnień systemu plików hosta lub ponowne zamontowanie ścieżek systemowych byłoby w tym przypadku niewłaściwym rozwiązaniem.

Błąd wdrażania stosu w Portainerze, który skłonił użytkownika do sprawdzenia ścieżek woluminów Docker Compose
Oryginalny zrzut ekranu społeczności przedstawiający nieudaną próbę wdrożenia stosu w Portainerze, zanim zidentyfikowano przyczynę związaną ze względnym woluminem.

Sprawdź plik Compose przed wprowadzeniem zmian w ZimaOS

Gdy stos kontenerów nie może utworzyć ścieżki ani zapisywać w niej danych, najpierw ustal, co plik Compose montuje w kontenerze. Montowanie wiązane może wskazywać ścieżkę na hoście, natomiast nazwany wolumin jest zarządzany przez Dockera. Aktualne zasady dotyczące woluminów Docker Compose wskazują, że względne ścieżki na hoście są rozwiązywane względem lokalizacji projektu Compose.

W przypadku samodzielnie hostowanego serwera NAS jawna, trwała ścieżka jest często łatwiejsza do zrozumienia niż niejednoznaczna ścieżka względna, ponieważ można sprawdzić, czy katalog źródłowy rzeczywiście istnieje i jest zapisywalny.

Dlaczego założenie o trybie tylko do odczytu było mylące

Prawdziwy problem z systemem plików tylko do odczytu zwykle dotyczy więcej niż jednej ścieżki Compose i należy go diagnozować na podstawie rzeczywistego stanu montowania oraz dzienników systemowych. W tym wątku użytkownik nie musiał wyłączać mechanizmu ochrony ZimaOS. Zamiast tego poprawił konfigurację względnych woluminów.

Co sugerowała społeczność

Zanim poznano główną przyczynę, jedna z odpowiedzi społeczności sugerowała włączenie trybu deweloperskiego ZimaOS, użycie terminala internetowego jako root i ręczne utworzenie wymaganego katalogu. Może to być przydatne, gdy zamierzona ścieżka na hoście rzeczywiście nie istnieje, ale najpierw należy sprawdzić ścieżkę Compose, a nie zastępować nią tę kontrolę.

Bezpieczniejsza kolejność diagnozowania

  1. Sprawdź każdy wpis volumes: w pliku Compose.
  2. Ustal, czy każde źródło jest nazwanym woluminem, bezwzględną ścieżką na hoście czy ścieżką względną.
  3. Potwierdź, że oczekiwany katalog na hoście istnieje.
  4. Potwierdź, że kontener nie jest jawnie montowany z użyciem :ro ani read_only: true.
  5. Dopiero jeśli ten sam błąd zapisu nadal występuje poza konfiguracją kontenera, zbadaj stan montowania systemu plików hosta.

Aktualny kontekst Dockera i Portainera

W przypadku aktualnych wdrożeń ZimaOS strona wymagań sprzętowych Portainera przedstawia szerszy kontekst trwałości danych i środowiska uruchomieniowego Portainera, natomiast strona pierwszej aplikacji Docker wyjaśnia, jak aplikacje ZimaOS mapują trwałe dane do kontenerów. Jeśli montowanie jest rzeczywiście tylko do odczytu, a nie tylko wskazuje błędną ścieżkę, artykuł jak naprawić montowanie wiązane Dockera, które nagle stało się tylko do odczytu rozróżnia skonfigurowane montowanie :ro od sytuacji, w której system plików hosta przestał przyjmować zapisy.

Zasady montowań wiązanych Dockera potwierdzają, że montowania wiązane mogą używać ścieżek źródłowych na hoście, a tryb tylko do odczytu jest jawnie kontrolowany za pomocą readonly lub ro. Oficjalne zasady działania stosów Portainera definiują stos Portainera jako powiązany zestaw usług, dlatego przed zmianą samego hosta ZimaOS należy sprawdzić plik Compose.

Podsumowanie

Zgłoszony błąd stosu w Portainerze nie został rozwiązany przez wyłączenie systemu plików tylko do odczytu. Użytkownik poprawił względne ścieżki woluminów w pliku docker-compose.yml. W przypadku podobnych błędów kontenerów w ZimaOS przed wprowadzeniem zmian w systemie plików hosta należy sprawdzić definicję montowań w Compose.