Jak uruchomić wiele dystrybucji jednocześnie przy użyciu kontenerów systemu Linux

  • Damian Washington
  • 0
  • 2680
  • 566

Kontenery Linux (LXC) to lekka technologia wirtualizacji i mają różne zastosowania. Jest częścią jądra Linuksa i umożliwia emulację jednej lub wielu dystrybucji Linuksa na jednym hoście Linuksa. Potraktuj to jako pośredni punkt między chrootem a technologiami pełnej wirtualizacji, takimi jak VirtualBox, KVM lub Xen. Podobną technologią obecną w świecie BSD są Jails FreeBSD.

Na przykład maszyna, na której piszę, to laptop z systemem Linux Mint 18, zasilany przez procesor Intel Atom i ma skromne 2 GB pamięci RAM. Mimo to używam trzech kontenerów Linuksa, z których każdy ma uruchomioną instancję serwera WWW Apache, bez dużego spadku wydajności. Byłoby to nie do pomyślenia w przypadku tradycyjnej maszyny wirtualnej, takiej jak VirtualBox. Tak więc, jeśli chciałeś uruchomić wiele dystrybucji w systemie Linux, Linux Containers powinny wykonać to zadanie za Ciebie..

Instalowanie i konfigurowanie kontenerów Linuksa

Konfigurujemy LXC na Linux Mint 18 w wersji 64-bitowej. Podane tutaj instrukcje instalacji będą działać również bez zmian w systemie Ubuntu 16.04 i nowszych. Jeśli używasz innej dystrybucji, zapoznaj się z oficjalną dokumentacją dystrybucji, jeśli coś nie działa zgodnie z oczekiwaniami. Zakłada się również znajomość wiersza poleceń i ogólne rozwiązywanie problemów.

Wymagania wstępne

Oto kilka rzeczy, które należy skonfigurować, aby rozpocząć korzystanie z wielu dystrybucji:

1. Zainstaluj LXC i inne wymagane oprogramowanie przy użyciu:

[sourcecode] sudo apt install lxc lxc-templates uidmap [/ sourcecode]

2. Teraz musisz skonfiguruj swój profil. Wprowadź następujące polecenia, aby go skonfigurować:

[kod źródłowy] mkdir -p ~ / .config / lxc
echo "lxc.id_map = u 0 100000 65536" & amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; amp; gt;& amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.type = veth" & amp; amp; gt;& amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.link = lxcbr0" & amp; amp; gt;& amp; amp; gt; ~ / .config / lxc / default.conf
echo "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]

3. Następnie musisz skonfigurować uprawnienia użytkownika następująco:

[kod źródłowy] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ USER

sudo cgm utwórz wszystkich użytkowników
sudo cgm chown all user $ (id -u) $ (id -g)
cgm movepid all user $$ [/ sourcecode]

Konfigurowanie kontenera

Teraz, gdy masz już zainstalowany LXC Container wraz z innym wstępnie wymaganym oprogramowaniem, oto kroki, aby skonfigurować kontener:

1. W tym przykładzie, skonfigurujemy kontener Ubuntu, o imieniu ubu1. Aby to zrobić, wykonaj następujące polecenie:

[kod źródłowy] lxc-create -template download -name ubu1 [/ sourcecode]

2. Tutaj -szablon parametr mówi lxc do Ściągnij wstępnie skonfigurowany obraz z Internetu, podczas, gdy -imię parametr określa nazwę kontenera - ubu1 w tym przypadku. Możesz użyć dowolnej nazwy.

3. Zobaczysz teraz listę obsługiwane obrazy dystrybucji:

4. Podaj szczegóły dystrybucji które chcesz zainstalować. Zainstaluję 64-bitową wersję Ubuntu 16.04 (nazwa kodowa xenial) tutaj:

5. Jeśli chcesz zainstaluj obraz nieinteraktywnie, następująca komenda daje taki sam wynik jak powyższy:

[kod źródłowy] lxc-create -t ​​download -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]

6. LXC pobierze teraz i zainstaluje minimalny obraz xenial Ubuntu w systemie hosta. Pobieranie i instalacja może zająć trochę czasu, w zależności od połączenia internetowego i szybkości komputera. Po instalacji, zobaczysz taki ekran:

