V linuxovom prostredí je možné vytvoriť linuxový kontajner (LXC) čo môžeme chápať ako ľahkú virtualizáciu na úrovni operačného systému. Nejedná sa o plne virtualizovaný stroj, ale ani o chroot. Je to jednoducho niečo medzi tým. LXC je izolovaný proces , ktorý využíva hostiteľské jadro a teda má veľmi nízke nároky na HW. Nevýhodou je, že v LXC nie je možné spustiť iný operačný systém ako linux. Ak chceme spustiť OS typu MS Windows, Solaris, BSD a pod. musíme siahnuť po KVM.
Ako som už uviedol, tak LXC beží v nejakom namespace a na základe cgroups má pridelené resp. limitované HW prostriedky (CPU, RAM, I/O). LXC je možné spustiť v privilegovanom a neprivilegovanom režime. Niekedy LXC používali len privilegovaný režim a z tohto hľadiska predstavovali nebezpečie pre hostiteľský OS. Pre UID a GID sú pridelené rovnaké identifikátory v hostiteľskom OS ako v LXC. Čiže ak by sa niekto pomocou nejakého syscallu vymanil z LXC, tak by mohol na hostiteľskom OS spúšťať akokoľvek príkaz z právami roota. Od LXC ver. 1.0 je možné spustiť LXC v neprivilegovanom režime.
Pred samotnou inštaláciou potrebujeme získať šablónu linuxu, ktorú budeme inštalovať. Máme minimálne 2 možnosti.
Prvá možnosť je jednoduchá (klikacia) a robí sa priamo vo web rozhraní Proxmoxu. Počas inštalácie Proxmoxu nám systém automaticky disk rozdelí na 2 časti (viď nasledujúci obrázok (ľavý stĺpec (2 spodne ikonky))) . Na prvej časti sú uložené:
- Backups LXC a VM
- ISO Images
- CT Templates
Na druhej časti rozdeleného disku sú:
- VM Disk
- CT Volumes
Nasledujúci obrázok ukazuje ako v piatich krokoch stiahneme na lokálny disk šablónu akéhokoľvek dostupného OS v ponuke. Ja som konkrétne označil a stiahol debian-10-standard_10.7-1_amd64.tar.gz

Druhá možnosť je ešte jednoduchšia. Vo webovom termináli na hlavnom NODE spustíme shell a zadáme niekoľko jednoduchých príkazov
pveam update #Aktualizujeme dostupne šablóny
pveam available #Nechame si vypísať dostupné šablóny
Krátka ukážka dostupných šablón
mail proxmox-mailgateway-6.3-standard_6.3-1_amd64.tar.gz
system alpine-3.11-default_20200425_amd64.tar.xz
system alpine-3.12-default_20200823_amd64.tar.xz
system archlinux-base_20201116-1_amd64.tar.gz
system centos-7-default_20190926_amd64.tar.xz
system centos-8-default_20201210_amd64.tar.xz
system debian-10-standard_10.7-1_amd64.tar.gz
system debian-9.0-standard_9.7-1_amd64.tar.gz
system devuan-3.0-standard_3.0_amd64.tar.gz
system fedora-32-default_20200430_amd64.tar.xz
system fedora-33-default_20201115_amd64.tar.xz
system gentoo-current-default_20200310_amd64.tar.xz
system opensuse-15.2-default_20200824_amd64.tar.xz
system ubuntu-16.04-standard_16.04.5-1_amd64.tar.gz
system ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz
system ubuntu-20.04-standard_20.04-1_amd64.tar.gz
system ubuntu-20.10-standard_20.10-1_amd64.tar.gz
turnkeylinux debian-10-turnkey-ansible_16.0-1_amd64.tar.gz
turnkeylinux debian-10-turnkey-asp-net-core_16.0-1_amd64.tar.gz
turnkeylinux debian-10-turnkey-avideo_16.1-1_amd64.tar.gz
turnkeylinux debian-10-turnkey-b2evolution_16.1-1_amd64.tar.gz
turnkeylinux debian-10-turnkey-bagisto_16.0-1_amd64.tar.gz
turnkeylinux debian-10-turnkey-bugzilla_16.0-1_amd64.tar.gz
Ďalší príkaz stiahne nami vybranú šablónu (pre náš konkretný prípad debian-10-standard_10.7-1_amd64.tar.gz)
pveam download local debian-10-standard_10.7-1_amd64.tar.gz
Šablóna je automaticky uložená do adresára /var/lib/vz/template/cache/. Môžeme si to skontrolovať v terminály.
pveam list local
NAME SIZE
local:vztmpl/debian-10-standard_10.7-1_amd64.tar.gz 220.36MB
LXC budeme vytvárať tradične vo webovom rozhraní Proxmoxu. Nasledujúca galéria Vás prevedie inštaláciou neprivilegovaného kontajnera. Pod galériou bude popis ku každému obrázku (obrázky v galérii je možné posúvať pomocou šipiek, ktoré sú umiestnené pod galériou).
- Karta General
- Vyplníme Hostname
- Unprivileged contajner musí byť zafajkovaný
- Vyplníme root Password a potvrdíme Confirm Password
- V prípade ak máme SSH public key, tak ho vložíme do poľa
- Karta Template
- Načítame šablónu Debian 10
- Karta Root Disk
- Disk Size – si nastavíme podľa seba (mne stačí 32 GB)
- Karta CPU
- Cores – procesorové jadra nastavíme 2 (alebo podľa uváženia)
- Karta Memory
- Memory (MiB) – vyberieme veľkosť pamäte (mne stači 2048)
- Swap (MiB) – by mala byť polovica z fyzickej RAM
- Karta Network
- Parametre v prvom stĺpci sú väčšinou prednastavené
- Firewall – zrušíme fajku (ten sa nastaví v kontajnery)
- IPv4 – Static
- IPv4/CIDR – Nastavíme pevnú IP z LAN rozsahu a nezabudnúť na masku podsiete v tvare CIDR
- Gateway IPv4 – Nastavíme podľa našej GW v LAN
- Karta DNS – nemusíme nastavovať nič
- Karta Confirm
- Vygeneruje info čo sme nastavili
- Start after created – zafajkujeme
- Klik na finish
LXC bude nainštalovaný do niekoľkých sekúnd a automaticky sa spustí. Na poslednom obrázku číslo 9 je vidieť bežiaci LXC. Je tam vidieť pridelené jadra CPU (momentálne je vyťažené na 0%). Pamäť RAM spotrebúva 18 MiB z 2048 MiB. Šablóna Debianu zabrala z nášho virtuálneho disku niečo vyše 1% čo predstavuje 386 MiB. Kontajner je samozrejme cez virtuálny sieťový bridge prepojený na fyzický port eth0 a má pridelenú klasickú IP adresu z LAN rozsahu, ktorú sme nastavili na karte Network.
Záver
Dnes som ukázal ako si môžeme jednoducho vytvoriť neprivilegovaný linuxový kontajner. Takýto kontajner môžeme využiť ako klasicky linuxový server. Najčastejšie sa takéto LXC používajú ako webové, databázové, OpenVPN, storage servery atď. Ja mám momentálne na LXC Debian 9 postavený LAMP (Linux Apache MariaDB, PHP) server a postupne by som chcel prejsť na LEMP (Linux Nginx MariaDB, PHP-FPM). Z tohto dôvodu som si nainštaloval nový LXC. V niektorom z nasledujúcich blogov by som chcel popísať ako nainštalujeme na Debianu 10 LEMP.