Obsah

Linuxové kontejnery

Linuxové kontejnery nabízejí formu virtualizace, která probíhá na úrovni operačního systému a umožnuje souběh jednotlivých izolovaných systémů Linuxu na jednom fyzickém stroji, kde kontejnery sdílí kernel fyzického stroje. Naprostá většina virtualizací, které probíhají na úrovni operačního systému, má oddělený souborový systém.

V návodu se dozvíte, k čemu jsou na routerech Turris 1.x a Turris Omnia LXC kontejnery, jak je nainstalovat a jak je použít. Případně je možné na routerech Turris Omnia použít i Docker.

K vytváření LXC kontejnerů nepoužívejte interní uložiště routeru (eMMC)!

Pro vytváření LXC kontejnerů je nutné připojit USB flash disk, případně pevný disk, pokud budete k vytváření LXC kontejnerů používat interní uložiště routeru (eMMC), dojde k jeho nenávratnému zničení. Oprava eMMC je technicky náročná a ne nemusí se na ni vztahovat záruka.

Virtuální operační systémy jsou omezeny vlastnostmi kernelu:

Výhody použití LXC kontejnerů

Instalace kontejnerů

1. Připojte externí úložiště (USB flash disk, pevný disk) do k Turris 1.x nebo Turris Omnia.
2. Přihlaste se do administračního rozhraní Foris, které by mělo být ve výchozím nastavení dostupné na adrese http://192.168.1.1.
3. Po přihlášení do administračního rozhraní Foris přejdete do záložky Updater a zaškrnete volbu Nástroje LXC.
4. Klikněte na tlačítko Uložit změny.
5. Chvíli počkejte než se nástroje pro LXC stáhnou a nainstalují.

Potom si můžete zvolit, zda chcete použít administrační rozhraní LuCI pro nainstalování LXC kontejnerů nebo CLI (příkazovou řádku). V obou případech je nutné připojený disk tzv. namountovat, tedy říci operačnímu systému do kterého adresáře má připojit obsah disku. Postupujte podle návodu na nastavení domácího NASu

LuCI

Nejjednodušší způsob vytvoření kontejneru je použítí download šablony. Ta stáhne tarball s vybranou distribucí a rozbalí ho na patřičné místo aniž by bylo třeba instalovat speciální nástroje na hostitelský systém. LXC nástroje jsou v TurrisOS upraveny, aby stahovaly distribuce z našeho serveru, kde jsme jich pro Vás několik připravili. Například pro Debian a Ubuntu používáme tarbally z linuxcontainers.org.

Kontejnery najdete v nabídce LuCINástrojeLXC Containers. Jak můžete vidět na obrázku níže, zvolíte si jméno pro Váš kontejner a jakou distribuci byste rádi nainstalovali. Stisknutím tlačítka Create se váš kontejner začne vytvářet. To může chvíli trvat a bohužel na rozdíl od příkazové řádky zde není vidět ukazatel postupu. Může se stát, že se nedozvíte proč vytváření selhalo.

Všechny nově vytvořené kontejnery mají ve výchozím stavu jednu virtuální síťovou kartu která je připojená do vašeho LAN bridge. To znamená že z pohledu sítě se chová jako libovolný jiný počítač ve vaší lokální síti. Na routeru mu tak můžete přiřadit v DHCP statickou adresu, nastavit přesměrování portů nebo pro něj nastavit různá pravidla ve firewallu.

CLI (příkazová řádka)

Pokud se rozhodnete pro CLI (příkazovou řádku), přihlaste se na SSH a po přihlášení zadejte příkaz

lxc-create -t download -n nazev_kontejneru

Po jeho spuštění vám bude položeno několik otázek pomocí nichž si budete moci zvolit preferovanou distribuci, u některých i kterou verzi byste chtěli.

Častou chybou je záměna architektury „armv7l“ za „armv71“. Posledním znakem má být malé písmeno L nikoliv číslice 1.

Používání kontejneru

První věc kterou byste měli udělat po vytvoření kontejneru je nastavit si v něm silné heslo, což lze provést pouze z CLI (příkazové řádky). Zavoláním následující příkazu dostanete root shell uvnitř kontejneru.

lxc-attach -n nazev_kontejneru

Pomocí něj už heslo nastavíte spuštěním příkazu passwd. Dobrý nápad je zároveň se i ujistit, že síť je správně nastavena a například si povolit ssh, abyste příště mohli do kontejneru přímo. Jak nastavit síť a povolit ssh se dozvíte v dokumentaci od distribuce kterou jste si vybrali.

Spouštět a vypínat kontejner lze jak z LuCI, tak z CLI (příkazové řádky). V LuCI na to naleznete tlačítka a uvidíte aktuální stav kontejneru. Pokud se rozhodnete používat CLI (příkazovou řádku), budou se vám hodit následující příkazy:

Spouštění kontejnerů při startu routeru

Aby kontejner startoval automaticky i po bootu, musíte editovat soubor /etc/config/lxc-auto.
Zde je příklad toho, jak tento soubor může vypadat:

/etc/config/lxc-auto
config container
        option name moje_vm
        option timeout 60
 
config container
        option name moje_druhe_vm
        option timeout 120

Jak vidíte, soubor může obsahovat konfiguraci pro více kontejnerů. Při startu routeru bude každý kontejner, který tu je nastaven, spuštěn a při vypínání bude korektně ukončen. Nastavením volby timeout můžete ovlivnit kolik času kontejner dostane na to, aby se korektně ukončil sám než bude zabit. Výchozí hodnota pro toto nastavení je 300 vteřin.

FAQ

Dříve měl image v Alpine nastavenou síť a byl ihned po instalaci funkční. Proč tomu tak teď není?
Zhruba od začátku února se lidé z LinuxContainers.org rozhodli platformu armhf pro Alpine odebrat. Komunita nás poprosila o přidání image pro Alpine zpět. Vytvořili jsme issue v jejich repositáři na Githubu a čekáme na odpověď. V tuto chvíli pro Alpine používáme tarball z jejich oficiálních stránek konkrétně z AlpineLinux.org mini root file systém, který je primárně určený pro Docker nebo chroots.

Pro nastavení sítě a další podrobnosti jak nainstalovat a nastavit Alpine najdete v komunitním návodu.