Så här kör du flera distrikt samtidigt med Linux-behållare

  • Yurko Brovko
  • 0
  • 1151
  • 85

Linux Containers (LXC) är en lätt virtualiseringsteknik och har olika användningsområden. Det är en del av Linux-kärnan och kan låta dig emulera ett eller flera Linux-distros på en enda Linux-värd. Tänk på det som en mellangrund mellan en chroot och full virtualiseringsteknologi som VirtualBox, KVM eller Xen. En liknande teknik som finns i BSD-världen är FreeBSD Jails.

Som ett exempel är maskinen jag skriver på en bärbar dator som kör Linux Mint 18, drivs av en Intel Atom-processor och har en liten 2 GB RAM. Ändå kör jag tre Linux-containrar, var och en med en instans av Apache-webbservern som körs, utan en stor prestanda hit. Detta skulle vara otänkbart med en traditionell virtuell maskin som VirtualBox. Så om du har velat köra flera distros på ditt Linux-system, bör Linux Containers göra jobbet åt dig.

Installera och konfigurera Linux-containrar

Vi ställer in LXC på Linux Mint 18 64-bitars. Installationsinstruktionerna som anges här fungerar också omodifierade på Ubuntu 16.04 och högre. Om du använder en annan distro, vänligen hänvisa till din distro officiella dokumentation om något inte fungerar som förväntat. En kännedom om kommandoraden och allmän felsökning antas också.

förutsättningar

Här är några saker du bör ställa in för att börja använda flera distros:

1. Installera LXC och annan förutsatt programvara med hjälp av:

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

2. Nu måste du göra det konfigurera din profil. Ange följande kommandon för att ställa in det:

[sourcecode] mkdir -p ~ / .config / lxc
eko "lxc.id_map = u 0 100000 65536" & amp; amp; gt; ~ / .Config / lxc / default.conf
eko "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. Då måste du göra det ställa in användarrättigheterna som följer:

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

sudo cgm skapa alla användare
sudo cgm chown all user $ (id -u) $ (id -g)
cgm movepid all user $$ [/ sourcecode]

Ställa in din behållare

Nu när du har LXC Container installerat tillsammans med annan förutsatt programvara, här är stegen för att konfigurera Container:

1. I det här exemplet, vi kommer att skapa en Ubuntu-behållare, som heter ubu1. Utför följande kommando för att göra det:

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

2. Här, -mall parameter berättar lxc till ladda ner en förkonfigurerad bild från internet, medan -namn parametern anger behållarens namn - ubu1 I detta fall. Du kan använda vilket namn du vill.

3. Du kommer nu att se en lista med stöds distrobilder:

4. Ange specifikationerna för distributionen som du vill installera. Jag kommer att installera 64-bitarsversionen av Ubuntu 16.04 (kodnamn xenial) här:

5. Om du vill installera bilden icke-interaktivt, följande kommando uppnår samma resultat som ovan:

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

6. LXC kommer nu att ladda ner och installera en minimal Ubuntu xenial-bild på ditt värdsystem. Nedladdning och installation kan ta lite tid beroende på din internetanslutning och din dators hastighet. Efter installationen, du kommer att se en skärm så här:

Du är nu redo att använda din nyinställda Ubuntu-behållare.

Använda flera distrister med Linux-behållare

Starta upp behållaren

Starta din behållare med hjälp av lxc-start kommando:

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

Här, -n parameter anger namnet på behållaren att du vill börja (ubu1 i det här fallet) och -d parameter gör att det körs i bakgrunden.

Du kan verifiera att behållaren startade med hjälp av LXC-ls kommando:

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

De -f parameter aktiverar fint rapportering. Här kan du se att jag har det två containrar - en Debian (stoppad) och en Ubuntu (kör).

Få åtkomst till och använda din behållare

Du kan öppna behållarens konsol använda lxc-attach kommando:

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

Du kommer nu att ha en rotskal på din behållare. Det rekommenderas att du ställer in ett lösenord för rotanvändaren, och skapa ett vanligt användarkonto:

[Källkod] passwd
adduser beebom [/ sourcecode]

Byt naturligtvis ut beebom med det användarnamn du vill ha. Du kan sedan installera programvara och konfigurera din container som du gör på ett vanligt system. Till exempel i en Debian- eller Ubuntu-behållare:

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

Stoppa din behållare

När du är klar med att spela med behållaren använder du antingen utgång kommando för att återgå till värdsystemet. Använd nu lxc-stop kommando för att stoppa din behållare:

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

Detta kommer att göra att behållaren stängs av rent och den kommer inte att konsumera fler resurser på ditt system, med undantag för diskutrymme.

