Linuxové kontejnery (LXC) jsou lehká virtualizační technologie a mají různá použití. Je součástí jádra Linuxu a umožňuje vám emulovat jeden nebo více linuxových distribucí na jednom hostiteli Linuxu. Přemýšlejte o tom jako o prostředním prostředí mezi chrootem a plnými virtualizačními technologiemi, jako jsou VirtualBox, KVM nebo Xen. Podobnou technologií, která se nachází ve světě BSD, jsou vězení FreeBSD.
Jako příklad, stroj, na kterém píšu, je notebook s operačním systémem Linux Mint 18, napájený procesorem Intel Atom, a má 2 GB RAM. Přesto provozuji tři Linuxové kontejnery, každý s instancí 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 několik distribucí v systému Linux, Linux Kontejnery by měli udělat práci za vás v pohodě.
Instalace a konfigurace kontejnerů Linuxu
Nastavujeme LXC na Linux Mint 18 64-bit. Instalační pokyny zde uvedené budou také fungovat beze změny na Ubuntu 16.04 a vyšší. Pokud používáte jiné distro, podívejte se prosím na oficiální dokumentaci vašeho distra, pokud něco nefunguje podle očekávání. Předpokládá se také obeznámenost s příkazovým řádkem a obecné řešení problémů.
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 pomocí:
[sourcecode] sudo apt install lxc lxc-templates uidmap [/ sourcecode]
2. Nyní musíte nakonfigurovat svůj profil . Chcete-li jej nastavit, zadejte následující příkazy:
[sourcecode] mkdir -p ~ / .config / lxc
echo "lxc.id_map = u 0 100000 65536" & gt; ~ / .config / lxc / default.conf
echo "lxc.id_map = g 0 100000 65536" & gt; & gt; ~ / .config / lxc / default.conf
echo "lxc.network.type = veth" & amp; gt; & amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.link = lxcbr0" & amp; gt; ~ / .config / lxc / default.conf
echo "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]
3. Poté musíte nastavit oprávnění uživatele následujícím způsobem:
[sourcecode] 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 all user $ (id -u) $ (id -g)
cgm movepid all user $$ [/ sourcecode]
Nastavení kontejneru
Nyní, když máte nainstalovaný LXC kontejner spolu s jiným nezbytným softwarem, jsou zde kroky pro nastavení kontejneru:
1. V tomto příkladu nastavíme kontejner Ubuntu s názvem ubu1
. Chcete-li to provést, proveďte následující příkaz:
[sourcecode] lxc-create –template download –name ubu1 [/ sourcecode]
2. Parametr –template říká lxc ke stažení předkonfigurovaného obrazu z internetu, zatímco parametr –name
v tomto případě určuje název kontejneru - ubu1
. Můžete použít libovolné jméno.
3. Nyní se zobrazí seznam podporovaných obrázků distro :
4. Zadejte specifika distribuce, kterou chcete nainstalovat. Nainstaluji 64bitovou verzi Ubuntu 16.04 (kódové označení xenial) zde:
5. Pokud si přejete instalovat obraz neinteraktivně, následující příkaz dosáhne stejného výsledku jako výše:
[sourcecode] lxc-create -t download -n ubu1 - –dist ubuntu - uvolnění xenial –arch amd64 [/ sourcecode]
6. LXC nyní stáhne a nainstaluje minimální obraz Ubuntu xenial ve vašem hostitelském systému. Stahování a instalace může chvíli trvat v závislosti na připojení k internetu a rychlosti vašeho počítače. Po instalaci se zobrazí obrazovka takto:
Nyní jste připraveni použít nově vytvořený kontejner Ubuntu.
Použití více distrů s Linux kontejnery
Spuštění kontejneru
Spusťte kontejner pomocí příkazu lxc-start
:
[sourcecode] lxc-start -n ubu1 -d [/ zdrojový kód]
Parametr -n
určuje název kontejneru, který chcete spustit (v tomto případě ubu1
) a parametr -d
jej spustí na pozadí .
Pomocí příkazu lxc-ls
můžete ověřit, že kontejner byl spuštěn:
[sourcecode] lxc-ls -f [/ sourcecode]
Parametr -f
umožňuje efektní hlášení. Zde vidíte, že mám dva kontejnery - jeden Debian (zastaven) a jeden Ubuntu (běh).
Přístup a používání kontejneru
K konzole kontejneru můžete přistupovat pomocí příkazu lxc-attach
:
[sourcecode] lxc-attach -n ubu1 [/ sourcecode]
Nyní máte v kontejneru kořenový shell . Doporučujeme nastavit heslo pro uživatele root a vytvořit běžný uživatelský účet :
[sourcecode] passwd
adduser beebom [/ sourcecode]
Samozřejmě nahraďte beebom uživatelským jménem, které chcete. Pak můžete nainstalovat software a konfigurovat svůj kontejner, jako byste to dělali na pravidelném systému. Například v kontejneru Debian nebo Ubuntu:
[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]
Zastavení kontejneru
Po dokončení přehrávání s kontejnerem se buď pomocí příkazu exit
vrátíte do hostitelského systému . Nyní pomocí příkazu lxc-stop
zastavte kontejner :
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
Tím se kontejner vypne čistě a nebude spotřebovávat žádné další prostředky v systému, s výjimkou místa na disku.
Klonování a snímky
Klony
Jakmile jste nainstalovali programy do kontejneru a nakonfigurovali je podle svých představ, možná budete chtít vytvořit jednu nebo více kopií, abyste je mohli snadno vytvořit . Můžete to udělat tak, že vytvoříte klon, který je přesnou replikou kontejneru.
Chcete-li například vytvořit klon kontejneru ubu1
(nazýváme jej ubu2
), nejprve zastavte kontejner pomocí lxc-stop
a poté použijte příkaz lxc-copy
:
[sourcecode] lxc-stop -n ubu
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
Volba -n zde určuje zdrojový kontejner a volba -N určuje název klonu . Chcete-li ověřit, že byl kontejner klonován, použijte příkaz lxc-ls
:
Snímky
Předpokládejme, že se chystáte některé potenciálně nebezpečné nebo těžké obnovit ze změn v kontejneru, jako je například změna konfigurace webového serveru. Chcete-li minimalizovat poškození, můžete vytvořit snímek kontejneru před provedením takové změny. V případě, že se během konfigurace něco pokazí, můžete kontejner jednoduše zastavit a obnovit do předchozího pracovního stavu obnovením snímku.
Chcete-li vytvořit snímek, nejprve zastavte kontejner :
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
Poté vytvořte snímek pomocí příkazu lxc-snapshot
:
[sourcecode] lxc-snapshot -n ubu1 [/ sourcecode]
Tím se vytvoří snímek s názvem snap0
. Jakékoliv další snímky, které vytvoříte pomocí tohoto příkazu, se nazývají snap1, snap2 atd.
Poté můžete kontejner spustit a provést požadované změny. Pokud se chcete kdykoli vrátit k vytvořenému snímku, zastavte kontejner a pomocí příkazu lxc-snapshot
s parametrem -r
obnovte snímek :
[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
To obnoví snapshot snap0
do kontejneru ubu1
.
Automatické spuštění Kontejnerů při spouštění
Můžete vytvořit kontejner, například kontejner webového serveru, spustit automaticky při spuštění systému. Chcete-li to provést, přejděte do konfiguračního souboru kontejneru umístěného v $HOME/.local/share/lxc//config
a přidejte následující řádky :
[sourcecode] 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 startu. Druhý říká systému, aby počkal 5 sekund před zahájením dalšího kontejneru, pokud existuje.
Odstraňování problémů
Pokud máte potíže se spuštěním kontejnerů, první věcí, kterou je třeba zkusit, je spustit příkaz lxc-start
v režimu popředí . Například:
[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]
To vám ukáže chyby na aktuální konzole e, což je velmi užitečné při identifikaci povahy problému.
Problémy se spuštěním více kontejnerů současně
Pokud se pokusíte spustit více kontejnerů najednou, můžete vidět chyby, jako například „Kvóta dosažená“ nebo „Nepodařilo se vytvořit nakonfigurovanou síť“. Je to proto, že používáte více síťových rozhraní, než je přiděleno vám. Počet síťových můstků, které může uživatel spustit, můžete zvýšit úpravou souboru /etc/lxc/lxc-usernet
jako root . Mohlo by to vypadat takto:
[sourcecode] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]
Číslo můžete změnit na konci (5 v tomto příkladu) na větší číslo, například 10. To vám umožní spustit až 10 kontejnerů najednou.
Další použití kontejnerů Linuxu
Linuxové kontejnery mají různá použití. Můžete je použít jako odlehčené testovací boxy, například pro vyzkoušení různých konfigurací webového nebo databázového serveru před jejich uvedením na produkční server. Dalším případem použití je testování, jak aplikace běží na různých verzích různých distribucí.
Můžete je také použít k izolování aplikací, kterým nedůvěřujete - jakékoli poškození takové aplikace bude omezeno na 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 GUI aplikace v kontejneru, trvá značné množství času a úsilí, a proto se nedoporučuje. Pokud chcete spouštět aplikace s grafickým uživatelským rozhraním v karanténě, podívejte se na náš článek o aplikacích karantény v systému Linux.
Spustit více Distros současně s Linux kontejnery
Tak končí naše How-To na spouštění více linuxových distribucí na jediném počítači, bez režijního zatížení virtuálního stroje plné velikosti. Využití této technologie je omezeno pouze vaší kreativitou, takže můžete experimentovat a zjistit případy nových použití. Máte-li potíže s nastavením kontejnerů, neváhejte a zeptejte se nás v sekci komentáře.