Ako na neprivilegovany LXC

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

Stiahnutie šablóny

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.

Leave a Reply

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *