Meerdere distro's tegelijk uitvoeren met Linux-containers

  • Oliver Matthews
  • 0
  • 3961
  • 110

Linux Containers (LXC) zijn een lichtgewicht virtualisatietechnologie en ze hebben verschillende toepassingen. Het maakt deel uit van de Linux-kernel en kan je een of meerdere Linux-distributies laten emuleren op een enkele Linux-host. Zie het als een middenweg tussen een chroot en volledige virtualisatietechnologieën zoals VirtualBox, KVM of Xen. Een soortgelijke technologie die aanwezig is in de BSD-wereld zijn FreeBSD Jails.

De machine waarop ik schrijf, is bijvoorbeeld een laptop met Linux Mint 18, aangedreven door een Intel Atom-processor en heeft een magere 2 GB RAM. Toch gebruik ik drie Linux-containers, elk met een exemplaar van de Apache-webserver, zonder een grote prestatiehit. Dit zou ondenkbaar zijn met een traditionele virtuele machine zoals VirtualBox. Dus, als je meerdere distributies op je Linux-systeem wilde draaien, zouden Linux Containers het werk prima voor je moeten doen.

Linux Containers installeren en configureren

We zijn LXC aan het opzetten op Linux Mint 18 64-bit. De installatie-instructies die hier worden gegeven, werken ook ongewijzigd op Ubuntu 16.04 en hoger. Als je een andere distro gebruikt, raadpleeg dan de officiële documentatie van je distro als iets niet werkt zoals verwacht. Een bekendheid met de opdrachtregel en algemene probleemoplossing wordt ook verondersteld.

Vereisten

Hier zijn een paar dingen die u moet instellen om meerdere distro's te gaan gebruiken:

1. Installeer LXC en andere vereiste software met:

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

2. Nu moet je configureer uw profiel. Voer de volgende opdrachten in om het in te stellen:

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

3. Dan moet je stel de gebruikersrechten in als volgt:

[sourcecode] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ USER

sudo cgm maakt alle gebruikers aan
sudo cgm chown all user $ (id -u) $ (id -g)
cgm movepid alle gebruikers $$ [/ sourcecode]

Uw container instellen

Nu u LXC-container hebt geïnstalleerd samen met andere vereiste software, volgen hier de stappen om de container in te stellen:

1. In dit voorbeeld, we zullen een Ubuntu-container opzetten, genaamd ubu1. Om dit te doen, voert u de volgende opdracht uit:

[sourcecode] lxc-create -template download -name ubu1 [/ sourcecode]

2. Hier, de -sjabloon parameter vertelt lxc aan downloaden een vooraf geconfigureerde afbeelding van internet, Terwijl de -naam parameter specificeert de naam van de container - ubu1 in dit geval. U kunt elke gewenste naam gebruiken.

3. Je ziet nu een lijst met ondersteunde distro-afbeeldingen:

4. Voer de details van de distributie in die u wilt installeren. Ik zal hier de 64-bits versie van Ubuntu 16.04 (codenaam xenial) installeren:

5. Als je dat wilt installeer de afbeelding niet-interactief, de volgende opdracht behaalt hetzelfde resultaat als het bovenstaande:

[sourcecode] lxc-create -t ​​download -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]

6. LXC downloadt en installeert nu een minimale Ubuntu xenial-image op uw hostsysteem. Het downloaden en installeren kan even duren, afhankelijk van uw internetverbinding en de snelheid van uw pc. Na de installatie, je ziet een scherm als dit:

U bent nu klaar om uw nieuw ingestelde Ubuntu-container te gebruiken.

Meerdere distro's gebruiken met Linux-containers

De container opstarten

Start uw container met de lxc-start opdracht:

[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]

Hier de -n parameter specificeert de naam van de container dat je wilt beginnen (ubu1 in dit geval), en de -d parameter laat het op de achtergrond draaien.

U kunt controleren of de container is gestart met behulp van de lxc-ls opdracht:

[sourcecode] lxc-ls -f [/ sourcecode]

De -f parameter activeert luxe rapportage. Hier kun je zien dat ik heb twee containers - één Debian (gestopt) en één Ubuntu (actief).

Toegang tot en gebruik van uw container

Jij kan toegang tot de console van de container de ... gebruiken lxc-attach opdracht:

[sourcecode] lxc-attach -n ubu1 [/ sourcecode]

Je hebt nu een root shell op uw container. Het wordt aanbevolen dat u een wachtwoord instelt voor de rootgebruiker, en maak een gewoon gebruikersaccount aan:

[sourcecode] wachtwoord
adduser beebom [/ sourcecode]

Natuurlijk vervangen beebom met de gewenste gebruikersnaam. Vervolgens kunt u software installeren en uw container configureren zoals u dat op een gewoon systeem zou doen. Bijvoorbeeld in een Debian- of Ubuntu-container:

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

Uw container stoppen

Nadat je klaar bent met spelen met de container, gebruik je de Uitgang opdracht om terug te keren naar het hostsysteem. Gebruik nu de lxc-stop opdracht om uw container te stoppen:

[sourcecode] lxc-stop -n ubu1 [/ sourcecode]

Hierdoor wordt de container netjes afgesloten en verbruikt deze geen bronnen meer op uw systeem, behalve schijfruimte.

Klonen en snapshots

Klonen

