Linux Containers (LXC) er en let virtualiseringsteknologi, og de har forskellige anvendelser. Det er en del af Linux-kernen og kan lade dig emulere en eller flere Linux-distroer på en enkelt Linux-vært. Tænk på det som en mellemvej mellem en chroot og fuld virtualiseringsteknologier som VirtualBox, KVM eller Xen. En lignende teknologi, der findes i BSD-verdenen, er FreeBSD Jails.
Som et eksempel er den maskine, jeg skriver om, en bærbar computer, der kører Linux Mint 18, drevet af en Intel Atom-processor og har en ringe 2 GB RAM. Alligevel kører jeg tre Linux-containere, hver med en forekomst af Apache-webserveren, der kører uden et stort præstationshit. Dette ville være utænkeligt med en traditionel virtuel maskine som VirtualBox. Så hvis du har ønsket at køre flere distroer på dit Linux-system, skal Linux Containere gøre jobbet for dig fint.
Installation og konfiguration af Linux-containere
Vi opretter LXC på Linux Mint 18 64-bit. Installationsinstruktionerne, der er angivet her, fungerer også uændret på Ubuntu 16.04 og nyere. Hvis du bruger en anden distro, se venligst din distros officielle dokumentation, hvis noget ikke fungerer som forventet. Kendskab til kommandolinjen og generel fejlfinding antages også.
Forudsætninger
Her er et par ting, du skal konfigurere for at begynde at bruge flere distroer:
1. Installer LXC og anden forudsætningssoftware ved hjælp af:
[sourcecode] sudo apt installere lxc lxc-skabeloner uidmap [/ sourcecode]
2. Nu skal du konfigurer din profil. Indtast følgende kommandoer for at konfigurere det:
[sourcecode] mkdir -p ~ / .config / lxc
ekko "lxc.id_map = u 0 100000 65536" & amp; amp; amp; gt; ~ / .config / lxc / default.conf
ekko "lxc.id_map = g 0 100000 65536" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
ekko "lxc.network.type = veth" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
ekko "lxc.network.link = lxcbr0" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
ekko "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]
3. Derefter skal du opsæt brugertilladelserne som følger:
[sourcecode] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ BRUGER
sudo cgm oprette alle brugere
sudo cgm chown alle bruger $ (id -u) $ (id -g)
cgm movepid alle bruger $$ [/ sourcecode]
Opsætning af din container
Nu hvor du har installeret LXC Container sammen med anden forudsætningssoftware, er her trinene til opsætning af containeren:
1. I dette eksempel, vi opretter en Ubuntu-container, som hedder ubu1
. For at gøre det skal du udføre følgende kommando:
[sourcecode] lxc-create -template download -name ubu1 [/ sourcecode]
2. Her er -skabelon
parameter fortæller lxc til Hent et forudkonfigureret billede fra internettet, mens -navn
parameter specificerer navnet på containeren - ubu1
I dette tilfælde. Du kan bruge det navn, du kan lide.
3. Du vil nu se en liste over understøttede distro-billeder:
4. Indtast specifikationerne for distributionen som du ønsker at installere. Jeg installerer 64-bit versionen af Ubuntu 16.04 (kodenavn xenial) her:
5. Hvis du ønsker det installer billedet ikke-interaktivt, følgende kommando opnår det samme resultat som ovenfor:
[sourcecode] lxc-create -t download -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]
6. LXC vil nu downloade og installere et minimalt Ubuntu xenial-billede på dit værtssystem. Download og installation kan tage lidt tid afhængigt af din internetforbindelse og din pc's hastighed. Efter installationen, du vil se en skærm som denne:
Du er nu klar til at bruge din nyligt opsatte Ubuntu-container.
Brug af flere distroer med Linux-containere
Opstart af beholderen
Start din container ved hjælp af lxc-start
kommando:
[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]
Her, den -n
parameter angiver navnet på containeren som du ønsker at starte (ubu1
i dette tilfælde) og -d
parameter får det til at køre i baggrunden.
Du kan kontrollere, at containeren startede ved hjælp af lxc-ls
kommando:
[sourcecode] lxc-ls -f [/ sourcecode]
Det -f
parameter muliggør fancy rapportering. Her kan du se, at jeg har det to containere - en Debian (stoppet) og en Ubuntu (kører).
Adgang til og brug af din container
Du kan få adgang til containerens konsol bruger lxc-vedhæft
kommando:
[sourcecode] lxc-attach -n ubu1 [/ sourcecode]
Du får nu en rodskal på din container. Det anbefales, at du opretter en adgangskode til rodbrugeren, og oprette en almindelig brugerkonto:
[sourcecode] passwd
adduser beebom [/ sourcecode]
Selvfølgelig, udskift beebom med det ønskede brugernavn. Du kan derefter installere software og konfigurere din container, som du ville gøre på et almindeligt system. For eksempel i en Debian- eller Ubuntu-container:
[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]
Stop din container
Når du er færdig med at lege med containeren, skal du enten bruge Afslut
kommando for at vende tilbage til værtssystemet. Brug nu lxc-stop
kommando for at stoppe din container:
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
Dette får beholderen til at lukke rent, og den bruger ikke flere ressourcer på dit system undtagen diskplads.
Kloning og snapshots
Kloner
Når du har installeret programmer i en container og konfigureret det til din smag, vil du måske oprette en eller flere kopier af den for nem klargøring. Du kan gøre dette ved at oprette en klon, hvilket er en nøjagtig kopi af en container.
For eksempel at oprette en klon af ubu1
container (lad os kalde det ubu2
), stop først containeren ved brug af lxc-stop
, brug derefter lxc-kopi
kommando:
[sourcecode] lxc-stop -n ubu1
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
Her, den -n-indstilling specificerer kildebeholderen, og -N-indstilling angiver navnet på klonen. Til verificere at beholderen var klonet, brug lxc-ls
kommando:
Snapshots
Antag, at du er ved at lave nogle potentielt farlige eller svære at gendanne efter ændringer i en container, såsom at konfigurere en webserver igen. For at minimere skaden kan du oprette et øjebliksbillede af containeren, inden du foretager en sådan ændring. Hvis noget går galt under konfigurationen, kan du blot stoppe containeren og gendanne den til sin tidligere arbejdstilstand ved at gendanne et øjebliksbillede.
For at oprette øjebliksbillede skal du først standse containeren:
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
Derefter, Opret et øjebliksbillede bruger lxc-snapshot
kommando:
[sourcecode] lxc-snapshot -n ubu1 [/ sourcecode]
Dette skaber et øjebliksbillede kaldet snap0
. Eventuelle efterfølgende snapshots, du opretter ved hjælp af denne kommando, kaldes snap1, snap2, etc.
Efter dette kan du Start beholderen, og foretag de ønskede ændringer. Hvis du til enhver tid vil vende tilbage til et øjebliksbillede, du oprettede, hold op beholderen, og brug lxc-snapshot
kommando med -r
parameter til gendanne et øjebliksbillede:
[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
Dette gendanner øjebliksbillede snap0
til ubu1
beholder.
Start automatisk containere ved opstart
Du kan oprette en container, for eksempel en webservercontainer, starte automatisk, når du starter dit system. For at gøre dette skal du gå til containerens konfigurationsfil, placeret i $ HOME / .local / share / lxc /
, og tilføj følgende linjer:
[sourcecode] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]
Den første linje specificerer, at containeren skal startes ved opstart. Den anden fortæller systemet at vent 5 sekunder inden start af den næste container, hvis nogen.
Fejlfinding
Hvis du har problemer med at starte containere, er den første ting at prøve at køre lxc-start
kommando ind Forgrund mode. For eksempel:
[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]
Dette vil viser dig fejlene i den aktuelle konsole, hvilket er meget nyttigt til at identificere problemets art.
Problemer med at køre flere containere samtidigt
Hvis du prøver at køre flere containere på én gang, du kan muligvis se fejl såsom "Kvote nået" eller "kunne ikke oprette det konfigurerede netværk". Dette skyldes, at du kører flere netværksgrænseflader, end du er tildelt. Du kan øge antallet af netværksbroer, som en bruger kan køre ved at ændre / etc / lxc / lxc-usernet
arkiver som rod. Det kan se sådan ud:
[sourcecode] # BRUGERNAVN TYPE BROTAL
beebom veth lxcbr0 5 [/ sourcecode]
Du kan skift nummeret i slutningen (5 i dette eksempel) til et større antal såsom 10. Dette giver dig mulighed for at køre op til 10 containere på én gang.
Andre anvendelser af Linux-containere
Linux-containere har forskellige anvendelser. Du kan bruge dem som lette testkasser, for eksempel til at teste forskellige konfigurationer af en web- eller databaseserver, inden du forpligter dig til en produktionsserver. En anden brugssag er at teste, hvordan et program kører på forskellige versioner af forskellige distroer.
Du kan også bruge dem til at isolere applikationer, som du ikke stoler på - enhver skade, som en sådan applikation gør, er begrænset til sin egen container og påvirker ikke værtssystemet. Bemærk, at mens det er muligt at køre GUI-applikationer i en container, tager det en betydelig mængde tid og kræfter og anbefales derfor ikke. Hvis du ønsker at køre GUI-apps i en sandkasse, skal du se vores artikel om, hvordan man sandkasser apps i Linux.
SE OGSÅ: 7 bedste VirtualBox-alternativer, du kan bruge
Kør flere distroer samtidigt med Linux-containere
Dermed slutter vores How-To om at køre flere Linux-distroer på en enkelt computer uden overhead på en virtuel maskine i fuld størrelse. Nytten af denne teknologi er kun begrænset af din kreativitet, så du er velkommen til at eksperimentere og finde ud af nye brugssager. Hvis du har problemer med at opsætte containere, er du velkommen til at stille os et spørgsmål i kommentarfeltet.