Jak

Jak spustit více distribucí současně pomocí kontejnerů Linux

Jak spustit více distribucí současně pomocí kontejnerů Linux

Linux Containers (LXC) jsou lehká virtualizační technologie a mají různá použití. Je součástí linuxového jádra a umožňuje vám napodobit jednu nebo více linuxových distribucí na jediném hostiteli Linuxu. Představte si to jako prostředník mezi chrootem a úplnými virtualizačními technologiemi, jako jsou VirtualBox, KVM nebo Xen. Podobnou technologií přítomnou ve světě BSD jsou věznice FreeBSD.

Například stroj, na který píšu, je notebook se systémem Linux Mint 18, poháněný procesorem Intel Atom a má skromné ​​2 GB RAM. Přesto používám tři linuxové kontejnery, každý s instancí běžícího webového serveru Apache, bez velkého výkonu. To by bylo nemyslitelné s tradičním virtuálním strojem, jako je VirtualBox. Takže pokud jste chtěli spustit více distribucí na vašem systému Linux, Linux Containers by měl dělat práci za vás v pohodě.

Instalace a konfigurace kontejnerů Linux

Nastavujeme LXC na 64bitové verzi Linux Mint 18. Zde uvedené pokyny k instalaci budou také fungovat beze změn v Ubuntu 16.04 a novějších. Pokud používáte jiné distro, přečtěte si oficiální dokumentaci distra, pokud něco nefunguje podle očekávání. Předpokládá se také znalost příkazového řádku a obecné řešení potíží.

Předpoklady

Zde je několik věcí, které byste měli nastavit, abyste mohli začít používat více distribucí:

1. Nainstalujte LXC a další nezbytný software využívající:

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

2. Nyní musíte nakonfigurujte svůj profil. Chcete-li to nastavit, zadejte následující příkazy:

[zdrojový kód] mkdir -p ~ / .config / lxc
echo "lxc.id_map = u 0 100000 65536" & amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; amp; gt;& amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.type = veth" & amp; amp; gt;& amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.link = lxcbr0" & amp; amp; gt;& amp; amp; gt; ~ / .config / lxc / default.conf
echo "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ zdrojový kód]

3. Potom musíte nastavit uživatelská oprávnění jak následuje:

[zdrojový kód] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ USER

sudo cgm vytvořit všechny uživatele
sudo cgm chown všichni uživatelé $ (id -u) $ (id -g)
cgm movepid všichni uživatelé $$ [/ sourcecode]

Nastavení kontejneru

Nyní, když máte nainstalovaný LXC kontejner spolu s dalším nezbytným softwarem, jsou kroky pro nastavení kontejneru:

1. V tomto příkladu, nastavíme kontejner Ubuntu, pojmenovaný ubu1. Chcete-li to provést, proveďte následující příkaz:

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

2. Tady je -šablona parametr říká lxc na stažení předkonfigurovaný obrázek z internetu, zatímco -název parametr určuje název kontejneru - ubu1 v tomto případě. Můžete použít libovolné jméno, které se vám líbí.

3. Nyní uvidíte seznam podporované distro obrázky:

4. Zadejte specifika distribuce které chcete nainstalovat. Nainstaluji 64bitovou verzi Ubuntu 16.04 (kódové označení xenial) zde:

5. Pokud si přejete nainstalujte obrázek neinteraktivně, následující příkaz dosáhne stejného výsledku jako výše:

[sourcecode] lxc-create -t ​​download -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]

6. LXC nyní stáhne a nainstaluje minimální xeniální obrázek Ubuntu do vašeho hostitelského systému. Stahování a instalace může chvíli trvat v závislosti na vašem připojení k internetu a rychlosti vašeho počítače. Po instalaci, uvidíte takovou obrazovku:

Nyní jste připraveni použít nově nastavený kontejner Ubuntu.

Používání více distribucí s kontejnery Linux

Spuštění kontejneru

Spusťte svůj kontejner pomocí lxc-start příkaz:

[zdrojový kód] lxc-start -n ubu1 -d [/ zdrojový kód]

Tady je -n parametr určuje název kontejneru kterou chcete začít (ubu1 v tomto případě) a -d parametr dělá to běžet na pozadí.

Můžete ověřit, že kontejner byl spuštěn pomocí lxc-ls příkaz:

[zdrojový kód] lxc-ls -f [/ zdrojový kód]

The -F parametr povoluje ozdobný hlášení. Tady vidíte, že mám dva kontejnery - jeden Debian (zastaven) a jeden Ubuntu (běží).

Přístup a používání vašeho kontejneru

Můžeš přístup ke konzole kontejneru za použití lxc-připojit příkaz:

[zdrojový kód] lxc-attach -n ubu1 [/ zdrojový kód]

Nyní budete mít kořenová skořápka na vašem kontejneru. Doporučuje se nastavit heslo pro uživatele root a vytvořit běžný uživatelský účet:

[zdrojový kód] heslo
adduser beebom [/ zdrojový kód]

Samozřejmě, vyměňte beebom s požadovaným uživatelským jménem. Poté můžete nainstalovat software a nakonfigurovat kontejner, jako byste to dělali v běžném systému. Například v kontejneru Debian nebo Ubuntu:

[zdrojový kód] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]

Zastavení kontejneru

Po dokončení hraní s kontejnerem použijte buď výstup příkaz pro návrat do hostitelského systému. Nyní použijte lxc-stop příkaz zastavit svůj kontejner:

[zdrojový kód] lxc-stop -n ubu1 [/ zdrojový kód]

Tím se kontejner čistě vypne a nebude spotřebovávat žádné další prostředky ve vašem systému, s výjimkou místa na disku.

Klonování a snímky

Klony

