Jak przeniosłem mój serwer Docker na nowy system

Przenoszenie kontenerów Docker na nowy serwer może być proste. Wystarczy kilka poleceń, odpowiednie przygotowanie systemu oraz cierpliwość. Oto przykładowy przewodnik po procesie.
Czy kiedykolwiek rozważałeś przeniesienie swoich kontenerów Docker z jednego serwera na inny? Niedawno miałem chęć zaktualizować moje homelab, wycofując stary serwer rackowy na rzecz nowszego, bardziej wydajnego systemu, ale przeniesienie moich kontenerów Docker było wyzwaniem, którego nie byłem pewien, jak się podjąć.
Okazało się, że wcale nie było to trudne do wykonania, a bardziej czasochłonne niż przerażające czy frustrujące. Przeniesienie wymaga tylko kilku poleceń i dużo cierpliwości (zależnie od tego, ile kontenerów Docker uruchamiasz). Oto jak przeniosłem mój serwer Docker na zupełnie nowy system (bez przenoszenia samej maszyny wirtualnej).
Przenoszenie hostów Docker nie musi być przytłaczające
W tym styczniu po raz pierwszy przeniosłem kontenery Docker. Przeniosłem się z Unraid na właściwą instalację Dockera w maszynie wirtualnej Ubuntu. Szczerze mówiąc, było to dość proste, a do niektórych aplikacji użyłem wbudowanych metod tworzenia kopii zapasowych, a inne zaczynałem od zera.
Jednak niedawno postanowiłem przenieść mój wirtualny host Docker z jednego serwera na inny. Choć myślałem o przeniesieniu samej maszyny wirtualnej, zdecydowałem się na inną drogę i migrować instalację Dockera do zupełnie nowej maszyny wirtualnej.
Myślenie o tym było dość przytłaczające. Musiałem mieć kontenery Docker wyłączone przez dość długi czas, aby przeprowadzić migrację, a wiele mogło pójść źle podczas transferu.
Jednak, gdy zagłębiłem się w proces, okazało się, że wcale nie było tak źle, jak myślałem. Oczywiście, zajmie to kilka godzin (i z pewnością napotkałem kilka przeszkód), ale ogólnie rzecz biorąc, było to stosunkowo bezbolesne i nie tak przytłaczające.
Upewnij się, że nowy system jest właściwie przygotowany
Zacząłem od upewnienia się, że moja nowa maszyna wirtualna jest gotowa do działania. Najpierw upewniłem się, że używam tej samej wersji Ubuntu: Server 24.04 LTS. Ubuntu Server to moje ulubione rozwiązanie od ponad dekady, gdy potrzebuję serwera Linux. Czuję się w nim komfortowo.
Po zainstalowaniu Ubuntu Server 24.04 na nowym hoście maszyny wirtualnej, upewniłem się, że Docker i wszelkie inne wymagane zależności zostały skonfigurowane i gotowe do działania. Obejmuje to dodatkowe sterowniki dla NVIDIA lub Intel, a także upewnienie się, że wszystkie ścieżki folderów zostały ustawione, których potrzebuję z Dockerem.
Po skonfigurowaniu wszystkich tych ustawień zatrzymałem zarówno usługę Docker, jak i gniazdo za pomocą poniższych poleceń:
systemctl stop docker.socket
systemctl stop docker
Możesz nie potrzebować uruchamiać obu poleceń, ale ja tak zrobiłem. To zasadniczo wyłączyło Dockera, aby móc wprowadzić zmiany w podstawowym systemie plików Dockera i nie zepsuć niczego.
Gdy to było zrobione, uruchomiłem te same polecenia na starym systemie. Musiałem upewnić się, że Docker był wyłączony na starym systemie przed zebraniem plików, ponieważ zapewni to, że nic się nie zmieni od momentu rozpoczęcia migracji do jej zakończenia.
To również oznaczało, że wszystkie moje kontenery Docker były wyłączone. Szczerze mówiąc, to była dla mnie najgorsza część. Moje homelab obsługuje cały mój dom za pomocą Dockera, od Home Assistant przez Audiobookshelf, Plex i wiele innych usług. Wyłączenie Dockera oznaczało zablokowanie tych systemów, więc musiałem czekać na odpowiedni czas, aby to zrobić.
W końcu znalazłem moment, kiedy serwer był nieaktywny i mogłem przejść do następnego kroku: przygotowania wszystkich plików do transferu.
Zbierz wszystkie pliki Docker
To była najdłuższa część procesu dla mnie. Musiałem usunąć dość sporo plików i folderów z folderu, w którym montuję swoje wolumeny Docker, aby spróbować przyspieszyć ten proces, ale i tak zajęło to kilka godzin.
W zasadzie, chcesz zarchiwizować swój folder Docker, a następnie, jeśli używasz innego obszaru do montowania wolumenów, zarchiwizować również ten folder. Jeśli używasz tylko wolumenów Docker, zostaną one uchwycone przez pierwsze polecenie.
Aby rozpocząć, uruchomiłem następujące polecenie na moim starym serwerze:
sudo tar -czvf docker-backup.tar.gz /var/lib/docker
To polecenie tworzy kopię zapasową folderu /var/lib/docker do pliku tar.gz. W zależności od liczby uruchamianych kontenerów oraz tego, czy używasz wolumenów Docker, może to zająć chwilę. Dla mnie zajęło to około 30 do 45 minut.
Następnie uruchomiłem następujące polecenie na moim starym serwerze:
sudo tar -cvzf docker-files.tar.gz /portainer
Ponieważ używam Portainera jako menedżera Dockera, umieściłem wszystkie moje pliki Dockera w katalogu /portainer na serwerze. Zatem mam /portainer/audiobookshelf, /portainer/plex itd. Powyższe polecenie spakowuje folder /portainer do ładnego pliku, co ułatwia jego przeniesienie. Proces ten zajął około godziny z powodu ilości danych, które mam w folderach Docker Volume.
Kiedy oba foldery zostały spakowane, byłem gotowy, aby przejść do następnego kroku: przeniesienia skompresowanych archiwów na nowy serwer.
Przenoszenie Wszystkiego na Nowy System Jest Proste
Mam w domu sieć 2,5 Gb/s i staram się w pełni ją wykorzystać, kiedy tylko mogę. Dlatego znalazłem polecenie, które pozwala na przeniesienie pliku z jednego serwera na drugi, pokazując przy tym prędkość transferu w terminalu:
rsync -ah --info=progress2 docker-backup.tar.gz user@remote-host:/destination/path/
Używając tego polecenia, mogłem monitorować transfer i upewnić się, że wszystko poszło zgodnie z planem. Na szczęście tak było. W ciągu kilku minut pliki zostały przeniesione ze starego serwera na nowy, a ja byłem gotowy, aby kontynuować.
Oczywiście, jeśli wolisz, możesz użyć USB do przeniesienia plików z jednego serwera na drugi. Mój stary serwer (Dell R720 w obudowie rack) ma tylko USB 2.0, więc znacznie szybciej było mi przenieść pliki przez sieć.
Kiedy pliki znalazły się na nowym serwerze, wystarczy je rozpakować. Rozpocząłem od folderu Docker:
sudo tar -xpf docker-backup.tar.gz -C /
Kiedy to się skończyło, wpisałem:
sudo tar -xpf docker-files.tar.gz -C /
To przywróciło wszystkie moje stare pliki Dockera i wolumeny na właściwe miejsca oraz zachowało poprawne uprawnienia, co stanowiło główną część przenoszenia.
Tak naprawdę, spakowanie Dockera, przeniesienie plików tar i ich rozpakowanie zajęło najwięcej czasu w trakcie migracji. Łącznie, te trzy kroki zajęły około trzech do czterech godzin na moim serwerze.
Jednak gdy to zakończyłem, byłem o krok od zakończenia przenosin. Nadeszła pora, aby uruchomić Dockera na nowym serwerze.
Uruchom Docker na Nowym Systemie i Twoje Kontenery Powinny Się Uruchomić
Gdy wszystkie pliki były na swoim miejscu, włączyłem Dockera po raz pierwszy ze wszystkimi kontenerami. To było proste i wymagało tylko dwóch poleceń:
systemctl start docker
systemctl start docker.socket
Spodziewałem się, że wiele rzeczy się popsuje po włączeniu Dockera po przeniesieniu. Zamiast tego, większość z nich uruchomiła się bez problemów i była gotowa do pracy. Tak naprawdę, to wszystko, co jest potrzebne do uruchomienia Dockera na nowej maszynie.
Jeśli konfiguracja nie różni się znacząco między starym a nowym systemem, to wszystko powinno działać. Jeśli jesteś jak ja i dokonałeś wielu zmian między obiema konfiguracjami, to jest kilka rzeczy, na które warto zwrócić uwagę.
Rzeczy, na Które Należy Zwrócić Uwagę Podczas Migracji
Jedną z pierwszych rzeczy, które musiałem naprawić, było zmienienie kilku kontenerów korzystających z uruchamiania NVIDIA na uruchamianie Intela. Na moim starym serwerze miałem kartę graficzną GTX 1650, aby wspierać przetwarzanie AI i transkodowanie. Nowy serwer ma i9-13900K zintegrowaną grafiką Intela, która jest w stanie obsługiwać te same zadania.
To wymagało pewnych zabiegów, i wciąż nie przeszedłem całkowicie na nowy system (zrezygnowałem z Scrypted i pozwoliłem mu działać tylko na procesorze zamiast iGPU), ale ogólnie była to dość prosta zmiana.
Napotkałem również poważny problem z Home Assistant. Kontener Dockera Home Assistant z jakiegoś powodu nie przeniósł żadnych swoich ustawień. Mam część konfiguracji zapisaną w /portainer/homeassistant, ale uruchomił się tak, jakbym nigdy wcześniej nie był w kontakcie z Home Assistant.
Jednak to było łatwe do naprawienia. Po prostu uruchomiłem starą maszynę wirtualną, wszedłem do Home Assistant, pobrałem plik kopii zapasowej i przywróciłem go na nowej maszynie wirtualnej. To natychmiast uruchomiło mnie na nowo.
Może być również konieczne sprawdzenie niektórych ustawień sieciowych Dockera. Scrypted, na przykład, musiałem zmienić z sieci nowego scrypted-default z powrotem na sieć hosta, która została na jakimś powód stworzona.
Musiałem także ustawić statyczny adres IP na nowej maszynie wirtualnej. Następnie musiałem zaktualizować kilka innych drobnych rzeczy.
Kończy się wokół serwera, aby wszystko działało płynnie z zintegrowaną grafiką, którą przesyłałem.
Ogólnie rzecz biorąc, było to dość płynne przeniesienie i jestem bardzo zadowolony z nowego serwera. Jest szybszy, bardziej responsywny i dużo bardziej wydajny niż stary serwer — wszystko z mniejszym zużyciem energii.
Przeniesienie było stosunkowo proste i cieszę się, że mogłem nauczyć się, jak przenosić kontenery Docker z jednego systemu do drugiego. Jestem pewien, że to się przyda w przyszłości!
Jeśli nigdy wcześniej nie uruchamiałeś kontenerów Docker lub dopiero zaczynasz, Docker to wspaniałe narzędzie. Samodzielnie obsługuje praktycznie całe moje homelab.
Oto kilka moich ulubionych kontenerów Docker, które uważam, że każdy entuzjasta homelab powinien uruchomić. Większość z nich jest łatwa w konfiguracji i może dodać wiele wartości do Twojego ustawienia. W rzeczywistości, moje homelab stało się jedną z najprzydatniejszych rzeczy w moim domu.
Jeśli ciekawią Cię artykuły podobne do Jak przeniosłem mój serwer Docker na nowy system, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.
- Przenoszenie hostów Docker nie musi być przytłaczające
- Upewnij się, że nowy system jest właściwie przygotowany
- Zbierz wszystkie pliki Docker
- Przenoszenie Wszystkiego na Nowy System Jest Proste
- Uruchom Docker na Nowym Systemie i Twoje Kontenery Powinny Się Uruchomić
- Rzeczy, na Które Należy Zwrócić Uwagę Podczas Migracji
Dodaj komentarz

Możesz być zainteresowany