Anbefalt, 2024

Redaksjonens

Slik kjører du flere distroer Simultanosly ved hjelp av Linux-containere

Linux Containers (LXC) er en lettvektig 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 midt mellom en chroot og full virtualiseringsteknologi som VirtualBox, KVM eller Xen. En lignende teknologi som er tilstede i BSD-verdenen er FreeBSD Jails.

For eksempel er maskinen jeg skriver på en bærbar datamaskin 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 hit. Dette ville være utænkelig med en tradisjonell virtuell maskin som VirtualBox. Så, hvis du har lyst til å kjøre flere distroer på ditt Linux-system, 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 som er oppgitt her, vil også fungere uendret på Ubuntu 16.04 og nyere. Hvis du bruker en annen distro, vennligst se distros offisielle dokumentasjon hvis noe ikke virker som forventet. En kjennskap til kommandolinjen og generell feilsøking antas også.

Forutsetninger

Her er noen ting du bør sette opp for å begynne å bruke flere distroer:

1. Installer LXC og annen forutsetning programvare ved å bruke:

[kildekode] sudo apt install lxc lxc-maler uidmap [/ sourcecode]

2. Nå må du konfigurere profilen din . Skriv inn følgende kommandoer for å konfigurere det:

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

3. Da må du sette opp brukerrettighetene som følger:

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

sudo cgm opprette all bruker
sudo cgm chown all user $ (id -u) $ (id -g)
cgm movepid all bruker $$ [/ sourcecode]

Sette opp containeren din

Nå som du har LXC Container installert sammen med annen forutsetning programvare, er det her trinnene for å konfigurere Containeren:

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

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

2. Her forteller parameter-parameteren lxc for å laste ned et forhåndskonfigurert bilde fra internett, mens parameternavnet angir navnet på beholderen - ubu1 i dette tilfellet. Du kan bruke hvilket som helst navn du liker.

3. Du vil nå se en liste over støttede distrobilder :

4. Skriv inn detaljene for distribusjonen du vil installere. Jeg vil installere 64-bits versjonen av Ubuntu 16.04 (kodenavn xenial) her:

5. Hvis du ønsker å installere bildet ikke-interaktivt, oppnår følgende kommando det samme resultatet som ovenfor:

[kildekode] lxc-create -t ​​nedlasting - en ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]

6. LXC vil nå laste ned og installere et minimalt Ubuntu xenialbilde på ditt vertssystem. Nedlasting og installasjon kan ta litt tid, avhengig av din internettforbindelse og PCens hastighet. Etter installasjonen vil du se en skjerm slik:

Du er nå klar til å bruke din nyopprettede Ubuntu-beholder.

Bruke flere distroser med Linux-containere

Starte opp beholderen

Start beholderen med lxc-start kommandoen:

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

Her spesifiserer parameteren navnet på beholderen som du ønsker å starte ( ubu1 i dette tilfellet), og parameteren -d gjør det kjørt i bakgrunnen .

Du kan bekrefte at beholderen startet ved å bruke lxc-ls kommandoen:

[kildekode] lxc-ls -f [/ kildekode]

-f parameteren gjør det mulig å rapportere. Her kan du se at jeg har to containere - en Debian (stoppet) og en Ubuntu (kjører).

Tilgang til og bruk av containeren

Du kan få tilgang til containerens konsoll ved hjelp av kommandoen lxc-attach :

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

Du vil nå ha et rotskall på containeren din. Det anbefales at du konfigurerer et passord for roten brukeren, og opprett en vanlig brukerkonto :

[Kildekode] passwd
adduser beebom [/ sourcecode]

Selvfølgelig, erstatt beebom med brukernavnet du vil ha. Du kan deretter installere programvare og konfigurere beholderen som du ville gjøre på et vanlig system. For eksempel i en Debian- eller Ubuntu-beholder:

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

Stoppe beholderen din

Når du er ferdig med å spille med containeren, kan du enten bruke exit kommandoen for å gå tilbake til vertssystemet . Bruk lxc-stop kommandoen til å stoppe beholderen din :

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

Dette vil gjøre beholderen stengt rent og det vil ikke forbruke flere ressurser på systemet ditt, bortsett fra diskplass.

Kloning og stillbilder

Clones

