Rozwiązanie Discordu

CasaOS nie może załadować aplikacji po aktualizacji Dockera do wersji 29: jak to naprawić

A CasaOS feedback thread surfaced a GitHub issue where Docker updates on Ubuntu caused installed apps to disappear from the CasaOS Web UI.

Krótka odpowiedź: jeśli po aktualizacji Dockera CasaOS nagle wyświetla komunikat „Nie udało się załadować aplikacji”, przed ponowną instalacją CasaOS sprawdź wersję API silnika Dockera. Docker 29.0 podniósł minimalną wersję API demona do v1.44, co spowodowało problemy ze starszymi klientami CasaOS App Management, które nadal żądały starszej wersji API. Docker 29.3 ponownie obniżył minimalną wersję do v1.40, dlatego właściwe rozwiązanie zależy od faktycznie używanej kompilacji Dockera.

Najpierw sprawdź wersję Dockera

Uruchom:

wersja dockera

Sprawdź wersję serwera oraz pola wersji API. Negocjowanie API Dockera pozwala klientom i demonom uzgodnić wspólną wersję API, ale tylko w zakresie wersji nadal akceptowanych przez demona.

Ta granica zmieniła się w Dockerze 29. W Dockerze 29.0 minimalna wersja API demona została podniesiona do v1.44. W Dockerze 29.3.0 minimalna wersja została obniżona do v1.40. Minimalna wersja API Dockera 29 zależy więc od wersji.

Wersja Dockera Minimalna wersja API silnika Co to oznacza dla CasaOS
29.0.x–29.2.x v1.44 Starszy klient CasaOS App Management może zostać odrzucony jako zbyt stary.
29.3.0+ v1.40 Pierwotny wymóg wersji v1.44 nie jest już takim samym ograniczeniem, więc przed zastosowaniem starego obejścia sprawdź dzienniki.

Potwierdź, że rzeczywistym błędem jest niezgodność API

Nie zakładaj, że każdy pusty App Store jest problemem zgodności z Dockerem 29. Sprawdź dziennik usługi:

journalctl -u casaos-app-management --no-pager -n 100

Kluczowy błąd wygląda tak:

Wersja klienta 1.43 jest zbyt stara.
Minimalna obsługiwana wersja API to 1.44

Ten komunikat jest mocnym dowodem na to, że awaria interfejsu wynika z niezgodności z interfejsem API Dockera, a nie z problemu z katalogiem App Store. Wiele zgłoszeń dotyczących CasaOS odtworzyło ten sam objaw po aktualizacjach Dockera, w tym pierwotne zgłoszenie błędu po aktualizacji Dockera.

Dlaczego CasaOS może przestać działać, gdy sam Docker nadal działa

CasaOS nie zastępuje Docker Engine. Usługa zarządzania aplikacjami CasaOS komunikuje się z Dockerem za pośrednictwem interfejsu API silnika. Kontenery Dockera mogą nadal działać prawidłowo, nawet gdy interfejs CasaOS utraci możliwość odpytywania kontenerów, tworzenia ich lub zarządzania nimi.

Dlatego polecenia takie jak:

docker ps
docker images

może nadal działać, nawet gdy CasaOS informuje, że nie może załadować aplikacji. Interfejs wiersza poleceń Dockera i funkcja zarządzania aplikacjami CasaOS to oddzielni klienci API i nie muszą żądać tej samej wersji API.

Szersze omówienie zależności między CasaOS a Dockerem znajduje się w zarządzaniu Dockerem w CasaOS, gdzie CasaOS pełni funkcję wizualnej warstwy nad aplikacjami opartymi na Dockerze.

Napraw starsze instalacje Dockera 29 za pomocą obejścia interfejsu API

W kompilacjach Dockera 29, które nadal wymagają interfejsu API w wersji 1.44, jednym ze sprawdzonych obejść jest obniżenie minimalnej wersji akceptowanej przez demona za pomocą systemd. Zgłoszona poprawka zgodności CasaOS wykorzystuje:

sudo systemctl edit docker.service

Dodaj:

