Docker sprawdza się w przypadku Jellyfin, gdy potrzebujesz lekkiej usługi linuksowej z prostymi trwałymi punktami montowania i bezpośrednim dostępem do urządzeń hosta; maszyna wirtualna sprawdzi się, gdy ważniejsza jest niezależna kontrola nad systemem gościa, silniejsza izolacja jądra lub zarządzanie cyklem życia na poziomie hypervisora. Nie są to idealne przeciwieństwa, ponieważ Docker może również działać wewnątrz maszyny wirtualnej, co często jest najczystszą trzecią opcją w laboratorium domowym opartym przede wszystkim na wirtualizacji.
Decyzję należy oprzeć na rzeczywistym sprzęcie i potrzebnej ścieżce odzyskiwania, szczególnie w kontekście akceleracji GPU i pamięci masowej na multimedia, a nie na ogólnym twierdzeniu, że kontenery są zawsze szybsze lub maszyny wirtualne zawsze bezpieczniejsze.
Zacznij od granicy izolacji, której naprawdę potrzebujesz
Kontener Docker współdzieli jądro systemu Linux hosta, jednocześnie izolując procesy, systemy plików, sieci i inne przestrzenie nazw. Maszyna wirtualna uruchamia własne jądro systemu gościa za hypervisorem. Oznacza to, że maszyna wirtualna tworzy silniejszą granicę systemową, ale dodaje również system gościa, który trzeba aktualizować, tworzyć dla niego kopie zapasowe i uruchamiać, a także przydzielać mu pamięć i przestrzeń dyskową.
Jeśli Jellyfin jest jedną stabilną usługą linuksową na dedykowanym hoście lub hoście przeznaczonym przede wszystkim do aplikacji, granica kontenera zwykle wystarczy. Jeśli host jest platformą do eksperymentów, potrzebujesz innej dystrybucji Linuksa albo chcesz odizolować zmiany w Jellyfin od jądra hosta i zestawu jego pakietów, granica maszyny wirtualnej ma większą wartość praktyczną.
Dostęp do GPU to pierwszy praktyczny test zgodności
W Dockerze na Linuksie Jellyfin może otrzymać dostęp do urządzeń renderujących, takich jak /dev/dri, i korzystać ze stosu sterowników hosta. Dokumentacja kontenera Jellyfin opisuje mapowanie urządzeń na potrzeby akceleracji sprzętowej, a także zaznacza, że konteneryzowany Jellyfin w systemach Windows lub macOS nie jest obsługiwaną metodą sprzętowo akcelerowanego transkodowania.
Maszyna wirtualna wymaga, aby hypervisor udostępnił wirtualną kartę GPU lub ścieżkę przekazania urządzenia, a przekazanie całego urządzenia może sprawić, że akcelerator będzie dostępny wyłącznie dla danego gościa. Może to być lepsze rozwiązanie w przypadku separacji sterowników lub dedykowanego GPU, ale zwiększa liczbę zależności związanych z konfiguracją i odzyskiwaniem systemu.
Porównanie ZimaSpace dotyczące dostępu do urządzeń w stylu kontenerowym i przekazywania urządzeń do maszyny wirtualnej pokazuje tę samą podstawową różnicę: współdzielone węzły urządzeń hosta i wyłączne przejęcie urządzenia przez gościa rozwiązują różne problemy związane z izolacją urządzeń.
Mapowanie pamięci masowej jest prostsze w Dockerze, dopóki maszyna wirtualna nie przejmuje warstwy danych
Docker działa sprawnie, gdy konfiguracja i pamięć podręczna Jellyfin są przechowywane w trwałych ścieżkach hosta lub wolumenach, a multimedia są montowane z lokalnych dysków albo udziału zamontowanego w systemie operacyjnym. Host widzi pamięć masową jako pierwszy, a kontener otrzymuje tylko potrzebne ścieżki.
W przypadku maszyny wirtualnej zdecyduj, czy multimedia będą dostępne za pośrednictwem dysków wirtualnych, bezpośredniego przekazania dysku lub kontrolera, czy też udziału SMB/NFS zamontowanego wewnątrz systemu gościa. Maszyna wirtualna może sprawić, że cały stos Jellyfin będzie przenośny jako jeden gość, ale powiązanie terabajtów multimediów z obrazem dysku wirtualnego może zmienić tworzenie kopii zapasowych i migrację w znacznie większą operację, niż jest to konieczne.
Porównuj zakres kopii zapasowych i wycofywania zmian, a nie przyciski migawek
Docker sprzyja tworzeniu małych jednostek kopii zapasowych: definicji wdrożenia Compose lub innego wdrożenia wraz z trwałym stanem Jellyfin. Odtwórz kontener, ponownie zamontuj multimedia, a aplikacja może wrócić do działania bez zachowywania nietrwałej warstwy uruchomieniowej.
Migawka maszyny wirtualnej może wygodnie przechwycić stan systemu gościa, ale nie jest automatycznie pełną kopią zapasową zewnętrznych multimediów ani spójną, długoterminową kopią zapasową bazy danych. Zaletą jest sprawność operacyjna, gdy używany hypervisor już dobrze obsługuje tworzenie kopii zapasowych gości, replikację i testy przywracania; w przeciwnym razie maszyna wirtualna dodaje kolejną warstwę do odzyskania.
Traktuj narzut jako kryterium rozstrzygające, a nie główny werdykt
Kontenery zwykle wymagają mniej pamięci i przestrzeni dyskowej, ponieważ nie uruchamiają dodatkowego systemu operacyjnego ogólnego przeznaczenia. Maszyna wirtualna potrzebuje pamięci RAM na jądro i usługi gościa oraz dysków wirtualnych na system operacyjny. W przypadku niewielkiego serwera działającego stale różnica może mieć znaczenie; na hoście z dużą ilością pamięci RAM może być pomijalna w porównaniu z wymaganiami dotyczącymi GPU, pamięci masowej i utrzymania.
Nie wybieraj Dockera wyłącznie ze względu na wydajność w benchmarkach, jeśli maszyna wirtualna rozwiązuje rzeczywisty problem z izolacją lub sterownikami. Podobnie nie wybieraj maszyny wirtualnej wyłącznie ze względu na „bezpieczeństwo”, jeśli tylko opakowuje te same niezabezpieczone punkty montowania i dane uwierzytelniające w innym systemie operacyjnym.
Wybierz Dockera, maszynę wirtualną lub trzecią opcję w zależności od roli hosta
Docker wygrywa, gdy hostem jest Linux, zależy Ci na niskim narzucie, trwałe ścieżki można łatwo opisać, a wymagane GPU można niezawodnie zmapować. Maszyna wirtualna wygrywa, gdy Jellyfin potrzebuje niezależnego systemu operacyjnego, silniejszej separacji jądra albo zarządzania cyklem życia i własnością urządzeń przez hypervisor.
Docker działający wewnątrz maszyny wirtualnej z Linuksem wygrywa, gdy Twoje laboratorium domowe jest już oparte przede wszystkim na wirtualizacji, ale nadal chcesz wdrażać aplikacje w stylu kontenerowym wewnątrz przenośnego gościa. Dodatkowa warstwa jest uzasadniona tylko wtedy, gdy granica maszyny wirtualnej ma konkretne zadanie; w przeciwnym razie oznacza jedynie większą złożoność bez nowych możliwości.
Przed podjęciem decyzji przeprowadź jedno rzeczywiste transkodowanie sprzętowe, uruchom ponownie wdrożenie i przywróć trwały stan na czystym środowisku docelowym. Lepszym sposobem wdrożenia Jellyfin dla danego hosta będzie ten, który przejdzie te testy przy najmniejszych trudnościach operacyjnych.
Porównania produktów
Więcej do przeczytania

ZFS vs Btrfs vs ext4 dla woluminu multimediów Jellyfin: który system plików będzie lepszy?
Wybierz system plików multimedialnych Jellyfin według modelu odzyskiwania: ZFS zapewnia integralność puli, Btrfs natywne dla Linuksa kopiowanie przy zapisie (CoW), a ext4 mniejszą złożoność...

Wbudowane kopie zapasowe Jellyfin a kopie na poziomie plików: których używać?
Korzystaj z wbudowanych kopii zapasowych Jellyfin, aby wygodnie przywracać stan aplikacji; używaj zatrzymanych kopii zapasowych na poziomie plików, gdy przywracanie musi obejmować szerszy stan...

Jellyfin z Kodi czy samodzielne klienty Jellyfin: które rozwiązanie będzie lepsze?
Wybierz Kodi, jeśli zależy Ci na konfigurowalnym przepływie pracy zorientowanym na telewizor i większej ilości danych przechowywanych po stronie klienta; wybierz samodzielne klienty Jellyfin,...

