Stos Compose może dołączyć nowy pusty wolumin nazwany, gdy podczas ponownego wdrożenia zmieni się nazwa woluminu przypisana do projektu lub nie będzie można znaleźć oryginalnego woluminu.
Stare dane mogą nadal znajdować się w innym woluminie Dockera, podczas gdy odtworzona usługa montuje nowo wygenerowany wolumin w tej samej ścieżce kontenera. Typowe przyczyny to zmiana nazwy stosu lub projektu, zmiana nazwy klucza woluminu, usunięcie za pomocą polecenia kasującego woluminy, usunięcie deklaracji zewnętrznego woluminu, wdrożenie za pomocą innego menedżera albo jawna nazwa woluminu, która obecnie wskazuje inne miejsce. Przed przywróceniem danych lub zainicjowaniem aplikacji zinwentaryzuj zarówno zamontowany wolumin, jak i osierocone potencjalne woluminy.
Zidentyfikuj dokładny wolumin zamontowany przez nowy kontener
Sprawdź punkty montowania uruchomionego kontenera i zanotuj nazwę woluminu, sterownik, punkt montowania, etykiety, czas utworzenia, miejsce docelowe w kontenerze oraz tryb odczytu i zapisu. Porównaj je z zapisami sprzed ponownego wdrożenia.
Polecenie docker volume inspect w Ubuntu umożliwia sprawdzenie tożsamości woluminu, dzięki czemu można odróżnić nowy pusty wolumin od starszego, niezamontowanego woluminu o podobnej nazwie.
Nie kopiuj danych do nowego woluminu, dopóki nie znajdziesz oryginalnego. Uruchomienie aplikacji może utworzyć nową bazę danych i sprawić, że miejsce docelowe będzie wyglądało na celowo zainicjowane.
Sprawdź, czy zmieniła się nazwa projektu Compose
Porównaj starą i nową nazwę projektu, nazwę stosu, katalog Compose, opcję -p, zmienną COMPOSE_PROJECT_NAME, wpis name: na najwyższym poziomie oraz menedżera wdrożenia.
Docker wyjaśnia, że Compose zwykle nadaje woluminowi zakres w postaci nazwy projektu oraz klucza woluminu, chyba że skonfigurowano jawną nazwę lub wyszukiwanie zewnętrznego woluminu.
Przeniesienie tego samego pliku Compose do innego katalogu może więc utworzyć drugi projekt i drugi wolumin, nawet gdy nazwy usługi i klucza woluminu pozostają bez zmian.
Zweryfikuj ustawienia stałej nazwy i zewnętrznego woluminu
Porównaj definicję woluminu na najwyższym poziomie przed ponownym wdrożeniem i po nim. Sprawdź name:, external:, opcje sterownika, zmienne interpolacji oraz to, czy oczekiwany wolumin istnieje.
Samouczek Microsoftu dotyczący Docker Compose wskazuje, że nazwane woluminy zachowują dane niezależnie od wymiany kontenera, dlatego nowy pusty stan zwykle oznacza, że zamontowano wolumin o innej tożsamości albo stary wolumin został usunięty.
Oznacz wolumin jako zewnętrzny tylko wtedy, gdy jego cykl życia jest celowo zarządzany poza stosem. Compose powinien wyraźnie zgłosić błąd, gdy zewnętrznego woluminu brakuje, zamiast po cichu tworzyć zastępczy.
Sprawdź, czy czyszczenie nie usunęło oryginalnego woluminu
Przejrzyj logi wdrożeń, skrypty, działania w interfejsie, zadania przycinania oraz polecenia usuwania woluminów. Porównaj czas utworzenia woluminu z momentem ponownego wdrożenia.
Red Hat dokumentuje, że nazwane woluminy zarządzane przez kontenery mają oddzielne lokalizacje przechowywania od warstw zapisywalnych kontenerów, dlatego usunięcie kontenera i usunięcie jego nazwanego woluminu to różne zdarzenia cyklu życia.
Jeśli oryginalnego woluminu nie ma, zatrzymaj automatyczne uruchamianie i przywracaj dane wyłącznie ze zweryfikowanej kopii zapasowej. Nie zakładaj, że pusty wolumin zastępczy zawiera możliwą do odzyskania usuniętą warstwę.
Porównaj tożsamość menedżera stosu i metodę wdrożenia
Zapisz, czy stos uruchomiono za pomocą interfejsu CLI, Portainera, sklepu z aplikacjami NAS, wdrożenia Git czy innego narzędzia automatyzacji. Porównaj nazwę stosu i wartości środowiskowe przechowywane przez ten menedżer.
Portainer wymaga opisowej nazwy stosu podczas wdrażania, a tożsamość zarządzana przez ten menedżer może różnić się od nazwy projektu opartej na katalogu, używanej przez ręczne polecenie Compose.
Awaryjne ręczne uruchomienie może więc utworzyć zasoby z innym prefiksem projektu. Wybierz jednego właściciela wdrożenia i udokumentuj rozwiązywane przez niego nazwy woluminów.
Wyklucz ukrycie danych pod punktem montowania nowego woluminu
Zatrzymaj kontener i sprawdź obraz lub ścieżkę powiązania bez dołączonego nazwanego woluminu, używając tymczasowego testu. Ustal, czy uruchamianie zapisało dane w warstwie kontenera, zanim wolumin został zamontowany.
Podręcznik montowania systemu Linux wyjaśnia, że montowanie ukrywa istniejącą wcześniej zawartość katalogu, dlatego dane mogą wydawać się zaginione, gdy nowy pusty wolumin przykrywa pliki utworzone w obrazie lub warstwie zapisywalnej.
Nie łącz bezkrytycznie ukrytej warstwy ze starym trwałym woluminem. Ustal, który stan jest źródłem prawdy, i użyj obsługiwanej przez aplikację metody odzyskiwania.
Podłącz oryginalny wolumin w kontrolowanym teście
Zatrzymaj stos, wykonaj kopię zapasową obu potencjalnych woluminów, podłącz oryginalny do tymczasowego kontenera lub usługi pod tymczasową ścieżką i sprawdź pliki aplikacji, tożsamość bazy danych, właścicieli oraz znaczniki czasu.
Przewodnik ZimaSpace dotyczący przenoszenia danych kontenera bez zakłócania punktów montowania przedstawia powiązany proces mapowania ścieżek; ten artykuł koncentruje się na tożsamości nazwanych woluminów przypisanych do projektu.
Problem zostaje rozwiązany, gdy właściwy stary wolumin jest zamontowany pod stałą jawną lub zewnętrzną nazwą, a kolejne ponowne wdrożenia korzystają z niego bez tworzenia kolejnego pustego woluminu.
Często zadawane pytania
Czy pusty nazwany wolumin oznacza, że stare dane zostały usunięte?
Niekoniecznie. Stary wolumin może nadal istnieć pod innym prefiksem projektu lub jawną nazwą, podczas gdy nowy kontener korzysta z innego pustego woluminu.
Czy zmiana nazwy folderu Compose może utworzyć nowy wolumin?
Tak. Jeśli nazwa projektu nie jest ustalona, Compose może wyprowadzić ją z katalogu projektu i utworzyć zasoby z innymi prefiksami.
Czy ważne woluminy należy oznaczać jako zewnętrzne?
Woluminy zewnętrzne mogą uniemożliwić stosowi zarządzanie ich cyklem życia podczas usuwania, ale wymagają świadomego utworzenia, nazwania, tworzenia kopii zapasowych i kontroli wdrożenia.
Wsparcie i wskazówki
Więcej do przeczytania

Przewodnik po pamięci masowej nagrywania telewizji na żywo: pojemność, przechowywanie i czyszczenie
Zmierz rzeczywiste nagrania, zarezerwuj zapas, połącz limity wieku i pojemności oraz potwierdź, że najstarszy kwalifikujący się program zostanie usunięty, zanim pamięć się zapełni.

Proces odzyskiwania metadanych multimediów domowych po przywróceniu bazy danych
Zabezpiecz przywrócony stan, zweryfikuj tożsamość multimediów i ścieżki, a następnie napraw brakujące grafiki lub dopasowania w pilotażowej bibliotece przed wprowadzeniem szeroko zakrojonych zmian metadanych.

Lista zgodności klientów Jellyfin z dźwiękiem, obrazem i napisami
Testuj reprezentatywne pliki, zmieniając jedną zmienną naraz, i rejestruj dla każdego klienta: bezpośrednie odtwarzanie, remultipleksowanie, konwersję dźwięku, transkodowanie wideo lub niepowodzenie.

