Uživatelské nástroje

Nástroje pro tento web

Tato dokumentace již není udržována týmem projektu Turris (přestože ji lze i nadále používat pro sdílení komunitního obsahu). Aktuální oficiální dokumentace se nachází na docs.turris.cz.

Linuxové kontejnery

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.

LXC

Technologie LXC je tzv. „light-weight“ virtualizace, kde jednotlivé virtuální stroje (neboli virtual machineVM) 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.).

Důvody pro použití kontejnerů

  • Kontejnery jsou virtuální stroje s vlastním izolovaným souborovým systémem.
    • Změny v software na routeru tak neovlivní Váš kontejner a stejně tak software uvnitř kontejneru nebude zasahovat či kolidovat do provozu routeru
    • Dokonce i factory reset Routeru neovlivní data uvnitř kontejneru (v případě externího úložiště – viz níže) a po zprovoznění LXC virtualizace lze původní stav kontejneru snadno obnovit.
    • Pro každý software můžete používat jiný kontejner i jinou distribuci.
  • Uvnitř kontejneru je možné provozovat různé GNU/Linux distribuce (např. Ubuntu nebo Debian)
    • To přináší veškeré balíčky a verze software dodávané danou distribucí
    • OpenWRT resp. Turris OS se snaží být minimalistické a poskytovat pouze takový software, který je na routeru potřeba
    • Software v dané distribuci může být i novější než je v Turris OS právě k dispozici

Nastavení uložiště pro kontejnery

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.

Instalace LXC kontejnerů

  1. Nastavte externí úložiště (viz výše)
  2. Přihlaste se do administračního rozhraní Foris (ve výchozím nastavení http://192.168.1.1/)
  3. V rozhraní Foris přejděte do záložky Updater, zaškrtnete volbu Nástroje LXC a klikněte na tlačítko Uložit změny
  4. Vyčkejte než se nástroje pro LXC stáhnou a nainstalují.

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

  1. Administrační rozhraní LuCI
  2. Příkazová řádka (CLI)

LuCI

Správa LXC kontejnerů je umístěna v nabídce LuCINástrojeLXC 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.

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í 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.

Používání kontejnerů

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 kontejnerech
  • lxc-info -n nazev_kontejneru – zobrazí informace o konkrétním kontejneru
  • lxc-start -n nazev_kontejneru – zapne kontejner
  • lxc-stop -n nazev_kontejneru – vypne kontejner

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

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:

/etc/config/lxc-auto
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.

FAQ

Alpine Linux

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.

Docker

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.