Dlaczego stos Compose dołącza nowy pusty nazwany wolumin po ponownym wdrożeniu?

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.

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

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.