Linux Containers (LXC) är en lättviktlig virtualiseringsteknik och de har olika användningsområden. Det är en del av Linux-kärnan, och kan låta dig efterlikna en eller flera Linux distros på en enda Linux-värd. Tänk på det som en mellanslag mellan en chroot och full virtualiseringsteknik som VirtualBox, KVM eller Xen. En liknande teknik som finns i BSD-världen är FreeBSD Jails.
Till exempel är den maskin som jag skriver på en bärbar dator som kör Linux Mint 18, drivs av en Intel Atom-processor och har en mager 2 GB RAM. Ändå kör jag tre Linux-behållare, var och en med en instans av Apache webbservern som körs, utan en stor prestationsfrekvens. Detta skulle vara otänkbart med en traditionell virtuell maskin som VirtualBox. Så om du vill köra flera distros på ditt Linux-system, ska Linux Containers göra jobbet för dig bara bra.
Installera och konfigurera Linux-behållare
Vi installerar LXC på Linux Mint 18 64-bitars. Installationsanvisningarna som tillhandahålls här fungerar också omodifierade på Ubuntu 16.04 och senare. Om du använder en annan distro, hänvisar du till din distros officiella dokumentation om något inte fungerar som förväntat. En förtrogenhet med kommandoraden och allmän felsökning antas också.
förutsättningar
Här är några saker du bör installera för att börja använda flera distros:
1. Installera LXC och annan förutsättningssoftware med:
[källkod] sudo apt installera lxc lxc-mallar uidmap [/ sourcecode]
2. Nu måste du konfigurera din profil . Ange följande kommandon för att ställa in det:
[källkod] mkdir -p ~ / .config / lxc
eko "lxc.id_map = u 0 100000 65536" & amp; gt; gt; ~ / .Config / lxc / default.conf
eko "lxc.id_map = g 0 100000 65536" & amp; gt; amp; amp; gt; ~ / .Config / lxc / default.conf
eko "lxc.network.type = veth" & amp; gt; & amp; amp; gt; ~ / .Config / lxc / default.conf
eko "lxc.network.link = lxcbr0" & amp; gt; & amp; amp; gt; ~ / .Config / lxc / default.conf
eko "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ källkod]
3. Då måste du konfigurera användarbehörigheterna enligt följande:
[källkod] 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 användare $$ [/ sourcecode]
Ställa in din behållare
Nu när du har LXC Container installerad tillsammans med annan förutsättningssoftware, här är stegen för att konfigurera Container:
1. I det här exemplet kommer vi att skapa en Ubuntu-behållare med namnet ubu1
. För att göra det, kör följande kommando:
[källkod] lxc-create -template download -name ubu1 [/ sourcecode]
2. Här berättar –template
parametern lxc för att ladda ner en förkonfigurerad bild från internet, medan –name
parameter anger behållarens namn - ubu1
i det här fallet. Du kan använda vilket namn du vill ha.
3. Du kommer nu att se en lista över distro-bilder som stöds :
4. Ange specifika fördelar som du vill installera. Jag installerar 64-bitarsversionen av Ubuntu 16.04 (kodnamn xenial) här:
5. Om du vill installera bilden icke-interaktivt, uppnår följande kommando samma resultat som ovan:
[källkod] lxc-skapa -t-nedladdning -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]
6. LXC kommer nu ladda ner och installera en minimal Ubuntu xenialbild på ditt värdsystem. Nedladdning och installation kan ta lite tid beroende på din internetanslutning och datorns hastighet. Efter installationen ser du en skärm så här:
Du är nu redo att använda din nyanställda Ubuntu-behållare.
Använda flera distros med Linux-behållare
Starta upp behållaren
Starta din behållare med lxc-start
:
[källkod] lxc-start -n ubu1 -d [/ sourcecode]
Här anger -n
parameter namnet på den behållare som du vill starta ( ubu1
i det här fallet), och -d
parametern gör att den körs i bakgrunden .
Du kan verifiera att behållaren startade med hjälp av lxc-ls
:
[källkod] lxc-ls -f [/ källkod]
Parametern -f
möjliggör fina rapporter. Här kan du se att jag har två behållare - en Debian (stoppad) och en Ubuntu (körning).
Åtkomst och användning av din behållare
Du kan komma åt behållarens konsol med lxc-attach
:
[källkod] lxc-attach -n ubu1 [/ sourcecode]
Du kommer nu ha ett rotskal på din behållare. Det rekommenderas att du anger ett lösenord för root-användaren och skapar ett vanligt användarkonto :
[Källkod] passwd
adduser beebom [/ sourcecode]
Naturligtvis, byt beebom med användarnamnet du vill ha. Du kan sedan installera programvara och konfigurera din behållare som du skulle göra på ett vanligt system. Till exempel i en Debian- eller Ubuntu-behållare:
[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]
Stoppar din behållare
När du är klar med att spela med behållaren, använd antingen exit
att återvända till värdsystemet . lxc-stop
nu lxc-stop
kommandot för att stoppa din behållare :
[källkod] lxc-stop -n ubu1 [/ källkod]
Detta kommer att göra behållaren stängd ren och det kommer inte att konsumera mer resurser på ditt system, förutom diskutrymme.
Kloning och ögonblicksbilder
Clones
När du väl har installerat program i en behållare och konfigurerat det enligt dina önskemål kanske du vill skapa en eller flera kopior av den för enkel leverans. Du kan göra detta genom att skapa en klon, som är en exakt kopia av en behållare.
Till exempel, för att skapa en klon i ubu1
behållaren (låt oss kalla det ubu2
), stoppa först behållaren med lxc-stop
, använd sedan lxc-copy
kommandot:
[källkod] lxc-stop -n ubu
lxc-copy-n ubu1 -Nubu2 [/ sourcecode]
Här anger -n-alternativet källbehållaren, och -N-alternativet anger klonens namn . För att verifiera att behållaren klonades, använd lxc-ls
kommandot:
ögonblicks~~POS=TRUNC bilder~~POS=HEADCOMP
Antag att du är på väg att göra några potentiellt farliga eller svåra att återställa från ändringar till en behållare, till exempel omkonfigurera en webbserver. För att minimera skadorna kan du skapa en stillbild av behållaren innan du gör en sådan ändring. Om något går fel under konfigurationen kan du helt enkelt stoppa behållaren och återställa den till sitt tidigare arbetsläge genom att återställa en stillbild.
För att skapa ögonblicksbilden, stoppa först behållaren :
[källkod] lxc-stop -n ubu1 [/ källkod]
lxc-snapshot
kommandot lxc-snapshot
:
[källkod] lxc-snapshot -n ubu1 [/ sourcecode]
Detta skapar en ögonblicksbild kallad snap0
. Eventuella snapshots du skapar med det här kommandot kommer att kallas snap1, snap2, etc.
Därefter kan du starta behållaren och göra de ändringar du vill ha. Om du vill återgå till en stillbild som du skapat när som helst ska du stoppa behållaren och använda lxc-snapshot
med parametern -r
att återställa en stillbild :
[källkod] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
Detta kommer att återställa snapshot snap0
till ubu1
behållaren.
Automatisk startbehållare vid start
Du kan göra en behållare, till exempel en webbserverbehållare, starta automatiskt när du startar upp ditt system. För att göra detta, gå till behållarens konfigurationsfil, som ligger i $HOME/.local/share/lxc//config
och lägg till följande rader :
[källkod] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]
Den första raden anger att behållaren bör startas vid start. Den andra berättar att systemet ska vänta i 5 sekunder innan någon nästa behållare startas.
Felsökning
Om du har problem med att starta behållare, är det första att prova att köra lxc-start
kommandot i förgrunds- läge. Till exempel:
[källkod] lxc-start -n ubu1 -F [/ källkod]
Detta visar fel på den nuvarande konsolen, vilket är mycket användbart för att identifiera problemets natur.
Problem med att köra flera containrar samtidigt
Om du försöker köra flera behållare på en gång kan du se fel som "Kvot uppnått" eller "Misslyckades med att skapa det konfigurerade nätverket". Detta beror på att du kör fler nätverksgränssnitt än tilldelade till dig. Du kan öka antalet nätverksbroar som en användare kan köra genom att ändra /etc/lxc/lxc-usernet
filen som root . Det kan se ut så här:
[källkod] # ANVÄNDARTYP BRIDGE COUNT
beebom veth lxcbr0 5 [/ källkod]
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 behållare samtidigt.
Andra användningar av Linux-behållare
Linux-behållare har olika användningsområden. Du kan använda dem som lätta testlådor, till exempel, för att testa olika konfigurationer av en webb- eller databaseserver innan du förbinder dem med en produktionsserver. Ett annat användningsfall är att testa hur en applikation körs på olika versioner av olika distros.
Du kan också använda dem för att isolera program som du inte litar på. Skada som en sådan applikation gör kommer att vara begränsad till sin egen container och påverkar inte värdsystemet. Observera att även om det är möjligt att köra GUI-applikationer i en behållare, tar det mycket tid och ansträngning och rekommenderas därför inte. Om du vill köra GUI-appar i en sandlåda, se vår artikel om hur man skickar sandbox-appar på Linux.
Kör flera distro samtidigt med Linux-behållare
Således slutar vår How-To på att köra flera Linux distros på en enda dator, utan överhuvudtaget för en fullstor virtuell maskin. Användningen av denna teknik begränsas endast av din kreativitet, så gärna experimentera och ta reda på nya användningsfall. Om du har problem med att konfigurera behållare, tveka inte att fråga oss en fråga i kommentarfältet.