V tomto 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.
Technologie LXC je tzv. „light-weight“ virtualizace, kde jednotlivé virtuální stroje (neboli virtual machine – VM) sdílí jádro operačního systému. LXC se pak postará o izolaci a případně omezení systémových prostředků pro jednotlivé VM (jako je souborový systém, poskytnutá RAM, přístup k procesoru a dalším zařízením apod.).
Pro provoz LXC kontejnerů za žádných okolností nepoužívejte interní úložiště routeru (eMMC flash).
Běžné GNU/Linux distribuce nepočítají s provozem na zařízení jako je router a provádí velké množství zápisů na disk. Nepřiměřenými zápisy na interní eMMC flash disk dochází k jeho opotřebení a může tak dojít i k nenávratnému poškození Vašeho zařízení.
Pokud dojde ke zničení interní eMMC flash z důvodu nadměrného využívání, především kvůli provozu LXC kontejnerů bez externího úložiště, nemusí se na její opravu vztahovat záruka.
Po připojení externího úložiště (např USB flash či pevný disk) postupujte podle návodu na nastavení domácího NAS.
Nejjednodušší způsob vytvoření kontejneru je nainstalovat ho z tzv. download šablon. Tímto způsobem se stáhne archiv kontejneru s vybranou distribucí a rozbalí se 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 Turris OS upraveny, aby stahovaly distribuce z našeho serveru, kde jsme jich několik připravili. Například pro Debian a Ubuntu používáme šablony z linuxcontainers.org.
Poté je možné LXC kontejnery spravovat dvěma způsoby
Správa LXC kontejnerů je umístěna v nabídce LuCI → Nástroje → LXC Containers.
Jak je vidět na obrázku níže, při vytváření nového kontejneru se zvolí jeho jméno a distribuce, která se nainstaluje. Stisknutím tlačítka Create
se kontejner začne vytvářet, což může nějakou dobu trvat. Na rozdíl od příkazové řádky zde není vidět průběh vytváření a 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 LAN bridge Vašeho routeru. Z pohledu sítě se kontejner chová jako libovolný jiný počítač v lokální síti routeru. Na routeru je pak kontejneru možné přiřadit v DHCP statickou adresu, nastavit přesměrování portů nebo pro něj nastavit různá pravidla ve firewallu.
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í se systém zeptá na několik otázek, kde si bude možné zvolit preferovanou distribuci a u některých i konkrétní verze vydání.
Častou chybou je záměna architektury armv7l
za armv71
. Posledním znakem má být malé písmeno L
nikoliv číslice 1
.
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:
lxc-ls -f
– vypíše informace o všech nastavených kontejnerechlxc-info -n nazev_kontejneru
– zobrazí informace o konkrétním kontejnerulxc-start -n nazev_kontejneru
– zapne kontejnerlxc-stop -n nazev_kontejneru
– vypne kontejner
Aby kontejner startoval automaticky i po restartu routeru, musíte editovat soubor /etc/config/lxc-auto
.
Zde je příklad toho, jak tento soubor může vypadat:
config container option name moje_vm option timeout 60 config container option name moje_druhe_vm option timeout 120
Jak je vidět, soubor obsahuje konfiguraci pro více kontejnerů. Při startu routeru bude každý kontejner, který je zde uveden, spuštěn a při vypínání bude korektně ukončen. Nastavením volby timeout
je možné ovlivnit kolik času kontejner dostane na to, aby se korektně vypnul než bude násilně ukončen. Výchozí hodnota pro toto nastavení je 300 vteřin.
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 repozitáři na Githubu a čekáme na odpověď. V tuto chvíli pro Alpine používáme archiv 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.
Je možné na routeru Turris provozovat Docker?
Tato funkcionalita není oficiálně podporována. Pokud ale dobře víte co děláte a je to opravdu žádoucí, můžete na router nainstalovat a provozovat Docker kontejnery. Instrukce pro zprovoznění a další informace můžete najít na fóru.