Slik kjører du flere distrikter samtidig med Linux-containere

  • Oliver Matthews
  • 0
  • 4634
  • 1135

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 et eller flere Linux-distros på en enkelt Linux-vert. Tenk på det som en midtbane mellom en chroot og full virtualiseringsteknologi som VirtualBox, KVM eller Xen. En lignende teknologi som er til stede i BSD-verdenen er FreeBSD Jails.

Som et eksempel er maskinen jeg skriver på en bærbar PC som kjører Linux Mint 18, drevet av en Intel Atom-prosessor, og har en mager 2 GB RAM. Likevel kjører jeg tre Linux-containere, hver med en forekomst av Apache-webserveren som kjører, uten en stor ytelse. Dette vil være utenkelig med en tradisjonell virtuell maskin som VirtualBox. Så hvis du har ønsket å kjøre flere distros på ditt Linux-system, bør Linux Containere 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 over. Hvis du bruker en annen distro, kan du se den offisielle dokumentasjonen til distroen din hvis noe ikke fungerer som forventet. En fortrolighet med kommandolinjen og generell feilsøking antas også.

Forutsetninger

Her er et par ting du bør sette opp for å begynne å bruke flere distros:

1. Installer LXC og annen forutsetningsprogramvare som bruker:

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

2. Nå må du gjøre det konfigurer profilen din. Angi følgende kommandoer for å sette den opp:

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

3. Så må du gjøre det sette opp brukerrettighetene som følger:

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

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 LXC Container installert sammen med annen forutsatt programvare, er her trinnene for å sette opp Container:

1. I dette eksemplet, vi vil sette opp en Ubuntu-container, oppkalt ubu1. For å gjøre det, kjør følgende kommando:

[sourcecode] lxc-create -template nedlasting-navn ubu1 [/ sourcecode]

2. Her -mal parameter forteller lxc til nedlasting et forhåndskonfigurert bilde fra internett, mens -Navn parameter spesifiserer navnet på beholderen - ubu1 i dette tilfellet. Du kan bruke det navnet du vil.

3. Du vil nå se en liste over støttet distro-bilder:

4. Angi detaljene for distribusjonen som du ønsker å installere. Jeg vil installere 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 ​​nedlasting -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]

6. LXC vil nå laste ned og installere et minimalt Ubuntu xenialbilde på vertssystemet. Nedlasting og installasjon kan ta litt tid avhengig av internettforbindelsen din og PC-ens hastighet. Etter installasjonen, du vil se en skjerm som denne:

Du er nå klar til å bruke den nylig konfigurerte Ubuntu-containeren.

Bruke flere distribuer med Linux-containere

Starte opp containeren

Start beholderen din ved å bruke LXC-start kommando:

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

Her, -n parameter angir navnet på beholderen som du ønsker å starte (ubu1 i dette tilfellet), og -d parameter får den til å løpe i bakgrunnen.

Du kan bekrefte at containeren startet ved å bruke LXC-ls kommando:

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

De -f parameter 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 containeren

Du kan tilgang til beholderens konsoll bruker LXC-fest kommando:

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

Du vil nå ha en rotskjell på containeren din. Det anbefales at du setter opp et passord for rotbrukeren, og opprette en vanlig brukerkonto:

[Kildekode] passwd
adduser beebom [/ sourcecode]

Bytt selvfølgelig ut beebom med det brukernavnet du ønsker. Du kan deretter installere programvare og konfigurere beholderen din slik du gjør på et vanlig system. For eksempel i en Debian- eller Ubuntu-container:

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

Stoppe beholderen

Når du er ferdig med å leke med containeren, bruker du enten exit kommando for å gå tilbake til vertssystemet. Nå bruker du LXC-stopp kommando for å stoppe containeren:

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

Dette vil gjøre at containeren blir stengt rent, og den vil ikke konsumere flere ressurser på systemet ditt, med unntak av diskplass.

Kloning og øyeblikksbilder

Clones

Når du har installert programmer i en container og konfigurert det etter din smak, kan det være lurt å gjøre det lag en eller flere kopier av den for enkel levering. 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 beholderen først ved hjelp av LXC-stopp, bruk deretter LXC-kopi kommando:

[sourcode] lxc-stop -n ubu1

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

Her, -n-alternativet spesifiserer kildebeholderen, og -N-alternativet spesifiserer navnet på klonen. Til bekrefte at beholderen ble klonet, bruk LXC-ls kommando:

snapshots

Anta at du er i ferd med å gjøre noen potensielt farlige eller vanskelig å 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 skulle gå galt under konfigurasjonen, kan du ganske enkelt stoppe beholderen og gjenopprette den til sin tidligere arbeidstilstand ved å gjenopprette et øyeblikksbilde.

For å lage øyeblikksbildet, først stopp beholderen:

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

Deretter, lag et øyeblikksbilde bruker LXC-snapshot 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 de endringene du ønsker. Hvis du når som helst vil gå tilbake til et øyeblikksbilde du opprettet, Stoppe beholderen, og bruk LXC-snapshot kommando med -r parameter til gjenopprette et øyeblikksbilde:

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

Dette vil gjenopprette øyeblikksbildet snap0 til ubu1 container.

Start automatisk containere på Boot

Du kan lage en container, for eksempel en webservercontainer, starte automatisk når du starter opp systemet. For å gjøre dette, gå til beholderens konfigurasjonsfil, lokalisert i $ HOME / LOCAL / share / LXC // config, og legg til følgende linjer:

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

Den første linjen spesifiserer at containeren skal startes ved oppstart. Den andre ber systemet til vent 5 sekunder før du starter den neste containeren, hvis noen.

Feilsøking

Hvis du har problemer med å starte containere, er det første du prøver å kjøre LXC-start kommando inn forgrunnen modus. For eksempel:

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

Dette vil viser feilene på gjeldende konsolle, noe som er veldig nyttig for å identifisere problemets natur.

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 “kunne ikke opprette det konfigurerte nettverket”. Dette er fordi du kjører flere nettverksgrensesnitt enn det du er tildelt. Du kan øke antall nettverksbroer en bruker kan kjøre ved å endre / Etc / LXC / LXC-usernet fil som rot. Det kan se slik ut:

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

Du kan endre nummeret 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 til å teste ut forskjellige konfigurasjoner av en web- eller databaseserver før du overfører dem til en produksjonsserver. En annen brukssak er å teste hvordan et program kjører på forskjellige versjoner av forskjellige distroser.

Du kan også bruke dem til å isolere applikasjoner du ikke har tillit til - eventuelle skader en slik applikasjon gjør vil være begrenset til sin egen beholder, 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 en betydelig mengde tid og krefter, og anbefales derfor ikke. Hvis du ønsker å kjøre GUI-apper i en sandkasse, kan du se vår artikkel om hvordan du sandkaster apper i Linux.

SE OGSÅ: 7 Beste VirtualBox-alternativer du kan bruke

Kjør flere distribuer samtidig med Linux-containere

Dermed ender vår How-To på å kjøre flere Linux-distros på en enkelt datamaskin, uten overhead for en virtuell maskin i full størrelse. Nytten av denne teknologien er bare begrenset av kreativiteten din, så føl deg fri til å eksperimentere og finne ut nye brukssaker. Hvis du har problemer med å sette opp containere, må du gjerne stille oss et spørsmål i kommentarfeltet.




Ingen har kommentert denne artikkelen ennå.

Gadgetkjøpsguider, teknologi som betyr noe
Vi publiserer detaljerte guider for kjøp av utstyr, lager interessante lister over de beste produktene på markedet, dekker nyheter fra teknologiens verden