Jak naprawić powiązanie montowania Dockera, które nagle staje się tylko do odczytu

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Dowiązanie Docker staje się tylko do odczytu, gdy Docker otrzyma ścieżkę tylko do odczytu lub system plików hosta przestanie akceptować operacje zapisu.

Ponieważ dowiązanie ujawnia ścieżkę hosta bezpośrednio wewnątrz kontenera, kontener nie może samodzielnie naprawić problemu z dyskiem, systemem plików, flagą montowania ani zasadami bezpieczeństwa. Najbezpieczniejszy sposób przywrócenia działania to zatrzymanie operacji zapisu, porównanie montowania kontenera z montowaniem hosta, ustalenie, czy tryb tylko do odczytu został skonfigurowany lub wywołany przez błąd, a następnie przywrócenie sprawności pamięci masowej przed ponownym uruchomieniem aplikacji.

Potwierdź, która ścieżka jest tylko do odczytu

Wykonaj niegroźny test zapisu wewnątrz kontenera w miejscu docelowym dowiązania oraz kolejny test zapisu na hoście w ścieżce źródłowej. Zapisz dokładny komunikat błędu, zamiast zakładać, że każda odmowa dostępu oznacza system plików tylko do odczytu.

Przypadek opisany na forum Dockera pokazuje, że dowiązanie nadrzędne tylko do odczytu może uniemożliwić Dockerowi utworzenie zagnieżdżonego punktu montowania, ponieważ wymagany katalog nie może zostać utworzony w nadrzędnym systemie plików tylko do odczytu.

Jeśli host może zapisywać, ale kontener nie, sprawdź opcje montowania Dockera i mechanizmy kontroli bezpieczeństwa. Jeśli oba zapisy kończą się błędem systemu plików tylko do odczytu, przestań zmieniać użytkowników kontenera i przenieś diagnostykę na montowanie hosta oraz urządzenie pamięci masowej.

Sprawdź efektywne flagi montowania Dockera

Sprawdź konfigurację uruchomionego kontenera, a nie tylko bieżący plik Compose. Potwierdź źródło, miejsce docelowe, tryb propagacji oraz to, czy montowanie jest oznaczone jako tylko do odczytu przez :ro, składnię długą, plik zastępujący lub narzędzie wdrożeniowe.

Zgłoszenie dotyczące klienta Dockera opisuje przypadki, w których zamontowane ścieżki wyglądały na tylko do odczytu, ponieważ konfiguracja środowiska uruchomieniowego różniła się od zamierzonej konfiguracji z dostępem do zapisu. Najważniejszym dowodem jest efektywny tryb montowania przypisany do uruchomionego kontenera.

Jeśli montowanie ma być celowo tylko do odczytu, usuń tę flagę wyłącznie wtedy, gdy aplikacja rzeczywiście wymaga zapisu. Po zmianie deklaracji utwórz kontener ponownie, ponieważ edycja pliku Compose nie zmienia wstecznie istniejącego montowania.

Ustal, czy host ponownie zamontował system plików w trybie tylko do odczytu

Sprawdź tabelę montowań hosta, dziennik jądra, dziennik pamięci masowej oraz stan systemu plików pod kątem błędów wejścia-wyjścia, awarii dziennika, błędów sum kontrolnych, resetów urządzenia lub ochronnego ponownego montowania. Nie wymuszaj ponownego montowania z dostępem do zapisu, zanim nie zrozumiesz, dlaczego została aktywowana ochrona.

Przypadek opisany w pomocy technicznej Unraid przedstawia awarię danych aplikacji Dockera po przejściu systemu plików w tryb tylko do odczytu, w tym błędy podczas tworzenia katalogów Plex. Taki wzorzec wskazuje na awarię systemu plików hosta, a nie ustawienie uprawnień kontenera.

Zatrzymaj dotknięte problemem kontenery i zachowaj dane diagnostyczne. Napraw dysk, pulę, kabel, system plików lub dziennik za pomocą obsługiwanego przez platformę procesu konserwacji, a następnie potwierdź, że ścieżka hosta działa prawidłowo, zanim ponownie zezwolisz kontenerom baz danych lub multimediów na zapis.

-15% OFF

Sprawdź zagnieżdżone i nakładające się montowania

Wyświetl wszystkie dowiązania i nazwane woluminy, których miejsce docelowe znajduje się wewnątrz innego zamontowanego katalogu. Nakładające się montowania mogą ukrywać katalogi, dziedziczyć nieoczekiwane zachowanie dostępu lub wymagać od Dockera utworzenia punktu montowania pod nadrzędnym katalogiem tylko do odczytu.

Dyskusja na Server Fault wyjaśnia, że nałożenie montowania z dostępem do zapisu i szerszego montowania tylko do odczytu w powiązanych ścieżkach kontenera może prowadzić do mylących rezultatów. Ponieważ ta domena jest już używana w innym miejscu tego zestawu, praktyczna zasada polega na zmapowaniu całego drzewa miejsc docelowych przed zmianą uprawnień.

Utwórz wymagane katalogi hosta przed uruchomieniem kontenera, unikaj montowania zapisywalnego katalogu podrzędnego pod katalogiem nadrzędnym tylko do odczytu, gdy środowisko uruchomieniowe musi go utworzyć, i przechowuj ścieżki trwałe jawnie w Compose. Po uproszczeniu drzewa montowań utwórz kontener ponownie.

Oddziel stan tylko do odczytu od uprawnień i zasad bezpieczeństwa

Porównaj błąd z testu zapisu z właścicielem katalogu źródłowego, jego trybem, listą ACL, etykietą SELinux, profilem AppArmor oraz identyfikatorem użytkownika kontenera. Odmowa dostępu i system plików tylko do odczytu to różne awarie, które wymagają różnych napraw.

Poradnik rozwiązywania problemów z pamięcią masową dzieli przypadki woluminów tylko do odczytu na flagi montowania, błędy systemu plików, konteksty bezpieczeństwa i problemy ze sterownikiem pamięci masowej. Taka klasyfikacja pomaga uniknąć bezrefleksyjnej reakcji w postaci chmod 777 na stan pamięci masowej tylko do odczytu.

Jeśli uprawnienia są nieprawidłowe, popraw właściciela lub listy ACL na hoście, używając docelowych identyfikatorów UID i GID kontenera. Jeśli sam system plików jest tylko do odczytu, zmiany uprawnień zakończą się niepowodzeniem i nie należy ich stosować zamiast naprawy systemu plików.

Uruchom aplikację ponownie dopiero po pomyślnym teście zapisu na hoście

Utwórz, zsynchronizuj, odczytaj i usuń plik tymczasowy w ścieżce hosta, a następnie powtórz test w krótkotrwałym kontenerze testowym, używając tej samej deklaracji montowania i użytkownika. Potwierdź, że oczekiwany system plików pozostaje zamontowany po ponownym uruchomieniu.

Poradnik ZimaSpace dotyczący znajdowania zależności powodującej pętlę restartów kontenera jest kolejnym krokiem, jeśli aplikacja nadal zapętla się po przywróceniu możliwości zapisu w pamięci masowej.

Naprawę można uznać za zakończoną dopiero wtedy, gdy system plików hosta działa prawidłowo, efektywne montowanie Dockera jest zgodnie z założeniami dostępne do odczytu i zapisu, aplikacja może aktualizować swoje trwałe pliki, a podczas ciągłego użytkowania nie pojawiają się nowe błędy wejścia-wyjścia ani systemu plików.

Wsparcie i wskazówki

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.