Jesteś teraz gotowy do użycia nowo skonfigurowanego kontenera Ubuntu.

Używanie wielu dystrybucji z kontenerami Linuksa

Uruchamianie kontenera

Uruchom kontener za pomocą lxc-start Komenda:

[kod źródłowy] lxc-start -n ubu1 -d [/ kod źródłowy]

Tutaj -n parametr określa nazwę kontenera że chcesz zacząć (ubu1 w tym przypadku) i -re parametr sprawia, że ​​działa w tle.

Możesz sprawdzić, czy kontener został uruchomiony przy użyciu lxc-ls Komenda:

[kod źródłowy] lxc-ls -f [/ kod źródłowy]

Plik -fa parametr włącza fantazyjny raportowanie. Tutaj widać, że mam dwa pojemniki - jeden Debian (zatrzymany) i jeden Ubuntu (uruchomiony).

Dostęp do kontenera i korzystanie z niego

Możesz uzyskać dostęp do konsoli kontenera używając lxc-attach Komenda:

[kod źródłowy] lxc-attach -n ubu1 [/ kod źródłowy]

Będziesz mieć teraz plik skorupa roota na twoim pojemniku. Zaleca się ustawienie hasła dla użytkownika root i utwórz zwykłe konto użytkownika:

[kod źródłowy] hasło
adduser beebom [/ kod źródłowy]

Oczywiście wymień beebom z wybraną nazwą użytkownika. Następnie możesz zainstalować oprogramowanie i skonfigurować kontener, tak jak w zwykłym systemie. Na przykład w kontenerze Debiana lub Ubuntu:

[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]

Zatrzymywanie pojemnika

Po zakończeniu zabawy z kontenerem użyj pliku wyjście Komenda aby powrócić do systemu hosta. Teraz użyj lxc-stop Komenda zatrzymać pojemnik:

[kod źródłowy] lxc-stop -n ubu1 [/ kod źródłowy]

Spowoduje to czyste zamknięcie kontenera i nie będzie zużywać więcej zasobów w systemie, z wyjątkiem miejsca na dysku.

Klonowanie i migawki

Klony

Po zainstalowaniu programów w kontenerze i skonfigurowaniu go według własnych upodobań, możesz chcieć utworzyć jedną lub wiele kopii tego dla łatwej obsługi administracyjnej. Możesz to zrobić, tworząc plik klon, który jest dokładną repliką pojemnika.

Na przykład, aby utworzyć klon pliku ubu1 pojemnik (nazwijmy to ubu2), najpierw zatrzymaj pojemnik za pomocą lxc-stop, następnie użyj lxc-copy Komenda:

[kod źródłowy] lxc-stop -n ubu1

lxc-copy -n ubu1 -N ubu2 [/ kod źródłowy]

Tutaj -Opcja n określa kontener źródłowy, i -Opcja N określa nazwę klonu. Do zweryfikować że kontener został sklonowany, użyj rozszerzenia lxc-ls Komenda:

Migawki

Załóżmy, że masz zamiar dokonać pewnych potencjalnie niebezpiecznych lub trudnych do odzyskania zmian po zmianach w kontenerze, takich jak ponowna konfiguracja serwera WWW. Aby zminimalizować szkody, przed dokonaniem takiej zmiany możesz utworzyć migawkę kontenera. Jeśli podczas konfiguracji coś pójdzie nie tak, możesz po prostu zatrzymać kontener i przywrócić go do poprzedniego stanu roboczego, przywracając migawkę.

Aby utworzyć migawkę, najpierw zatrzymać pojemnik:

[kod źródłowy] lxc-stop -n ubu1 [/ kod źródłowy]

Następnie, utwórz migawkę używając lxc-snapshot Komenda:

[kod źródłowy] lxc-snapshot -n ubu1 [/ kod źródłowy]

Tworzy to migawkę o nazwie snap0. Wszelkie kolejne migawki utworzone za pomocą tego polecenia zostaną wywołane snap1, snap2, itp.

Po tym możesz początek kontener i wprowadź żądane zmiany. Jeśli w dowolnym momencie zechcesz wrócić do utworzonej migawki, zatrzymać pojemnik i użyj lxc-snapshot polecenie z -r parametr do przywrócić migawkę:

