Izolacja kontenerów zmienia dostęp Jellyfin do zasobów, kontrolując, które pliki, użytkownicy, urządzenia, sieci i limity zasobów są widoczne w jego środowisku uruchomieniowym.
Kontener może uruchomić się pomyślnie, a mimo to Jellyfin może widzieć pustą ścieżkę multimediów, nie mieć uprawnień do urządzenia renderującego, nie rozwiązywać nazwy usługi nadrzędnej lub podlegać limitowi niższemu niż dostępna pamięć hosta. Kluczowe jest rozróżnienie widoczności od pojemności: przestrzenie nazw i mapowania określają, do czego proces może dotrzeć, natomiast cgroups i współdzielony host decydują o tym, ile procesora, pamięci i operacji wejścia-wyjścia faktycznie może zużyć.
Przestrzenie nazw montowania decydują, które systemy plików Jellyfin może widzieć
Kontener nie dziedziczy automatycznie pełnego widoku systemu plików hosta. Montowania bind lub woluminy celowo udostępniają wybrane katalogi pod określonymi ścieżkami, dlatego Jellyfin widzi bibliotekę multimediów tylko wtedy, gdy zamierzona ścieżka hosta zostanie zamontowana w przestrzeni nazw, w której działa proces. Literówka może utworzyć prawidłowy, pusty katalog, który wygląda jak brak multimediów, a nie jak nieudane uruchomienie kontenera.
Izolacja kontenerów w Linuksie opiera się na przestrzeniach nazw montowania, które zapewniają procesom ograniczony widok systemu plików. Model przestrzeni nazw montowania wyjaśnia, dlaczego ścieżka hosta może istnieć i być czytelna poza kontenerem, a jednocześnie pozostawać całkowicie nieobecna wewnątrz niego; Jellyfin musi korzystać ze ścieżki widocznej w swojej przestrzeni nazw, a nie ze ścieżki powłoki administratora na hoście.
Granica dotyczy trwałości i tożsamości. Montowanie może być widoczne, ale nadal tylko do odczytu, należeć do niewłaściwego UID lub być niedostępne podczas uruchamiania, ponieważ system plików sieciowych pojawił się z opóźnieniem. Zanim uznasz problem za problem z biblioteką Jellyfin, sprawdź ścieżkę, typ montowania, zamiar dotyczący odczytu/zapisu oraz jeden znany plik z wnętrza działającego kontenera.
Mapowanie użytkowników i grup określa, na co pozwalają widoczne ścieżki
Widoczność systemu plików nie oznacza uprawnień. Proces Jellyfin ma efektywną tożsamość użytkownika i grupy, a system plików hosta ocenia dostęp na podstawie tej tożsamości lub ponownie mapowanej przestrzeni nazw użytkowników. Kontener może wyświetlać zawartość katalogu, ale nie móc tworzyć plików pamięci podręcznej, aktualizować napisów ani odczytywać chronionych multimediów, ponieważ mapowane dane uwierzytelniające nie pasują do reguł własności i ACL.
Przestrzenie nazw mogą ponownie mapować tożsamości użytkowników i grup, a Docker może również uruchamiać aplikację z określonego konta nieuprzywilejowanego. Wyjaśnienie izolacji użytkownika w kontenerach pokazuje, dlaczego ograniczenie uprawnień poprawia separację, ale może wymagać świadomego ustawienia własności lub dostępu grupowego do dokładnie tych katalogów, których potrzebuje Jellyfin.
Granica dotyczy zasady najmniejszych uprawnień. Nadanie szerokich uprawnień w całym hoście może sprawić, że test zakończy się powodzeniem, ale jednocześnie osłabi izolację i ukryje rzeczywistą niezgodność. Przyznaj tylko minimalny dostęp do odczytu lub zapisu wymagany dla ścieżek multimediów, konfiguracji, pamięci podręcznej i transkodowania, a następnie odtwórz kontener, aby potwierdzić, że model uprawnień działa po wdrożeniu, zamiast zależeć od ręcznej zmiany w powłoce.
Mapowanie urządzeń decyduje o dostępności akceleracji sprzętowej
GPU może być obecne na hoście, a mimo to niedostępne dla Jellyfin, ponieważ węzły urządzeń i interfejsy sterowników znajdują się poza dozwolonym widokiem kontenera. Akceleracja sprzętowa zależy więc zarówno od możliwości hosta, jak i od udostępnienia urządzeń środowisku uruchomieniowemu. Jeśli urządzenie nie jest zmapowane lub proces nie może go otworzyć, Jellyfin może przełączyć się na ścieżki programowe, radykalnie zmieniając obciążenie CPU bez żadnej zmiany fizycznej maszyny.
Wskazówki Jellyfin dotyczące wyboru sprzętu podkreślają, że obsługa silnika multimedialnego i użyteczna akceleracja mają kluczowe znaczenie dla wydajności transkodowania. Granica akceleracji sprzętowej staje się kwestią kontenera, gdy usługa jest izolowana: właściwa generacja GPU nie ma znaczenia, jeśli środowisko uruchomieniowe nie może uzyskać dostępu do wymaganego urządzenia lub interfejsu sterownika.
Granica awarii dotyczy potwierdzenia ścieżki, a nie oczekiwań wobec pulpitu nawigacyjnego. Sprawdź, czy urządzenie istnieje w kontenerze, czy użytkownik Jellyfin może je otworzyć oraz czy jedno reprezentatywne transkodowanie rzeczywiście wybiera zamierzoną ścieżkę sprzętową. Nie zwiększaj limitów CPU, aby kompensować programowy fallback, dopóki nie potwierdzisz widoczności zasobów.
Przestrzenie nazw sieciowych zmieniają osiągalność, ale nie tworzą dodatkowej przepustowości
Sieć mostkowana, sieć hosta, publikowane porty, nazwy DNS i sieci usług zmieniają sposób, w jaki Jellyfin dociera do klientów i zależności. Przestrzeń nazw sieciowych może izolować adresy i tablice routingu, przez co usługa osiągalna z hosta nie jest osiągalna z kontenera lub odwrotnie. Zmienia to ścieżki wykrywania i zależności bez zmiany fizycznego łącza Ethernet znajdującego się pod nimi.
Model stosu usług ZimaSpace opisuje, jak oddzielne usługi otrzymują własne tożsamości sieciowe i granice cyklu życia, nadal jednak zależą od jawnych tras i współdzielonych zasobów hosta. Granica sieci usług jest tu przydatna, ponieważ stan „uruchomiono” kontenera nie dowodzi, że Jellyfin może rozpoznać serwer proxy, dotrzeć do zdalnego montowania lub rozgłaszać adres oczekiwany przez klienta.
Granica dotyczy rozdzielenia warstw. Awarii DNS lub routingu nie należy diagnozować jako niewystarczającej przepustowości sieci, a przeciążonego łącza nadrzędnego nie należy naprawiać przez zmianę trybu przestrzeni nazw. Testuj rozwiązywanie nazw, osiągalność tras, nasłuchiwanie portów i dostarczaną przepustowość jako osobne obserwacje, aby wybrany tryb sieci odpowiadał rzeczywistej warstwie problemu.
Cgroups ograniczają zużycie, ale nie czynią zasobów hosta prywatnymi
Udziały CPU, limity pamięci i mechanizmy kontroli wejścia-wyjścia mogą powstrzymać jedną usługę przed nieograniczonym zużyciem zasobów hosta, ale nie zamieniają kontenera w oddzielny fizyczny serwer. Jellyfin nadal konkuruje z innymi obciążeniami o pamięć podręczną, kolejki pamięci masowej, interfejsy sieciowe, przepustowość pamięci, a czasem także o silniki akceleratorów. Limity określają maksymalną alokację i zasady planowania, a nie gwarantowaną, dedykowaną wydajność.
Model kontroli zasobów cgroups rozróżnia przestrzenie nazw i cgroups: przestrzenie nazw kontrolują widok procesów, a cgroups przydzielają lub ograniczają zasoby takie jak CPU, pamięć i wejście-wyjście. Wyjaśnia to, dlaczego prawidłowo izolowany kontener Jellyfin może nadal buforować, gdy inny kontener nasyca współdzielony dysk, lub dlaczego niski limit pamięci może wymuszać odzyskiwanie pamięci mimo wolnej pamięci RAM w innej części hosta.
Zweryfikuj izolację za pomocą dwóch testów: najpierw potwierdź widoczność z wnętrza kontenera, a następnie uruchom normalne obciążenie szczytowe i obserwuj, czy pierwszym wąskim gardłem stają się limity cgroup, czy przeciążenie hosta. Zachowaj tę granicę, gdy usługa pozostaje powtarzalna i przewidywalna; zmień ją, gdy wymagane urządzenia lub ścieżki są ukryte albo gdy limity uniemożliwiają rzeczywistemu obciążeniu utrzymanie terminów odtwarzania.
| Granica | Pytanie | Dowód |
|---|---|---|
| Montowanie | Czy Jellyfin widzi ścieżkę? | Znany plik jest widoczny wewnątrz kontenera |
| Tożsamość | Czy może wykonywać wymagane operacje? | Test odczytu/zapisu z użyciem UID/GID procesu |
| Urządzenie | Czy może używać akceleratora? | Ścieżka sprzętowa wybrana podczas rzeczywistego transkodowania |
| Sieć | Czy może dotrzeć do trasy/zależności? | Testy DNS, trasy i portu |
| cgroup | Czy podlega ograniczeniu zasobów? | Zużycie zbliża się do skonfigurowanego limitu |
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Jak częstotliwość tworzenia kopii zapasowych wpływa na jakość punktu odtwarzania w Jellyfin?
Krótsze odstępy między kopiami zapasowymi mogą ograniczyć utratę stanu Jellyfin, ale jakość punktu odzyskiwania zależy również od spójności przechwytywania, historii przechowywania oraz przetestowanych procedur...

Gdzie przebiega bezpieczna granica aktualizacji Jellyfin i dlaczego ma znaczenie?
Bezpieczne aktualizacje Jellyfin zapewniają możliwość przywrócenia zgodności środowiska uruchomieniowego ze stanem trwałym, ponieważ cofnięcie obrazu nie cofa zmian schematu, danych ani wtyczek.

Jak Jellyfin wykrywa i synchronizuje zmiany między urządzeniami?
Spójność Jellyfin między urządzeniami jest oparta na serwerze: serwer wykrywa zmiany lub je otrzymuje, zapisuje stan, a klienci odświeżają dane na podstawie tego wspólnego...