Når du har installert programmer i en beholder og konfigurert den til din smak, vil du kanskje lage en eller flere kopier av den for enkel tildeling. Du kan gjøre dette ved å lage en klone, som er en nøyaktig kopi av en beholder.

For eksempel, for å lage en klone av ubu1 beholderen (la oss kalle det ubu2 ), må du først stoppe beholderen ved hjelp av lxc-stop, og bruk lxc-copy kommandoen:

[kildekode] lxc-stop-n ubu

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

Her spesifiserer -n-alternativet kildebeholderen, og -N-alternativet angir klonens navn . For å verifisere at containeren ble klonet, bruk lxc-ls kommandoen:

snapshots

Anta at du skal gjøre 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 foretar en slik endring. Hvis noe går galt under konfigurasjonen, kan du bare stoppe beholderen og gjenopprette den til sin tidligere arbeidsstatus ved å gjenopprette et øyeblikksbilde.

For å lage øyeblikksbildet, må du først stoppe beholderen :

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

Deretter lager du et øyeblikksbilde med lxc-snapshot kommandoen:

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

Dette skaper et øyeblikksbilde kalt snap0 . Eventuelle etterfølgende stillbilder du oppretter ved hjelp av denne kommandoen, kalles snap1, snap2, etc.

Etter dette kan du starte beholderen, og foreta endringene du vil ha. Hvis du til enhver tid vil returnere til et øyeblikksbilde du opprettet, stopper du beholderen, og bruk lxc-snapshot kommandoen med parameteren -r å gjenopprette et øyeblikksbilde :

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

Dette vil gjenopprette stillbildet snap0 til ubu1 beholderen.

Auto-startbeholdere ved Boot

Du kan lage en beholder, for eksempel en webserverbeholder, starte opp automatisk når du starter opp systemet. For å gjøre dette, gå til containerens config-fil, plassert i $HOME/.local/share/lxc//config, og legg til følgende linjer :

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

Den første linjen angir at beholderen skal startes ved oppstart. Den andre forteller at systemet venter 5 sekunder før du starter den neste beholderen, om noen.

Feilsøking

Hvis du har problemer med å starte containere, er det første du må prøve å kjøre lxc-start kommandoen i Forgrunnsmodus . For eksempel:

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

Dette vil vise deg feilene på den nåværende konsollen e, som er svært nyttig for å identifisere problemets natur.

Problemer med å kjøre flere containere samtidig

Hvis du prøver å kjøre flere containere på en gang, kan det hende du ser feil som "Kvote nådd", eller "klarte ikke å opprette det konfigurerte nettverket". Dette skyldes at du kjører flere nettverksgrensesnitt enn tildelt til deg. Du kan øke antall nettverksbroer som en bruker kan kjøre ved å endre filen /etc/lxc/lxc-usernet som root . Det kan se slik ut:

[kildekode] # BRUKERNUMMER FOR BRUKERNUMMER
beebom veth lxcbr0 5 [/ kildekode]

Du kan endre nummeret på slutten (5 i dette eksemplet), til et større tall som 10. Dette vil tillate deg å kjøre opptil 10 containere samtidig.

Andre bruksområder av Linux-containere

Linux-containere har forskjellige bruksområder. Du kan bruke dem som lette testbokser, for eksempel å teste ut ulike konfigurasjoner av en web- eller databaseserver før du forplikter dem til en produksjonsserver. En annen brukstilfelle er å teste hvordan et program kjører på forskjellige versjoner av forskjellige distros.

Du kan også bruke dem til å isolere applikasjoner du ikke stoler på. Eventuelle skader som et slikt program vil begrense til sin egen container, og vil ikke påvirke vertssystemet. Vær oppmerksom på at mens det er mulig å kjøre GUI-applikasjoner i en container, tar det mye tid og krefter, og det anbefales derfor ikke. Hvis du ønsker å kjøre GUI-apper i en sandkasse, kan du se vår artikkel om hvordan du bruker sandbox-apper på Linux.

Kjør flere distroer samtidig med Linux-containere

Dermed slutter vår How-To på å kjøre flere Linux distros på en enkelt datamaskin, uten overhead av en full størrelse virtuell maskin. Bruken av denne teknologien er bare begrenset av din kreativitet, så vær så snill å eksperimentere og finn ut nye bruksområder. Hvis du har problemer med å sette opp beholdere, kan du spørre oss et spørsmål i kommentarfeltet.

Top