Dnes si vytvoríme linuxový kontajner cez terminál, pomocou pct príkazu. Vždy keď som vytváral nejaký kontajner, tak som použil webové rozhranie Proxmoxu, kde sa o tom zmieňujem v rôzných článkoch. Nemôžem tvrdiť, že spôsob cez webové rozhranie je jednoduchší, ale určite je intuitívnejší a zvládne to takmer každý (pokiaľ vie ako to chce mať nastavené).
Obsah
Úvod
K ručnému vytvoreniu LXC ma priviedla situácia, že operačný systém (OS), resp. verzia OS, ktorú som chcel inštalovať nebola obsiahnutá v šablónach Proxmoxu. Je viac než isté, že budem chcieť inštalovať OS Debian 11 Bullseye. V dobe písania článku majú šablóny Proxmoxu v ponuke len Debian 10 a 9. Skontrolovať si to môžeme keď sa prihlásime do webového rozhrania Proxmoxu a v ponuke otvoríme >_ Shell
pveam update #Aktualizujeme dostupne šablóny
pveam available #Nechame si vypísať dostupné šablóny
Debian 11 bude určite pridaný, ale nedočkavci (ako ja) si ho môžu pridať ručne. Poďme sa do toho hneď pustiť, bude to rýchle a krátke.
Download rootfs a vytvorenie LXC
Prihláseny vo webovom rozhraní Proxmoxu resp. aj terminály už sme. Stiahneme rootfs na správne miesto /var/lib/vz/template/cache/
. Potom použijeme príkaz na vytvorenie LXC aj s konfiguračnými parametrami.
wget https://uk.images.linuxcontainers.org/images/debian/bullseye/amd64/default/20210815_05:24/rootfs.tar.xz -O /var/lib/vz/template/cache/debian-11-bullseye.tar.xz
pct create 109 local:vztmpl/debian-11-bullseye.tar.xz --ostype debian --hostname debian-11-test --unprivileged 1 --net0 name=eth0,bridge=vmbr1,gw=192.168.1.1,hwaddr=26:40:D5:E4:9C:A8,ip=192.168.1.109/24,type=veth --cores 1 --arch amd64 --memory 2048 --swap 1024 --rootfs local-zfs:8 --onboot 1 --password
Bližšie si popíšeme čo znamenajú tieto príkazy. Prvý príkaz wget
je snáď jasný. Stiahne balík rootfs a uloží ho na miesto, odkiaľ sa bude extrahovať. Druhý príkaz je o niečo zložitejší ale je jednoduchý na pochopenie. Môžeme si ho prepísať do takého tvaru aby sa lepšie čítal. Samozrejme tak ho môžme kopírovať aj do terminálu
pct create 109 \
local:vztmpl/debian-11-bullseye.tar.xz \
--ostype debian \
--hostname debian-11-test \
--unprivileged 1 \
--net0 name=eth0,bridge=vmbr1,gw=192.168.1.1,hwaddr=26:40:D5:E4:9C:A8,ip=192.168.1.109/24,type=veth \
--cores 1 \
--arch amd64 \
--memory 2048 --swap 1024 \
--rootfs local-zfs:8 \
--onboot 1 \
--password
Toto sú moje parametre pre nastavenie kontajnera. Myslím si, že takmer všetky položky sú jasné. Posledná položka --password
bude pred extrahovaním archívu po nás chcieť aby sme zadali 2x root heslo. Samozrejme nie všetky položky sú povinné, ale je dobre keď si napr. parametre pre sieť, alebo operačnú pamäť nastavíme hneď na začiatku.
Debian 11 Bullseye (resp. rootfs), ktorý sme stiahli z oficiálneho úložiska linuxcontainers.org je značne oklieštený, takže po inštalácii je potrebne doinštalovať množstvo chýbajúcich balíkov. Zatiaľ sme stále prihlásený v terminály na Proxmoxe, takže kontajner si môžeme spustiť a ak spustenie dopadne bez problémov, tak sa hneď do kontajnera prihlásime.
pct start 109 && pct enter 109
Poinštalačné nastavenia (nepovinné)
Teraz by sme mali byť v kontajnery úspešne prihlásený a môžeme spraviť niekoľko základných úkonov aby sme sa mohli prihlasovať napr. cez SSH. Hneď po prihlásení skontrolujeme verziu OS (výsledok by mal byť číslo 11.0).
cat /etc/debian_version
RootFS obsahuje len základné utility, takže postupne si nainštalujeme tie, ktoré budeme používať, resp. potrebovať. Najprv si však aktualizujeme systém. Ďalším príkazom nastavíme časovú zónu aby sa nám správne zobrazoval čas. Do systému pridáme nového užívateľa a zároveň ho pridáme do skupiny sudo
. Nakoniec si nainštalujeme utility ako sú mc, nano, openssh a hneď môžeme skontrolujeme či ssh beží
apt update && apt upgrade -y
dpkg-reconfigure tzdata
adduser jany
usermod -aG sudo jany
apt install mc -y
apt install nano
apt install openssh-server -y
systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Drop-In: /run/systemd/system/service.d
└─zzz-lxc-service.conf
Active: active (running) since Mon 2021-08-16 10:23:46 UTC; 1min 29s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 674 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 675 (sshd)
Tasks: 1 (limit: 4915)
Memory: 2.7M
CGroup: /system.slice/ssh.service
└─675 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Z výstupu je vidieť, že SSH je v poriadku a beží. Z bezpečnostného hľadiska je možné zmeniť port SSH z 22 na nejaký iný. Tak isto nie je dobré prihlasovať sa heslom, preto použijeme SSH kľúč. Ako si vytvorime SSH kľúče v linuxe som popisoval v článku Bezpečné pripojenie cez SSH. Predpokladom je, že kľúče už sú v našom systéme vygenerované, takže nám stačí použiť jednoduchý príkaz, ktorým verejný SSH kľúč skopírujeme na server.
ssh-copy-id 192.168.1.109
Teraz sa dokážeme prihlásiť na SSH ako bežný užívateľ bez použitia hesla. Ako som spomínal vyššie, tak môžeme zmeniť port pre SSH (napr. na 2299) a zakážeme sa prihlasovať ako root.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
sudo sed -i 's/#Port 22/Port 2299/' /etc/ssh/sshd_config
sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
Záver
Ručné vytvorenie linuxového kontajnera nie je vôbec zložité. Z oficiálneho úložiska linuxcontainers.org je možné pridať aj ďalšie OS, ktoré sa nenachádzajú na Proxmox úložisku. Viac o nástroji na manažovanie kontajnerov pct sa dá dočítať na tejto stránke.