Chociaż istnieje niewielki nakładający się region Docker i systemy pakietów Debiana zasadniczo rozwiązują dwa bardzo różne problemy :
System pakowania Debiana jest zbudowany w celu instalowania oprogramowania na hoście i aktualizacji go tak łatwo, jak to możliwe. Jest w stanie obsłużyć złożone wzorce zależności i ograniczeń między komponentami oprogramowania, np. „Oprogramowanie X w wersji A wymaga oprogramowania Y z zainstalowaną wersją B lub nowszą” lub „oprogramowanie X nigdy nie powinno być instalowane z oprogramowaniem Z w wersji C”.
System Docker ma na celu łatwe opisywanie i wdrażanie usług, zwłaszcza mikrousług, prawdopodobnie na kilku hostach - np. Roju Docker lub klastrze Kubernetes.
Te dwa problemy są zasadniczo ortogonalne, co oznacza, że biorąc pod uwagę problem z wdrożeniem do rozwiązania, można użyć jednego z nich, obu, a może nawet żadnego z nich, jako części rozwiązania. Podczas korzystania z obu z nich, pakiet Debian jest używany do produkcji obrazu Docker, a Twój plik Docker (przepisy użyte do przygotowania obrazu Docker opisującego „zwirtualizowany system” działający w kontenerze) zasadniczo rejestrowałyby Twoje repozytorium Debian w źródła systemu pakietów Debiana i zainstaluj swój pakiet.
Mając to na uwadze, wydaje mi się, że tak naprawdę szukasz implementacji niezmiennego wzorca serwera. Niedawny rozwój technologii w chmurze umożliwił aktualizację oprogramowania nie przy użyciu klasycznego systemu aktualizacji oprogramowania z systemu pakietów oprogramowania (takiego jak system pakietów Debiana), ale po prostu przez zastąpienie całego serwera jednocześnie. (Niektóre osoby zrobiły to przed tym opracowaniem, mając trzy systemy operacyjne na serwerze, dwa używane alternatywnie do uruchamiania urządzenia i mini-system operacyjny przeznaczony do wymiany urządzenia. Chociaż nie jest to zbyt skomplikowane, wydaje się, że zawsze pozostawało nisza.) Ta technika może być dla Ciebie interesująca, ponieważ jeśli jesteś przyzwyczajony do aktualizacji oprogramowania na serwerze za pomocą menedżera pakietów, ostateczny stan serwera zależy od „historii aktualizacji” serwera - szczególnie jeśli wystąpią błędy w proces aktualizacji. Ta heterogeniczność jest zła,
Mamy tysiące takich pudeł na polu. Zarządzamy zależnościami pakietów, rejestracją procesów itp. Poprzez pakiet deb z różnym powodzeniem.
może odnosić się do tego. Niezmienny wzorzec serwera usuwa to źródło błędów, zasadniczo niszcząc pojęcie „historii aktualizacji” od problemu.
Teraz istnieją różne opcje implementacji niezmiennego wzorca serwera, dwie popularne opcje to użycie obrazów Docker, obrazów lub użycie „obrazów instancji wzorcowych” od dostawcy chmury (są to AMI w AWS i tylko obrazy niestandardowe w Google Compute Engine) . Twój przypadek użycia zabrania stosowania technik opartych na chmurze, dlatego przyjmuję obrazy Docker jako jedyny kwalifikujący się wybór. (Ze względu na zakończenie z pewnością możliwe jest zastosowanie innych podejść, na przykład za pomocą Virtual Box lub podobnego rozwiązania do wirtualizacji, jako alternatywy dla Dockera).
Korzystając z niezmiennej techniki wzorców serwerów, wprowadzasz nowy artefakt (obraz Docker) reprezentujący Twój serwer, a ten artefakt można również przetestować, a bardzo łatwo jest uzyskać konfigurację dokładnie odzwierciedlającą ustawienia produkcji - oprócz obciążenia serwisowego.
Teraz, aby rozważyć konkretny opisany problem, załóżmy, że implementacja niezmiennego wzorca serwera za pomocą Dockera jest właśnie tym, czego chcesz. Ponieważ system Docker i system pakietów Debiana uzupełniają się, a nie wzajemnie wykluczają (por. Wprowadzenie), nadal musimy odpowiedzieć na pytanie, czy powinieneś przygotować pakiet Debian dla swojego oprogramowania.
Znaczenie użycia pakietu Debian do zainstalowania oprogramowania (na obrazku Docker lub na hoście) polega na złożoności problemu z wersjonowaniem, który należy rozwiązać. Jeśli uruchamiasz w tym samym czasie kilka wersji oprogramowania, od czasu do czasu musisz obniżyć wersję i masz złożone wymagania dotyczące wersji, które musisz dokładnie udokumentować, posiadanie pakietu Debian jest koniecznością. W przeciwnym razie ten krok można pominąć - ale ponieważ już starasz się wyprodukować i wdrożyć te pakiety, nie ma prawdziwej wartości w porzucaniu pracy. Dlatego sugerowałbym kontynuowanie produkcji pakietów Debiana.