LXC Kontejnery

18.5.2023 Turris Omnia

LXC je typ virtualizace, kde jednotlivé virtuální stroje 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é virtuální stroje.

Instalací linuxového kontejneru na routeru vytvoříme v síti virtuální počítač, který může být určený pro některé služby – např. pyLoad downloader, Transmission na stahování torrentů, místní webserver, atd.

Hlavní důvody pro vytvoření a provozování kontejneru jsou hlavně možnost využití jiné linuxové distribuce než OpenWRT (systém z něhož je odvozen Turris OS), např. Debian nebo Ubuntu. Některý software by se přímo na Turris rozběhával těžko, kdežto např. v Ubuntu je to bezproblémové (příklad – pyLoad běžící v Pythonu). Dále tímto oddělíme systém na routeru a systém kontejneru, takže pokud se něco “nepovede” na routeru, kontejner zůstává nedotčen (a to I kdyby došlo k resetu routeru do továrního nastavení), což platí I obráceně – krach systému v kontejneru router neovlivní.

Důležité – kontejner je potřeba instalovat na externí úložiště a nesmí se provozovat na interní paměti routeru – ta takovou nálož dlouho nevydrží. Jak toto nastavit je popsáno v článku vložení a nastavení disku.

Takže pokud to máme vyřešené můžeme se vrhnout na instalaci prvního kontejneru. Nejdříve je potřeba doinstalovat příslušné balíčky. V reForisSpráva BalíčkůBaličky zaškrtnout Nástroje pro LXC a dole na stránce kliknout na Uložit. Až bude hotovo, zobrazí se v pravém horním rohu notifikace. Poté raději restartovat router.

Balíčky LXC
Ve formuláři níže si můžete nastavit vlastní název uživatele, takže veškeré příkazy můžete rovnou kopírovat a vkládat.
Nastavení proměnných

Vytvoření kontejneru se provádí v LuCISlužbyKontejnery LXC. Zde vytvoříme nový kontejner. Název ideálně jako uživatel, pro kterého budou určeny služby v kontejneru, nebo podle účelu. Zde si vytvoříme kontejner pro uživatele user1 - kontejner pro pyLoad a Transmission. Šablona - jaká linuxová distribuce. Pro pyLoad a Transmission dávám Debian Bullseye. A kliknu na Vytvořit. Měl by se mi zobrazit kontejner s názvem user1 v sekci Dostupné kontejnery.

Vytvoření LXC kontejneru

Nyní už různá nastavení kontejneru, většina se řeší přes terminál.

ssh root@192.168.1.1

Nejdříve nastavím, aby se mi kontejner pouštěl při startu a edituji soubor /etc/config/lxc-auto:

Ve Vim se začne editovat zapnutím editačního módu stiskem Insert nebo i. Až se soubor doedituje, musí se nejdříve vyskočit z editačního módu stiskem Esc. Poté se napíše : a w a q a potvrdí Enter. Tím se změny uloží a ukončí Vim. Pokud se něco nepovedlo, a chceme vyskočit z Vimu bez uložení změn, vyskočíme z editačního módu (Esc) a napíšeme : a q a ! a potvrdíme Enter.
vim /etc/config/lxc-auto

a vložím si řádky. Druhý a třetí řádek odděluji tab:

config container
    option name user1
    option timeout 10

Teď už si spustíme kontejner:

lxc-start -n user1

Vlezeme do kontejneru:

lxc-attach -n user1

Nejdříve si změním to ošklivé LXCNAME – tedy název počítače:

vim /etc/hostname

Zde místo LXC_NAME napíšu user1
Pak ještě změna v dalším souboru:

vim /etc/hosts

kde v prvním řádku místo LXC_NAME dám také user1

Teď si ještě musím v kontejneru vytvořit adresáře, kam si namountuju složky z Turris OS, abych mohl ukádat stahované soubory na disk:

mkdir /mnt/downloads /mnt/torrents

To je pro začátek kontejneru vše, kontejner opustíme:

exit

A jsme v terminálu zase na routeru. Teď je na řadě config našeho kontejneru, kde si nastavíme mountování složek:

vim /srv/lxc/user1/config

Na konec sekce # Container specific configuration vložím řádky (předpokládá adresářovou strukturu z předchozích návodů):

lxc.mount.entry = /mnt/ssd/users/user1/Downloads mnt/downloads none bind 0 0
lxc.mount.entry = /mnt/ssd/users/user1/Torrents mnt/torrents none bind 0 0

Je načase restartovat router, abychom zkontrolovali že se nám kontejner pustí při startu, že bude mít námi navolené jméno počítače a že se mu namountují složky.

reboot

Nastavení statické IP

Pokud na náš kontejner (v síti je vidět jako samostatný počítač) budeme chtít přistupovat ze sítě (což skoro určitě budeme), je potřeba nastavit statickou IP adresu, aby nám např. při restartu routeru DHCP nepřidělilo kontejneru jinou IP adresu. V LuCISíťDHCP a DNS pod Nastevení serveru máme taby, klikneme na Statické zápujčky.

V sekci Aktivní propůjčené DHCP adresy (leases) bychom měli vidět náš počítač user1. Zde je vidět i MAC adresa. Klikneme na Přidat. Vyběhne na nás formulář.
Název počítače: user1
MAC-adresa: vybereme ze seznamu - už by jsme měli mít na výběr řádek kde bude jméno počítače našeho kontejneru - user1.
IPv4-adresa by už nám měla naskočit automaticky. Pokud chceme přiřadit jinou, můžeme ji úplně na konci seznamu vepsat.
Doba zapujčení: infinite

Statické zápujčky

A dáme Uložit a poté dole na stránce Uložit a použít. Pokud jsme zadali jinou IP adresu, je lepší resetovat kontejner a tím se nám přiřadí nová IP.

Nastavení lokálních DNS

Jestli jsme udělali vše správne, máme hotovo. Když budeme ke kontejneru či jiným počítačům v síti chtít přistupovat pomocí jména a ne jen ip adresy, musíme si toto nastavit. V reForisNastavení sítěDNS musíme mít nastaveno Registrovat DHCP klienty v DNS. Musíme si zvolit Doménu DHCP klientů v DNS. Já používám xxx, dobře se to pamatuje, nehrozí konflikty a nechaosí prohlížeče. Dole dáme Uložit. Teď by měl být náš kontejner dostupný na user1.xxx

Nastavení domény

Komentáře

Vložit komentář

Odpovědět

Vyplňte prosím antispam