Linux Containers (LXC) er en lett virtualiseringsteknologi og de har forskjellige bruksområder. Det er en del av Linux-kjernen, og kan la deg etterligne en eller flere Linux-distroer på en enkelt Linux-vert. Tenk på det som en mellomgrunn mellom en chroot og full virtualiseringsteknologier som VirtualBox, KVM eller Xen. En lignende teknologi som finnes i BSD-verdenen er FreeBSD Jails.
Som et eksempel er maskinen jeg skriver på en bærbar datamaskin som kjører Linux Mint 18, drevet av en Intel Atom-prosessor, og har snaue 2 GB RAM. Likevel kjører jeg tre Linux-containere, hver med en forekomst av Apache-webserveren som kjører, uten et stort ytelseshit. Dette ville være utenkelig med en tradisjonell virtuell maskin som VirtualBox. Så hvis du har ønsket å kjøre flere distroer på Linux-systemet ditt, bør Linux Containers gjøre jobben for deg helt fint.
Installere og konfigurere Linux-containere
Vi setter opp LXC på Linux Mint 18 64-bit. Installasjonsinstruksjonene gitt her vil også fungere umodifisert på Ubuntu 16.04 og nyere. Hvis du bruker en annen distro, vennligst se distros offisielle dokumentasjon hvis noe ikke fungerer som forventet. Det forutsettes også kjennskap til kommandolinjen og generell feilsøking.
Forutsetninger
Her er noen ting du bør sette opp for å begynne å bruke flere distros:
1. Installer LXC og annen forutsetning for programvare som bruker:
[sourcecode] sudo apt installere lxc lxc-maler uidmap [/ sourcecode]
2. Nå må du konfigurer profilen din. Skriv inn følgende kommandoer for å konfigurere den:
[kildekode] 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. Så må du sette opp brukertillatelsene som følger:
[sourcecode] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ BRUKER
sudo cgm opprette alle brukere
sudo cgm chown all user $ (id -u) $ (id -g)
cgm movepid all user $$ [/ sourcecode]
Sette opp beholderen
Nå som du har installert LXC Container sammen med annen forutsetning for programvare, er det trinnene for å sette opp Container:
1. I dette eksemplet, vi setter opp en Ubuntu-container, heter ubu1
. For å gjøre det, utfør følgende kommando:
[sourcecode] lxc-create -template download -name ubu1 [/ sourcecode]
2. Her, den -mal
parameter forteller lxc til nedlasting et forhåndskonfigurert bilde fra internett, mens -Navn
parameter spesifiserer navnet på containeren - ubu1
i dette tilfellet. Du kan bruke hvilket navn du vil.
3. Du vil nå se en liste over støttede distrobilder:
4. Skriv inn detaljene for distribusjonen som du ønsker å installere. Jeg installerer 64-biters versjonen av Ubuntu 16.04 (kodenavn xenial) her:
5. Hvis du ønsker det installer bildet ikke-interaktivt, følgende kommando oppnår samme resultat som ovenfor:
[sourcecode] lxc-create -t download -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]
6. LXC vil nå laste ned og installere et minimalt Ubuntu xenial-bilde på vertssystemet ditt. Nedlastingen og installasjonen kan ta litt tid, avhengig av internettforbindelsen og PC-en din. Etter installasjonen, du vil se en skjerm som dette:
Du er nå klar til å bruke den nyoppsatte Ubuntu-containeren.
Bruke flere distroer med Linux-containere
Starte containeren
Start beholderen med lxc-start
kommando:
[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]
Her, den -n
parameter angir navnet på containeren som du ønsker å starte (ubu1
i dette tilfellet), og -d
parameter får den til å løpe i bakgrunnen.
Du kan bekrefte at beholderen startet med lxc-ls
kommando:
[kildekode] lxc-ls -f [/ kildekode]
De -f
parameteren aktiverer fancy rapportering. Her kan du se at jeg har det to containere - en Debian (stoppet) og en Ubuntu (kjører).
Få tilgang til og bruke beholderen din
Du kan få tilgang til containerens konsoll bruker lxc-fest
kommando:
[sourcecode] lxc-attach -n ubu1 [/ sourcecode]
Du vil nå ha en rot skall på containeren din. Det anbefales at du setter opp et passord for rotbrukeren, og opprette en vanlig brukerkonto:
[kildekode] passwd
adduser beebom [/ sourcecode]
Selvfølgelig, erstatt beebom med brukernavnet du ønsker. Deretter kan du installere programvare og konfigurere beholderen slik du gjør på et vanlig system. For eksempel i en Debian- eller Ubuntu-container:
[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]
Stoppe beholderen
Når du er ferdig med å leke med beholderen, bruker du enten exit
kommando for å gå tilbake til vertssystemet. Bruk nå lxc-stopp
kommando for å stoppe containeren din:
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
Dette vil gjøre at beholderen lukkes rent, og den bruker ikke mer ressurser på systemet ditt, bortsett fra diskplass.
Kloning og stillbilder
Kloner
Når du har installert programmer i en container og konfigurert det etter eget ønske, vil du kanskje lage en eller flere kopier av den for enkel klargjøring. Du kan gjøre dette ved å opprette en klone, som er en eksakt kopi av en container.
For eksempel å lage en klon av ubu1
container (la oss kalle det ubu2
), stopp først beholderen ved hjelp av lxc-stopp
, bruk deretter lxc-kopi
kommando:
[sourcecode] lxc-stop -n ubu1
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
Her, den -n alternativet spesifiserer kildebeholderen, og -N alternativet spesifiserer navnet på klonen. Til bekrefte at beholderen var klonet, bruk lxc-ls
kommando:
Øyeblikksbilder
Anta at du er i ferd med å lage noen potensielt farlige eller vanskelige å gjenopprette fra endringer i en container, for eksempel å konfigurere en webserver på nytt. For å minimere skaden, kan du lage et øyeblikksbilde av beholderen før du gjør en slik endring. I tilfelle noe går galt under konfigurasjonen, kan du bare stoppe beholderen og gjenopprette den til sin tidligere arbeidstilstand ved å gjenopprette et øyeblikksbilde.
For å lage øyeblikksbildet, først stopp containeren:
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
Deretter, lage et øyeblikksbilde bruker lxc-øyeblikksbilde
kommando:
[sourcecode] lxc-snapshot -n ubu1 [/ sourcecode]
Dette skaper et øyeblikksbilde som heter snap0
. Eventuelle påfølgende øyeblikksbilder du oppretter ved hjelp av denne kommandoen vil bli kalt snap1, snap2, etc.
Etter dette kan du start beholderen, og gjør endringene du ønsker. Hvis du når som helst vil gå tilbake til et øyeblikksbilde du opprettet, Stoppe beholderen, og bruk lxc-øyeblikksbilde
kommando med -r
parameter til gjenopprette et øyeblikksbilde:
[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
Dette vil gjenopprette øyeblikksbildet snap0
til ubu1
container.
Autostart containere ved oppstart
Du kan lage en container, for eksempel en webservercontainer, starte automatisk når du starter opp systemet. For å gjøre dette, gå til containerens konfigurasjonsfil, lokalisert i $ HOME / .local / share / lxc /
, og legg til følgende linjer:
[kildekode] lxc.start.auto = 1
lxc.start.delay = 5 [/ kildekode]
Den første linjen spesifiserer at beholderen skal startes ved oppstart. Den andre forteller systemet å vent 5 sekunder før du starter neste container, hvis noen.
Feilsøking
Hvis du har problemer med å starte containere, er det første du prøver å kjøre lxc-start
kommando i Forgrunnen modus. For eksempel:
[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]
Dette vil viser deg feilene på den nåværende konsollene, som er veldig nyttig for å identifisere problemets art.
Problemer med å kjøre flere containere samtidig
Hvis du prøver å kjøre flere containere samtidig, du kan se feil for eksempel “Kvote nådd”, eller “mislyktes i å opprette det konfigurerte nettverket”. Dette er fordi du kjører flere nettverksgrensesnitt enn tildelt deg. Du kan øke antall nettverksbroer som en bruker kan kjøre ved å endre / etc / lxc / lxc-usernet
fil som rot. Det kan se ut slik:
[kildekode] # BRUKERNAVN TYPE BROTAL
beebom veth lxcbr0 5 [/ kildekode]
Du kan endre tallet på slutten (5 i dette eksemplet), til et større antall som 10. Dette lar deg kjøre opptil 10 containere samtidig.
Andre bruksområder for Linux-containere
Linux-containere har forskjellige bruksområder. Du kan bruke dem som lette testbokser, for eksempel for å teste ut forskjellige konfigurasjoner av en web- eller databaseserver før du forplikter dem til en produksjonsserver. En annen brukssak er å teste hvordan et program kjører på forskjellige versjoner av forskjellige distroer.
Du kan også bruke dem til å isolere applikasjoner du ikke stoler på - eventuelle skader en slik applikasjon gjør, vil være begrenset til sin egen container, og vil ikke påvirke vertssystemet. Vær oppmerksom på at selv om det er mulig å kjøre GUI-applikasjoner i en container, tar det betydelig tid og krefter, og anbefales derfor ikke. Hvis du ønsker å kjøre GUI-apper i en sandkasse, se vår artikkel om hvordan du kan sandkasse apper i Linux.
SE OGSÅ: 7 beste VirtualBox-alternativer du kan bruke
Kjør flere distroer samtidig med Linux-containere
Dermed slutter vår How-To om å kjøre flere Linux-distroer på en enkelt datamaskin, uten overhead på en virtuell maskin i full størrelse. Nytten av denne teknologien er bare begrenset av kreativiteten din, så prøv gjerne og finn ut nye brukstilfeller. Hvis du har problemer med å sette opp containere, kan du stille oss et spørsmål i kommentarfeltet.