[Service]
Environment=DOCKER_MIN_API_VERSION=1.24

Następnie uruchom ponownie Dockera:

sudo systemctl daemon-reload
sudo systemctl restart docker

Zweryfikuj obejście:

systemctl show docker | grep DOCKER_MIN_API_VERSION

To obejście zgodności, a nie powód, aby bezterminowo pozostawiać serwer na starej wersji stosu aplikacji. Celowo umożliwia starszym klientom API komunikację z demonem.

Sprawdź, czy aktualny instalator już to naprawia

Opiekunowie CasaOS poinformowali później, że skrypt instalacyjny został zaktualizowany tak, aby instalować aktualny Docker Engine i stosować obejście zgodności interfejsu API Dockera dla nowszych wersji. Ta informacja od opiekunów znajduje się w aktualizacji zgodności instalatora.

Jeśli instalacja CasaOS pochodzi sprzed tej zmiany, ponowne uruchomienie aktualnego oficjalnego instalatora może być lepszym rozwiązaniem niż bezterminowe utrzymywanie ręcznego obejścia. Przed wprowadzeniem zmian na istniejącym serwerze wykonaj kopię zapasową ważnych danych aplikacji i niestandardowej konfiguracji.

Kiedy nie używać starego obejścia

Jeśli wersja dockera wskazuje, że Docker ma wersję 29.3 lub nowszą, a minimalna wersja API to już v1.40 — nie wymuszaj jej bez zastanowienia DOCKER_MIN_API_VERSION=1.24. Najpierw sprawdź log CasaOS App Management. Inny błąd wymaga innego rozwiązania.

Na przykład błędy DNS, problemy z dostępem do rejestru, uszkodzone metadane aplikacji lub zatrzymana usługa CasaOS mogą powodować wyświetlanie pustego sklepu z aplikacjami, mimo że problem nie dotyczy wersji API.

Zweryfikuj CasaOS po naprawie

Po ponownym uruchomieniu Dockera sprawdź wszystkie trzy warstwy:

  1. Docker: polecenie docker ps działa normalnie.
  2. Usługa CasaOS: systemctl status casaos-app-management ma status aktywny i nie rejestruje już niezgodności wersji API.
  3. Interfejs internetowy: zainstalowane aplikacje i sklep z aplikacjami znów się ładują.

Jeśli Docker działa, ale CasaOS App Management nadal nie działa, po ponownym uruchomieniu Dockera zrestartuj tę usługę:

sudo systemctl restart casaos-app-management

Dla użytkowników porównujących stosy aplikacji platforma aplikacji ZimaOS pokazuje aktualny model aplikacji instalowanych jednym kliknięciem. Jeśli szukasz kompaktowego komputera x86 do testowania Dockera i CasaOS, ZimaBoard 2 jest oficjalnie wymieniony jako zgodny z systemem CasaOS.

FAQ

Czy Docker 29 zawsze powoduje awarię CasaOS?

Nie. Docker 29.0 podniósł minimalną wersję API Engine do v1.44, ale Docker 29.3.0 obniżył ją do v1.40. Przed wyborem obejścia sprawdź dokładną wersję Dockera i log CasaOS.

Dlaczego moje kontenery nadal działają?

Kontenery są zarządzane przez Docker Engine. CasaOS App Management to oddzielny klient. Jego połączenie z API może nie działać, podczas gdy demon i istniejące kontenery nadal działają.

Czy mam obniżyć wersję Dockera?

Nie automatycznie. Wymuszenie wersji API było skutecznym obejściem dla instalacji Dockera 29, których dotyczył ten problem, a późniejsze wydania Dockera ponownie zmieniły minimalną wersję API. Obniżenie wersji to tylko jedna z opcji, gdy nie można przywrócić zgodności w bezpieczny sposób.

Który log potwierdza, że to ten sam problem?

Poszukaj błędu informującego, że API klienta Docker jest zbyt stare, a demon wymaga API w wersji v1.44 lub nowszej. Bez takiego potwierdzenia kontynuuj diagnostykę zamiast zakładać, że chodzi o problem z Dockerem 29.