Als je eenmaal programma's in een container hebt geïnstalleerd en deze naar wens hebt geconfigureerd, wil je dat misschien ook maak er een of meerdere kopieën van voor eenvoudige levering. U kunt dit doen door een kloon, wat een exacte replica is van een container.

Om bijvoorbeeld een kloon van de ubu1 container (laten we het noemen ubu2), stop eerst de container gebruik makend van lxc-stop, gebruik dan de lxc-kopie opdracht:

[broncode] lxc-stop -n ubu1

lxc-copy -n ubu1 -N ubu2 [/ sourcecode]

Hier de -n optie specificeert de broncontainer, en de -N optie specificeert de naam van de kloon. Naar verifiëren dat de container is gekloond, gebruik dan de lxc-ls opdracht:

Snapshots

Stel dat u op het punt staat een aantal potentieel gevaarlijke of moeilijk te herstellen wijzigingen door te voeren in een container, zoals het opnieuw configureren van een webserver. Om de schade te minimaliseren, kunt u een momentopname van de container maken voordat u een dergelijke wijziging aanbrengt. Als er tijdens de configuratie iets misgaat, kunt u de container eenvoudig stoppen en herstellen naar de vorige staat door een momentopname te herstellen.

Maak eerst de momentopname stop de container:

[sourcecode] lxc-stop -n ubu1 [/ sourcecode]

Vervolgens, maak een momentopname de ... gebruiken lxc-momentopname opdracht:

[sourcecode] lxc-snapshot -n ubu1 [/ sourcecode]

Dit creëert een snapshot genaamd snap0. Alle volgende snapshots die u met deze opdracht maakt, worden aangeroepen snap1, snap2, enzovoort.

Hierna kunt u begin de container en breng de gewenste wijzigingen aan. Als u op enig moment wilt terugkeren naar een momentopname die u hebt gemaakt, hou op de container en gebruik de lxc-momentopname commando met de -r parameter naar herstel een momentopname:

[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]

Hiermee wordt de momentopname hersteld snap0 naar de ubu1 container.

Containers automatisch starten bij opstarten

U kunt een container, bijvoorbeeld een webservercontainer, automatisch laten opstarten wanneer u uw systeem opstart. Ga hiervoor naar de container configuratiebestand, gelegen in $ HOME / .local / share / lxc // config, en voeg de volgende regels toe:

[broncode] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]

De eerste regel geeft aan dat de container moet worden gestart bij het opstarten. De tweede vertelt het systeem wacht 5 seconden voordat u met de volgende container begint, indien aanwezig.

Probleemoplossen

Als u problemen ondervindt bij het starten van containers, is het eerste dat u moet proberen de lxc-start commando in Voorgrond modus. Bijvoorbeeld:

[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]

Dit zal laten u de fouten zien op de huidige consolee, wat erg handig is bij het identificeren van de aard van het probleem.

Problemen met het gelijktijdig uitvoeren van meerdere containers

Als u meerdere containers tegelijk probeert uit te voeren, Mogelijk ziet u fouten zoals "Quota bereikt" of "kan het geconfigureerde netwerk niet maken". Dit komt omdat u meer netwerkinterfaces gebruikt dan aan u is toegewezen. Jij kan verhoog het aantal netwerkbruggen dat een gebruiker kan uitvoeren door het wijzigen van de / etc / lxc / lxc-usernet bestand als wortel. Het zou er ongeveer zo uit kunnen zien:

[sourcecode] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]

Jij kan verander het nummer aan het einde (5 in dit voorbeeld), naar een groter aantal zoals 10. Hiermee kunt u tot 10 containers tegelijk laten draaien.

Ander gebruik van Linux-containers

Linux-containers hebben verschillende toepassingen. U kunt ze bijvoorbeeld als lichtgewicht testboxen gebruiken om verschillende configuraties van een web- of databaseserver uit te testen voordat u ze op een productieserver vastlegt. Een andere use-case is om te testen hoe een applicatie draait op verschillende versies van verschillende distributies.

U kunt ze ook gebruiken om applicaties te isoleren die u niet vertrouwt - enige schade die een dergelijke applicatie veroorzaakt, is beperkt tot de eigen container en heeft geen invloed op het hostsysteem. Houd er rekening mee dat, hoewel het mogelijk is om GUI-toepassingen in een container uit te voeren, het veel tijd en moeite kost en daarom niet wordt aanbevolen. Als u GUI-apps in een sandbox wilt uitvoeren, raadpleegt u ons artikel over het sandbox-apps in Linux.

ZIE OOK: 7 beste VirtualBox-alternatieven die u kunt gebruiken

Voer meerdere distro's tegelijkertijd uit met Linux-containers

Hiermee eindigt onze How-To met het draaien van meerdere Linux-distributies op één computer, zonder de overhead van een virtuele machine op ware grootte. Het nut van deze technologie wordt alleen beperkt door je creativiteit, dus voel je vrij om te experimenteren en nieuwe use-cases te ontdekken. Als u problemen ondervindt bij het instellen van containers, kunt u ons een vraag stellen in de sectie Opmerkingen.




Niemand heeft nog op dit artikel gereageerd.

Handleidingen voor het kopen van gadgets, technologie die ertoe doet
We publiceren gedetailleerde handleidingen voor het kopen van apparatuur, maken interessante lijsten met de beste producten op de markt en behandelen nieuws uit de wereld van technologie