[kod źródłowy] lxc-snapshot -r snap0 -n ubu1 [/ kod źródłowy]

Spowoduje to przywrócenie migawki snap0 do ubu1 pojemnik.

Automatyczne uruchamianie kontenerów podczas rozruchu

Możesz sprawić, by kontener, na przykład kontener serwera WWW, był uruchamiany automatycznie po uruchomieniu systemu. Aby to zrobić, przejdź do plik konfiguracyjny kontenera, położony w $ HOME / .local / share / lxc // config, i dodaj następujące wiersze:

[kod źródłowy] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]

Pierwsza linia określa, że ​​kontener powinien być uruchamiany podczas rozruchu. Drugi nakazuje systemowi poczekaj 5 sekund przed uruchomieniem następnego pojemnika, jeśli taki istnieje.

Rozwiązywanie problemów

Jeśli masz problemy z uruchomieniem kontenerów, pierwszą rzeczą do wypróbowania jest uruchomienie lxc-start polecenie w Pierwszoplanowy tryb. Na przykład:

[kod źródłowy] lxc-start -n ubu1 -F [/ kod źródłowy]

To będzie pokażę Ci błędy w obecnej konsolie, co jest bardzo przydatne w określaniu natury problemu.

Problemy z jednoczesnym uruchamianiem wielu kontenerów

Jeśli spróbujesz uruchomić wiele kontenerów jednocześnie, możesz zobaczyć błędy takie jak „Osiągnięto limit” lub „Nie udało się utworzyć skonfigurowanej sieci”. Dzieje się tak, ponieważ korzystasz z większej liczby interfejsów sieciowych, niż zostało Ci przydzielone. Możesz zwiększyć liczbę mostów sieciowych, które użytkownik może uruchomić modyfikując plik / etc / lxc / lxc-usernet plik jako korzeń. Może to wyglądać mniej więcej tak:

[kod źródłowy] # LICZBA MOSTÓW TYP NAZWY UŻYTKOWNIKA
beebom veth lxcbr0 5 [/ kod źródłowy]

Możesz zmienić numer na końcu (W tym przykładzie 5) na większą liczbę, np. 10. To pozwoli ci uruchomić do 10 kontenerów na raz.

Inne zastosowania kontenerów Linuksa

Kontenery Linux mają różne zastosowania. Można ich używać jako lekkich pudełek testowych, na przykład do testowania różnych konfiguracji serwera WWW lub bazy danych przed wysłaniem ich do serwera produkcyjnego. Innym przypadkiem użycia jest sprawdzenie, jak aplikacja działa w różnych wersjach różnych dystrybucji.

Możesz ich również użyć do odizolowania aplikacji, którym nie ufasz - wszelkie szkody, które taka aplikacja wyrządzi, będą ograniczone do jej własnego kontenera i nie wpłyną na system hosta. Należy pamiętać, że chociaż możliwe jest uruchamianie aplikacji GUI w kontenerze, zajmuje to dużo czasu i wysiłku, dlatego nie jest zalecane. Jeśli chcesz uruchamiać aplikacje GUI w piaskownicy, zapoznaj się z naszym artykułem na temat korzystania z aplikacji piaskownicy w systemie Linux.

ZOBACZ TAKŻE: 7 najlepszych alternatyw VirtualBox, których możesz użyć

Uruchamiaj wiele dystrybucji jednocześnie z kontenerami Linuksa

W ten sposób kończy się nasz poradnik dotyczący uruchamiania wielu dystrybucji Linuksa na jednym komputerze, bez narzutu pełnowymiarowej maszyny wirtualnej. Użyteczność tej technologii jest ograniczona tylko twoją kreatywnością, więc nie krępuj się eksperymentować i odkrywać nowe przypadki użycia. Jeśli masz problemy z konfiguracją kontenerów, możesz zadać nam pytanie w sekcji komentarzy.




Jeszcze bez komentarzy

Poradniki dotyczące kupowania gadżetów, technologie, które mają znaczenie
Publikujemy szczegółowe poradniki dotyczące zakupu sprzętu, tworzymy ciekawe listy najlepszych produktów na rynku, opisujemy aktualności ze świata technologii