Linux kontajnery (LXC) sú ľahká virtualizačná technológia a majú rôzne využitie. Je súčasťou jadra Linuxu a môže vám umožniť napodobniť jednu alebo viacero linuxových distribúcií na jedinom hostiteľovi Linuxu. Myslite na to ako na strednú pôdu medzi chrootom a plnohodnotnými virtualizačnými technológiami, ako je VirtualBox, KVM alebo Xen. Podobná technológia, ktorá sa nachádza vo svete BSD, je FreeBSD Jails.
Napríklad počítač, na ktorom píšem, je prenosný počítač so systémom Linux Mint 18, ktorý je napájaný procesorom Intel Atom a má skromné 2 GB pamäte RAM. Napriek tomu používam tri linuxové kontajnery, každý s inštanciou webového servera Apache, bez veľkého výkonu. To by bolo nemysliteľné s tradičným virtuálnym strojom, ako je VirtualBox. Takže, ak ste chceli spustiť viac distribučných súprav vo vašom systéme Linux, Linux Containers by mal pre vás prácu urobiť v pohode.
Inštalácia a konfigurácia kontajnerov Linux
Nastavujeme LXC na Linuxe Mint 18 64-bit. Inštalačné pokyny, ktoré tu nájdete, budú tiež fungovať bez úpravy v Ubuntu 16.04 a vyššie. Ak používate inú distribúciu, pozrite si oficiálnu dokumentáciu vášho distribútora, ak niečo funguje podľa očakávania. Objaví sa tiež znalosť príkazového riadku a všeobecné riešenie problémov.
predpoklady
Tu je niekoľko vecí, ktoré by ste mali nastaviť, aby ste mohli začať používať viaceré distribučné súbory:
1. Nainštalujte softvér LXC a iný predpokladaný softvér pomocou:
[zdrojový kód] sudo apt nainštalovať lxc lxc-šablóny uidmap [/ sourcecode]
2. Teraz musíte nakonfigurovať svoj profil . Zadajte nasledujúce príkazy na nastavenie:
[zdrojový kód] mkdir -p ~ / .config / lxc
echo "lxc.id_map = u 0 100000 65536" & amp; ~ / .Config / LXC / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; ~ / .Config / LXC / default.conf
echo "lxc.network.type = veth" & amp; gt; gt; ~ / .Config / LXC / default.conf
echo "lxc.network.link = lxcbr0" & amp; ~ / .Config / LXC / default.conf
echo "$ USER veth lxcbr0 2" sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]
3. Potom musíte nastaviť používateľské oprávnenia nasledovne:
[zdrojový kód] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ USER
sudo cgm vytvoriť všetkých používateľov
sudo cgm chown všetky používateľské $ (id -u) $ (id -g)
cgm pohybovať všetci používatelia $$ [/ sourcecode]
Nastavenie kontajnera
Teraz, keď máte nainštalovaný kontajner LXC spolu s iným predpokladaným softvérom, postupujte podľa pokynov na nastavenie kontajnera:
1. V tomto príklade vytvoríme kontajner Ubuntu s názvom ubu1
. Ak to chcete urobiť, spustite nasledujúci príkaz:
[zdrojový kód] lxc-create-template download -name ubu1 [/ sourcecode]
2. Parameter –template
hovorí, že lxc načíta prednastavený obrázok z internetu, zatiaľ čo parameter ubu1
určuje názov kontajnera - ubu1
v tomto prípade. Môžete použiť ľubovoľné meno, ktoré sa vám páči.
3. Zobrazí sa vám zoznam podporovaných diskových obrazov :
4. Zadajte špecifiká distribúcie, ktorú chcete nainštalovať. Inštalujem 64-bitovú verziu Ubuntu 16.04 (kódové meno xenial) tu:
5. Ak chcete obrázok intuitívne inštalovať, nasledujúci príkaz dosahuje rovnaký výsledok ako vyššie uvedený:
[zdrojový kód] lxc-create -t stiahnuť -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]
6. LXC teraz na svojom hostiteľskom systéme stiahnuť a nainštalovať minimálny xenuálny obrázok Ubuntu. Sťahovanie a inštalácia môžu trvať trochu času v závislosti od pripojenia k internetu a rýchlosti počítača. Po inštalácii sa zobrazí obrazovka takto:
Teraz ste pripravení používať novo nastavený kontajner Ubuntu.
Používanie viacerých distribútorov s kontajnermi Linux
Spustenie kontajnera
Spustite kontajner pomocou príkazu lxc-start
:
[zdrojový kód] lxc-start -n ubu1 -d [/ sourcecode]
Parameter -n
určuje názov kontajnera, ktorý chcete spustiť ( ubu1
v tomto prípade) a parametr -d
ho spúšťa na pozadí .
Môžete si overiť, či kontajner začal pomocou príkazu lxc-ls
:
[zdrojový kód] lxc-ls -f [/ sourcecode]
Parameter -f
umožňuje fiktívne hlásenie. Tu vidíte, že mám dva kontajnery - jeden Debian (zastavený) a jeden Ubuntu (beží).
Prístup a používanie Vášho kontajnera
Konzolu kontajnera môžete získať pomocou príkazu lxc-attach
:
[zdrojový kód] lxc-attach -n ubu1 [/ sourcecode]
Na kontajneri budete teraz mať koreňový shell . Odporúčame vám nastaviť heslo pre používateľa root a vytvoriť bežný používateľský účet :
[Zdrojové kódy] passwd
adduser beebom [/ sourcecode]
Samozrejme, nahraďte beebom používateľským menom, ktoré chcete. Potom môžete nainštalovať softvér a nakonfigurovať kontajner tak, ako by ste robili v bežnom systéme. Napríklad v kontajneri Debian alebo Ubuntu:
[sourcecode] apt nainštalovať wget openssh-server htop tmux nano iptables [/ sourcecode]
Zastavenie kontajnera
Keď skončíte hraním s kontajnerom, buď sa pomocou príkazu exit
vrátite do hostiteľského systému . Teraz použite príkaz lxc-stop
na zastavenie kontajnera :
[zdrojový kód] lxc-stop -n ubu1 [/ sourcecode]
To spôsobí, že kontajner sa vypne čistým spôsobom a nebude mať na vašom systéme žiadne ďalšie zdroje okrem miesta na disku.
Klonovanie a snímky
klony
Po nainštalovaní programov v kontajneri a nakonfigurovaní podľa vašich predstáv by ste si mohli vytvoriť jednu alebo viacero kópií pre jednoduché poskytovanie. Môžete to urobiť vytvorením klonu, ktorý je presnou replikou kontajnera.
Napríklad, ak chcete vytvoriť klon kontajnera ubu1
(nazývame ho ubu2
), najprv zastavte kontajner pomocou lxc-stop
a potom použite príkaz lxc-copy
:
[zdrojový kód] lxc-stop -n ubu
lxc-copy -n ubu1-n ubu2 [/ sourcecode]
Tu voľba -n určuje zdrojový kontajner a voľba -N špecifikuje názov klonu . Ak chcete skontrolovať, či bol kontajner klonovaný, použite príkaz lxc-ls
:
snímky
Predpokladajme, že sa chystáte urobiť niektoré potenciálne nebezpečné alebo ťažko sa obnoviť zo zmien v kontajneri, napríklad pri rekonfigurovaní webového servera. Ak chcete minimalizovať poškodenie, pred vytvorením takejto zmeny si môžete vytvoriť snímku kontajnera. Ak sa počas konfigurácie niečo pokazí, môžete jednoducho zastaviť kontajner a vrátiť ho do predchádzajúceho pracovného stavu obnovením snímky.
Ak chcete vytvoriť snímku, najprv zastavte kontajner :
[zdrojový kód] lxc-stop -n ubu1 [/ sourcecode]
Potom vytvorte snímku pomocou príkazu lxc-snapshot
:
[zdrojový kód] lxc-snapshot -n ubu1 [/ sourcecode]
Tým sa vytvorí snímka s názvom snap0
. Všetky nasledujúce snímky, ktoré vytvoríte pomocou tohto príkazu, sa budú nazývať snap1, snap2 atď.
Potom môžete spustiť kontajner a vykonať požadované zmeny. Ak sa kedykoľvek chcete vrátiť k vytvorenej snímke, zastavte kontajner a pomocou príkazu lxc-snapshot
pomocou parametra -r
obnovte snímku :
[zdrojový kód] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
Tým sa obnoví snap0
snímku do kontajnera ubu1
.
Automatické spustenie kontajnerov pri zavádzaní
Môžete vytvoriť kontajner, napríklad kontajner webového servera, spustiť automaticky pri zavádzaní systému. Za týmto účelom prejdite do konfiguračného súboru kontajnera umiestneného v súbore $HOME/.local/share/lxc//config
a pridajte nasledujúce riadky :
[zdrojový kód] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]
Prvý riadok určuje, že kontajner by mal byť spustený pri štarte. Druhá informuje systém počkat 5 sekúnd pred spustením ďalšieho kontajnera, ak existuje.
Riešenie problémov
Ak máte problémy s štartovaním kontajnerov, najskôr sa pokúste lxc-start
príkaz lxc-start
v popredí . Napríklad:
[zdrojový kód] lxc-start -n ubu1 -F [/ sourcecode]
Zobrazia sa vám chyby na aktuálnej konzole, čo je veľmi užitočné pri zisťovaní povahy problému.
Problémy so súčasným behom viacerých kontajnerov
Ak sa pokúsite spustiť viacero kontajnerov naraz, môžu sa zobraziť chyby, ako napríklad "Kvóta dosiahla" alebo "Nepodarilo sa vytvoriť nakonfigurovanú sieť". Dôvodom je to, že používate viac sieťových rozhraní, ako vám boli pridelené. Môžete zvýšiť počet sieťových mostov, ktoré používateľ môže spustiť úpravou súboru /etc/lxc/lxc-usernet
ako root . Môže to vyzerať takto:
[zdrojový kód] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]
Môžete zmeniť číslo na konci (5 v tomto príklade) na väčšie číslo, ako je 10. To vám umožní spustiť až 10 kontajnerov naraz.
Iné používanie kontajnerov Linux
Linux kontajnery majú rôzne využitie. Môžete ich použiť ako ľahké testovacie boxy, napríklad na otestovanie rôznych konfigurácií webového alebo databázového servera predtým, ako ich odovzdáte na výrobný server. Ďalším prípadom použitia je testovanie, ako aplikácia beží na rôznych verziách rôznych distribučných súborov.
Môžete ich tiež použiť na izoláciu aplikácií, ktorým nedôverujete - akékoľvek poškodenie takejto aplikácie bude obmedzené na vlastný kontajner a nebude mať vplyv na hostiteľský systém. Upozorňujeme, že zatiaľ čo je možné spustiť aplikácie GUI v kontajneri, vyžaduje to značné množstvo času a úsilia, a preto sa neodporúča. Ak chcete spustiť aplikácie GUI v karanténe, prečítajte si článok o aplikáciách aplikácie Sandbox v systéme Linux.
Spustite viaceré distribúcie súčasne s kontajnermi Linux
Takto končí náš How-To na spúšťaní viacerých distribučných systémov Linux na jednom počítači, bez réžie virtuálneho stroja v plnej veľkosti. Užitočnosť tejto technológie je obmedzená len tvojím kreativitou, takže môžete experimentovať a zistiť nové prípady použitia. Ak máte problémy s nastavením kontajnerov, neváhajte nás položiť otázku v sekcii komentárov.