Proč LXD?
Není žádným tajemstvím, že kontejnery jsou nyní ve světě Linuxu horké. Rychle se stávají páteří cloudu a plní sny DevOps. I tak se na první pohled zdá trochu nadbytečné, aby Canonical vyvíjel nový kontejnerový systém pro Ubuntu ve světě, kterému snadno dominuje Docker. Tak proč to tedy udělali? Chcete-li vyplnit střední cestu mezi tradičními virtuálními stroji a Dockerem. Canonical sám řekl:„Kombinací rychlosti a hustoty kontejnerů se zabezpečením tradičních virtuálních strojů je Canonical LXD další generací kontejnerového hypervizoru pro Linux.“ Nejen to, ale kontejnery Docker lze spouštět v kontejnerech LXD, což přidává další rozměr potenciálním konfiguracím kontejnerů.
LXD je vylepšením stávajícího kontejnerového hypervisoru LXC Linux s vlastní sadou nástrojů, sdílející podobný vztah k původnímu projektu jako Ubuntu s Debianem s cílem převzít stávající skvělý software a zefektivnit jej pro snadnější použití. V nejnovější verzi Ubuntu LTS společnosti Canonical, 16.04, je LXD dobře integrovaný a snadno použitelný s jasnými a stručnými nástroji CLI, díky nimž je vytváření a správa kontejnerů bezproblémová.
Počáteční nastavení
Začít s LXD na Ubuntu 16.04 je tak snadné, jak by se dalo očekávat. Canonical zhustil instalaci do jediného balíčku, takže se jedná o instalaci jedním příkazem. Jednoduchý sudo apt-get install lxd
získá vše potřebné, abyste mohli začít.
Chcete-li přidat uživatele do skupiny ‚lxd‘, aby bylo možné provádět potřebné příkazy bez restartu, spusťte newgrp lxd
. Poté bude vše jasné a můžete pokračovat v nastavení hypervizoru LXD. Spuštění sudo lxd init
zahájí proces nastavení.
Proces počátečního nastavení se skládá ze série výzev příkazového řádku, které žádají o základní informace potřebné ke konfiguraci hypervizoru LXD. Celý proces je velmi přímočarý a vyžaduje informace, jako je typ úložiště, IP adresa, číslo portu, heslo a zda je připojení přemostěno.
Po této sérii výzev se nastavení přesune do textového rozhraní se sérií otázek o síťové konfiguraci hypervizoru LXD. Tento proces vytváří přemostěné sítě IPv4 a IPv6 doplněné o vlastní podsítě a DHCP. Tímto způsobem LXD funguje jako virtuální router pro všechny kontejnery na něm nasazené a poskytuje jeden bod konfigurace pro tyto virtuální sítě.
Je zřejmé, že toto je jedna z těch dob, kdy LXD září jako řešení „nejlepší z obou světů“. Samozřejmě je také hezké, že Canonical poskytuje konfigurační nabídku ve stylu Debianu, která umožňuje projít procesem a usnadnit jej téměř bezmyšlenkovitě. Jakmile je konfigurace dokončena, zobrazí se zpět na příkazový řádek a poskytne krátkou zprávu, že byla úspěšná.
Obrázky a kontejnery LXD
Nastavení kontejneru
Stejně jako Docker je i LXD založen na obrázku. Poskytuje tři hlavní možnosti pro získávání obrázků; vzdálené, vestavěné a místní importy. Existuje několik vzdálených zdrojů, které jsou dodávány s LXD ihned po vybalení, stejně jako místní zdroje. Chcete-li zjistit, jaké zdroje jsou k dispozici, stačí spustit lxc remote list
a zobrazí se vám pohodlná tabulka příkazového řádku zobrazující informace o aktuálně dostupných zdrojích.
Pro účely tohoto článku se místní zdroje jevily jako nejlepší a nejjednodušší možnost. K dispozici jsou čisté obrazy Ubuntu, které jsou skvělým výchozím bodem pro jakékoli nasazení. Toto je další z těch „nejlepších z obou světů“. Namísto oříznutého kontejneru šitého na míru pro provoz jedné aplikace jsou kontejnery LXD blíže plnohodnotnému virtuálnímu počítači.
Jsou dodávány s přístupem z příkazového řádku a dokonce s možností instalovat balíčky. LXD zároveň poskytuje vynikající nástroje příkazového řádku pro správu kontejnerů a dokonce i odesílání a stahování souborů do az nich. Chcete-li spustit kontejner Ubuntu 16.04, stačí spustit lxc launch ubuntu:16.04 name-of-container
. LXD načte obrázek, vytvoří kontejner a spustí kontejner.
Práce s kontejnery LXD
Stav kontejneru lze snadno zkontrolovat pomocí lxc list
. Spouštění a zastavování kontejnerů je stejně snadné díky lxc stop name-of-container
a lxc start name-of-container
.
Jednou z jasných výhod LXD oproti tradičním kontejnerům, jako je Docker, je možnost upravovat běžící kontejnery a aktualizovat je spíše než balit kontejner, nasazovat jej a nechávat jej na pokoji. Pokud jde o předávání souborů mezi hostitelským systémem a kontejnery, LXD má příkazy push a pull, které umožňují předávat soubory tam a zpět. Pokud je potřeba něco víc, LXD poskytuje skvělý nástroj příkazového řádku pro přístup ke spuštěným kontejnerům a získání plného prostředí. Chcete-li získat přístup k shellu běhu kontejneru,
lxc exec name-of-container -- /bin/bash
.
V shellu kontejneru je úplný linuxový souborový systém a příkazový řádek má přístup ke všem nástrojům, které byly přibaleny k obrazu nebo nainstalovány do kontejnerů později. To umožňuje kontejnerům LXD spouštět aktualizace a více aplikací, včetně Dockeru. Tímto způsobem by technik DevOps mohl nasadit kontejner LXD s databází a webovým serverem a také Docker s několika webovými aplikacemi spuštěnými v kontejnerech Docker.
To je samozřejmě jen jedna z mnoha možností, ale klíčový aspekt zde spočívá v tom, že LXD přidává do rovnice další vrstvu a poskytuje větší flexibilitu při konfiguraci softwarového zásobníku.
Závěr
I z této nejzákladnější zkoušky s LXD je jasné, že Canonical splnil svůj cíl ve vytvoření jasného středu mezi plnou virtualizací Linuxu a kontejnery Docker. LXD je nástroj, o kterém by inženýři DevOps měli vážně uvažovat o přidání do své sady nástrojů.