Kloning och ögonblicksbilder

Clones

När du har installerat program i en behållare och konfigurerat det efter dina önskemål kanske du vill skapa en eller flera kopior av den för enkel tillhandahållande. Du kan göra detta genom att skapa en klona, vilket är en exakt kopia av en behållare.

Till exempel för att skapa en klon av ubu1 container (låt oss kalla det ubu2), stoppa först behållaren använder sig av lxc-stop, använd sedan lxc-kopia kommando:

[sourcecode] lxc-stop -n ubu1

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

Här, -n-alternativet anger källbehållaren, och den -Alternativet N anger klonens namn. Till kontrollera att behållaren klonades, använd LXC-ls kommando:

Ögonblicksbilder

Anta att du är på väg att göra några potentiellt farliga eller svåra att återställa från ändringar i en behållare, till exempel omkonfigurering av en webbserver. För att minimera skadan kan du skapa en ögonblicksbild av behållaren innan du gör en sådan förändring. Om något går fel under konfigurationen kan du helt enkelt stoppa behållaren och återställa den till dess tidigare arbetsläge genom att återställa en stillbild.

För att skapa ögonblicksbilden, först stoppa behållaren:

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

Sedan, skapa en ögonblicksbild använda lxc-snapshot kommando:

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

Detta skapar en ögonblicksbild som heter snap0. Alla efterföljande ögonblicksbilder du skapar med detta kommando kommer att ringas snap1, snap2, etc.

Efter detta kan du Start behållaren och gör de ändringar du vill ha. Om du när som helst vill återgå till en stillbild som du skapade, sluta behållaren och använd lxc-snapshot kommando med -r parameter till återställa en stillbild:

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

Detta återställer ögonblicksbilden snap0 till ubu1 behållare.

Starta containrar automatiskt vid Boot

Du kan skapa en behållare, till exempel en webbservercontainer, starta automatiskt när du startar upp ditt system. För att göra detta, gå till behållarens konfigurationsfil, ligger i $ HOME / .local / share / lxc // config, och lägg till följande rader:

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

Den första raden anger att behållaren ska startas vid start. Den andra berättar systemet att vänta 5 sekunder innan du startar nästa behållare, om någon.

Felsökning

Om du har problem med att starta containrar är det första du ska prova att köra lxc-start kommando i Förgrund läge. Till exempel:

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

Det här kommer att visar dig fel på den nuvarande konsolene, vilket är mycket användbart för att identifiera problemets natur.

Problem med att köra flera behållare samtidigt

Om du försöker köra flera containrar samtidigt, du kan se fel som "Kvot nått" eller "misslyckades med att skapa det konfigurerade nätverket". Detta beror på att du kör fler nätverksgränssnitt än tilldelade dig. Du kan öka antalet nätverksbryggor som en användare kan köra genom att ändra / Etc / lxc / lxc-usernet arkivera som rot. Det kan se ut så här:

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

Du kan ändra numret i slutet (5 i det här exemplet), till ett större antal som 10. Detta gör att du kan köra upp till 10 containrar på en gång.

Andra användningar av Linux-containrar

Linux-containrar har olika användningsområden. Du kan använda dem som lätta testrutor, till exempel för att testa olika konfigurationer av en webb- eller databaseserver innan du överför dem till en produktionsserver. Ett annat användningsfall är att testa hur ett program körs på olika versioner av olika distros.

Du kan också använda dem för att isolera applikationer som du inte litar på - alla skador som en sådan applikation gör kommer att begränsas till sin egen behållare och kommer inte att påverka värdsystemet. Observera att även om det är möjligt att köra GUI-applikationer i en container tar det en betydande tid och ansträngning och rekommenderas därför inte. Om du vill köra GUI-appar i en sandlåda kan du läsa vår artikel om hur du sandlåda-appar i Linux.

SE Också: 7 bästa VirtualBox-alternativ du kan använda

Kör flera distrikter samtidigt med Linux-behållare

Således avslutar vår How-To på att köra flera Linux-distros på en enda dator, utan omkostnaderna för en storstor virtuell maskin. Användningen av denna teknik begränsas bara av din kreativitet, så känn dig fri att experimentera och ta reda på nya användningsfall. Om du har problem med att sätta upp containrar, känn dig fri att ställa en fråga i kommentaravsnittet.




Ingen har kommenterat den här artikeln än.

Gadgetköpguider, tekniker som betyder något
Vi publicerar detaljerade guider för att köpa utrustning, skapar intressanta listor över de bästa produkterna på marknaden, täcker nyheter från teknikvärlden