Sådan køres flere distrikter samtidig med Linux-containere

  • Clement Thomas
  • 0
  • 1232
  • 158

Linux Containers (LXC) er en let virtualiseringsteknologi, og de har forskellige anvendelser. Det er en del af Linux-kernen og kan lade dig efterligne et eller flere Linux-distros på en enkelt Linux-vært. Tænk på det som et mellemgrund mellem en chroot og fuld virtualiseringsteknologier som VirtualBox, KVM eller Xen. En lignende teknologi, der findes i BSD-verdenen, er FreeBSD-fængsler.

Som et eksempel er maskinen, jeg skriver på, en bærbar computer, der kører Linux Mint 18, drevet af en Intel Atom-processor og har en mager 2 GB RAM. Ikke desto mindre kører jeg tre Linux-containere, hver med en forekomst af Apache-webserveren, uden et stort hit. Dette ville være utænkeligt med en traditionel virtuel maskine som VirtualBox. Så hvis du har ønsket at køre flere distros på dit Linux-system, skal Linux Containere gøre jobbet for dig helt fint.

Installation og konfiguration af Linux-containere

Vi opretter LXC på Linux Mint 18 64-bit. Installationsvejledningen, der er leveret her, fungerer også umodificeret på Ubuntu 16.04 og nyere. Hvis du bruger en anden distro, bedes du henvise til din distro officielle dokumentation, hvis noget ikke fungerer som forventet. En fortrolighed med kommandolinjen og generel fejlfinding antages også.

Forudsætninger

Her er et par ting, du skal konfigurere for at begynde at bruge flere distros:

1. Installer LXC og anden forudsat software ved hjælp af:

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

2. Nu skal du gøre det 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; 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. Derefter skal du gøre det opsæt brugertilladelser som følger:

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

sudo cgm oprette al bruger
sudo cgm chown all user $ (id -u) $ (id -g)
cgm movepid all user $$ [/ sourcecode]

Opsætning af din container

Nu hvor du har LXC Container installeret sammen med anden forudsætning af software, her er trinnene til at konfigurere Containeren:

1. I dette eksempel, vi opretter en Ubuntu-container, som hedder ubu1. For at gøre det, udfør følgende kommando:

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

2. Her -skabelon parameter fortæller lxc til Hent et forudkonfigureret billede fra internettet, mens -navn parameter specificerer beholderens navn - ubu1 I dette tilfælde. Du kan bruge det navn, du kan lide.

3. Du vil nu se en liste over understøttede distrobilleder:

4. Indtast distributionens specifikationer som du ønsker at installere. Jeg vil installere 64-bit versionen af ​​Ubuntu 16.04 (kodenavn xenial) her:

5. Hvis du ønsker det installere billedet ikke-interaktivt, følgende kommando opnår det samme resultat som ovenstående:

[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 konfigurerede Ubuntu-container.

Brug af flere distrikter med Linux-containere

Start af containeren

Start din container ved hjælp af LXC-start kommando:

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

Her, -n parameter specificerer navnet på beholderen 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 aktiverer 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 adgang til containerkonsollen bruger LXC-vedhæfte kommando:

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

Du vil nu have en rodskal på din container. Det anbefales, at du opretter en adgangskode til rodbrugeren, og oprette en almindelig brugerkonto:

[Kildekode] passwd
adduser beebom [/ sourcecode]

Udskift selvfølgelig beebom med det brugernavn, du ønsker. 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 installere wget openssh-server htop tmux nano iptables [/ sourcecode]

Stop af din beholder

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 vil gøre, at containeren lukkes rent, og den forbruger ikke flere ressourcer på dit system, undtagen diskplads.

Kloning og snapshots

Kloner

Når du har installeret programmer i en container og konfigureret dem efter din smag, kan du måske gerne opret en eller flere kopier af den for let levering. 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 beholderen ved brug af LXC stop, Brug derefter LXC-kopi kommando:

[sourcecode] lxc-stop -n ubu1

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

Her, -n mulighed specificerer kildebeholderen, og -Indstillingen N specificerer navnet på klonen. Til verificere at beholderen blev klonet, brug LXC-ls kommando:

snapshots

Antag, at du er ved at gøre nogle potentielt farlige eller svære at gendanne fra ændringer i en container, som f.eks. Omkonfiguration af en webserver. For at minimere skaden kan du oprette et snapshot af beholderen, før du foretager en sådan ændring. I tilfælde af, at noget går galt under konfigurationen, kan du blot stoppe containeren og gendanne den til sin tidligere arbejdstilstand ved at gendanne et snapshot.

For at oprette snapshot skal du først stop containeren:

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

Derefter, oprette et snapshot bruger LXC-snapshot kommando:

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

Dette skaber et kaldet snapshot snap0. Eventuelle efterfølgende snapshots, du opretter ved hjælp af denne kommando, kaldes snap1, snap2, etc.

Efter dette kan du Start containeren, og foretag de ønskede ændringer. Hvis du på noget tidspunkt ønsker at vende tilbage til et øjebliksbillede, du oprettede, hold op containeren, og brug LXC-snapshot kommando med -r parameter til gendanne et snapshot:

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

Dette gendanner snapshot 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 op. For at gøre dette, gå til containers konfigurationsfil, placeret i $ HOME / .local / share / LXC // config, 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 til vent 5 sekunder inden eventuel næste container startes.

Fejlfinding

Hvis du har problemer med at starte containere, er den første ting at prøve at køre LXC-start kommando i forgrund mode. For eksempel:

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

Dette vil viser dig fejlene på 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 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 tildelt til dig. Du kan øge antallet af netværksbroer, som en bruger kan køre ved at ændre / Etc / LXC / LXC-usernet arkiver som rod. Det ser måske sådan ud:

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

Du kan ændre nummeret i slutningen (5 i dette eksempel) til et større antal 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 testbokse, for eksempel til at afprøve forskellige konfigurationer af en web- eller databaseserver, før du overfører dem til en produktionsserver. En anden brugssag er at teste, hvordan en applikation kører på forskellige versioner af forskellige distros.

Du kan også bruge dem til at isolere applikationer, som du ikke har tillid til - enhver skade, som en sådan applikation gør, vil være begrænset til sin egen container og påvirker ikke værtssystemet. Bemærk, at selvom 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, kan du se vores artikel om, hvordan du sandkasser apps i Linux.

SE OGSÅ: 7 bedste VirtualBox-alternativer, du kan bruge

Kør flere distrikter samtidigt med Linux-containere

Således afslutter vores How-To til at køre flere Linux-distros på en enkelt computer uden omkostningen af ​​en virtuel maskine i fuld størrelse. Nytten af ​​denne teknologi er kun begrænset af din kreativitet, så føl dig fri til at eksperimentere og finde ud af nye brugssager. Hvis du har problemer med at oprette containere, er du velkommen til at stille os et spørgsmål i kommentarfeltet.




Endnu ingen kommentarer

Gadget til købsguider, teknologier der betyder noget
Vi udgiver detaljerede guider til køb af udstyr, skaber interessante lister over de bedste produkter på markedet, dækker nyheder fra teknologiens verden