Jakmile nainstalujete programy do kontejneru a nakonfigurujete je podle svých představ, možná budete chtít vytvořit jednu nebo více jeho kopií pro snadné zřizování. Můžete to udělat vytvořením klon, což je přesná replika kontejneru.

Například k vytvoření klonu ubu1 kontejner (řekněme tomu ubu2), nejprve zastavte kontejner použitím lxc-stop, pak použijte kopie lxc příkaz:

[zdrojový kód] lxc-stop -n ubu1

lxc-copy -n ubu1 -N ubu2 [/ zdrojový kód]

Tady je -Volba n určuje zdrojový kontejner, a -Možnost N určuje název klonu. Na ověřit že byl kontejner naklonován, použijte lxc-ls příkaz:

Momentky

Předpokládejme, že se chystáte provést nějaké potenciálně nebezpečné nebo obtížné zotavení ze změn v kontejneru, jako je například překonfigurování webového serveru. Chcete-li minimalizovat poškození, můžete před provedením takové změny vytvořit snímek kontejneru. V případě, že se během konfigurace něco pokazí, můžete jednoduše zastavit kontejner a obnovit jej do předchozího pracovního stavu obnovením snímku.

Nejprve vytvořte snímek zastavte nádobu:

[zdrojový kód] lxc-stop -n ubu1 [/ zdrojový kód]

Pak, vytvořit snímek za použití lxc-snímek příkaz:

[zdrojový kód] lxc-snapshot -n ubu1 [/ sourcecode]

Tím se vytvoří snímek s názvem snap0. Budou volány všechny následující snímky, které vytvoříte pomocí tohoto příkazu snap1, snap2, atd.

Poté můžete Start kontejner a proveďte požadované změny. Pokud se kdykoli chcete vrátit k vytvořenému snímku, stop kontejner a použijte lxc-snímek příkaz s -r parametr do obnovit snímek:

[zdrojový kód] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]

Tím se obnoví snímek snap0 do ubu1 kontejner.

Automatické spuštění kontejnerů při spuštění

Můžete vytvořit kontejner, například kontejner webového serveru, který se automaticky spustí při spuštění systému. Chcete-li to provést, přejděte na stránku konfigurační soubor kontejneru, nacházející se v $ HOME / .local / share / lxc // config, a přidejte následující řádky:

[zdrojový kód] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]

První řádek určuje, že kontejner by měl být spuštěn při spuštění. Druhý říká systému počkejte 5 sekund před spuštěním dalšího kontejneru, pokud existuje.

Odstraňování problémů

Pokud máte potíže se spuštěním kontejnerů, nejprve se pokuste spustit lxc-start přikázat Popředí režimu. Například:

[zdrojový kód] lxc-start -n ubu1 -F [/ zdrojový kód]

Tohle bude ukázat vám chyby na aktuální konzolie, což je velmi užitečné při identifikaci podstaty problému.

Problémy se současným spuštěním více kontejnerů

Pokud se pokusíte spustit více kontejnerů najednou, možná uvidíte chyby například „Bylo dosaženo kvóty“ nebo „Vytvoření nakonfigurované sítě se nezdařilo“. Je to proto, že používáte více síťových rozhraní, než vám bylo přiděleno. Můžeš zvýšit počet síťových mostů, které může uživatel spustit úpravou / etc / lxc / lxc-usernet soubor jako vykořenit. Může to vypadat nějak takto:

[zdrojový kód] # POČET BRIDGE TYPU USERNAME
beebom veth lxcbr0 5 [/ zdrojový kód]

Můžeš na konci změňte číslo (5 v tomto příkladu), na větší počet, jako je 10. To vám umožní spustit až 10 kontejnerů najednou.

Další použití kontejnerů s Linuxem

Linuxové kontejnery mají různá použití. Můžete je použít jako odlehčené testovací boxy, například k testování různých konfigurací webového nebo databázového serveru, než je potvrdíte na produkčním serveru. Dalším případem použití je otestovat, jak aplikace běží na různých verzích různých distribucí.

Můžete je také použít k izolaci aplikací, kterým nedůvěřujete - jakékoli poškození, které taková aplikace způsobí, bude omezeno na svůj vlastní kontejner a nebude mít vliv na hostitelský systém. Vezměte prosím na vědomí, že i když je možné spouštět aplikace GUI v kontejneru, vyžaduje to značné množství času a úsilí, a proto se nedoporučuje. Pokud chcete spouštět aplikace GUI v karanténě, přečtěte si náš článek o tom, jak karantény aplikací v systému Linux.

VIZ TÉŽ: 7 nejlepších alternativ VirtualBoxu, které můžete použít

Spouštějte více distribucí současně s linuxovými kontejnery

Tím končí náš How-To na spuštění více distribucí Linuxu na jednom počítači bez režie virtuálního stroje plné velikosti. Užitečnost této technologie je omezena pouze vaší kreativitou, takže můžete experimentovat a zjistit nové případy použití. Pokud máte potíže s nastavením kontejnerů, neváhejte se nás zeptat v sekci komentáře.

Facebook oznamuje druhý ročník Hacker Cup 2012
Facebook dnes na své stránce Hackercup oznámil, že registrace na Hacker Cup 2012 jsou nyní otevřené. Je to soutěž o algoritmické programování otevřená...
50+ nejlepších videí z révy všech dob, všechno nejlepší k narozeninám
Dnes jsou první narozeniny mobilní aplikace Vine na Twitteru. Za rok společnost Vine získala více než 40 milionů uživatelů, dokonce i značky začaly po...
Dnes jsem se naučil, 4 nejzajímavější fakta o používání Twitteru
Twitter roste ohromným tempem s 500 miliony aktivních uživatelů, 340 miliony tweetů denně a více než 1,6 miliardy vyhledávacích dotazů každý den. Nen...