LXD ir nÄkamÄs paaudzes sistÄmas konteineru pÄrvaldnieks, tÄ teikts avots. Tas piedÄvÄ lietotÄja interfeisu, kas ir lÄ«dzÄ«gs virtuÄlajÄm maŔīnÄm, taÄu tÄ vietÄ tiek izmantoti Linux konteineri.
LXD kodols ir priviliÄ£Äts dÄmons (pakalpojums, kas darbojas ar root tiesÄ«bÄm), kas nodroÅ”ina REST API, izmantojot lokÄlo unix ligzdu, kÄ arÄ« caur tÄ«klu, ja ir instalÄta atbilstoÅ”Ä konfigurÄcija. Klienti, piemÄram, ar LXD nodroÅ”inÄtais komandrindas rÄ«ks, veic pieprasÄ«jumus, izmantojot Å”o REST API. Tas nozÄ«mÄ, ka neatkarÄ«gi no tÄ, vai piekļūstat vietÄjam resursdatoram vai attÄlam resursdatoram, viss darbojas tÄpat.
Å ajÄ rakstÄ mÄs nekavÄsimies sÄ«kÄk pie LXD jÄdzieniem, mÄs neapskatÄ«sim visas pieejamÄs iespÄjas, kas izklÄstÄ«tas dokumentÄcijÄ, ieskaitot neseno ievieÅ”anu jaunÄkajÄs LXD versijÄs atbalstam QEMU virtuÄlajÄm maŔīnÄm paralÄli konteineriem. TÄ vietÄ mÄs apgÅ«sim tikai konteineru pÄrvaldÄ«bas pamatus ā krÄtuves pÅ«lu iestatÄ«Å”anu, tÄ«klu izveidi, konteinera darbinÄÅ”anu, resursu ierobežojumu piemÄroÅ”anu un momentuzÅÄmumu izmantoÅ”anu, lai jÅ«s varÄtu iegÅ«t pamatzinÄÅ”anas par LXD un izmantot konteinerus operÄtÄjsistÄmÄ Linux.
Lai iegÅ«tu pilnÄ«gu informÄciju, lÅ«dzu, skatiet oficiÄlo avotu:
Tas nozÄ«mÄ, ka uzreiz tiks instalÄtas divas pakotnes, viena kÄ sistÄmas pakotne, bet otra kÄ snap pakotne. Divu pakotÅu instalÄÅ”ana sistÄmÄ var radÄ«t problÄmas, jo sistÄmas pakotne var kļūt par bÄreÅiem, ja snap pakotÅu pÄrvaldnieks noÅem snap pakotni.
Atrodi paketi lxd snap repozitorijÄ varat izmantot Å”Ädu komandu:
snap find lxd
Name Version Summary
lxd 3.21 System container manager and API
lxd-demo-server 0+git.6d54658 Online software demo sessions using LXD
nova ocata OpenStack Compute Service (nova)
nova-hypervisor ocata OpenStack Compute Service - KVM Hypervisor (nova)
distrobuilder 1.0 Image builder for LXC and LXD
fabrica 0.1 Build snaps by simply pointing a web form to...
satellite 0.1.2 Advanced scalable Open source intelligence platform
Palaižot komandu list jÅ«s varat pÄrliecinÄties, ka iepakojums lxd vÄl nav instalÄts:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalā core
Neskatoties uz to, ka LXD ir snap pakotne, tÄ ir jÄinstalÄ, izmantojot sistÄmas pakotni lxd, kas sistÄmÄ izveidos atbilstoÅ”o grupu, nepiecieÅ”amÄs utilÄ«tas iekÅ”Ä /usr/bin uc
sudo apt update
sudo apt install lxd
PÄrliecinÄsimies, ka pakotne ir instalÄta kÄ snap pakotne:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalā core
lxd 3.21 13474 stable/ā¦ canonicalā -
Lai sistÄmÄ instalÄtu LXD pakotni, jums ir jÄizpilda Å”Ädas komandas, pirmÄ atjauninÄs repozitorijÄ pieejamo sistÄmas pakotÅu sarakstu, otrÄ tieÅ”i instalÄs pakotni:
sudo pacman -Syyu && sudo pacman -S lxd
PÄc pakotnes instalÄÅ”anas, lai parasts lietotÄjs pÄrvaldÄ«tu LXD, tÄ jÄpievieno sistÄmas grupai lxd:
sudo usermod -a -G lxd user1
PÄrliecinÄsimies, ka lietotÄjs user1 pievienots grupai lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Ja grupa lxd nav redzams sarakstÄ, tad vÄlreiz jÄaktivizÄ lietotÄja sesija. Lai to izdarÄ«tu, jums ir jÄatsakÄs un jÄpiesakÄs ar vienu un to paÅ”u lietotÄju.
Pirms inicializÄcijas sÄkuma mums ir jÄsaprot, kÄ LXD krÄtuve ir loÄ£iski sakÄrtota.
KrÄtuve (glabÄÅ”ana) sastÄv no no viena vai vairÄkiem UzglabÄÅ”anas baseins kas izmanto kÄdu no atbalstÄ«tajÄm failu sistÄmÄm, piemÄram, ZFS, BTRFS, LVM vai parastos direktorijus. Katrs UzglabÄÅ”anas baseins ir sadalÄ«ts sÄjumos (KrÄtuves apjoms), kas satur attÄlus, konteinerus vai datus citiem nolÅ«kiem.
AttÄli - tie ir Ä«paÅ”i samontÄti izplatÄ«jumi bez Linux kodola un pieejami no ÄrÄjiem avotiem
Konteineri - tie ir izvietoti izplatÄ«Å”anai no attÄliem, gatavi lietoÅ”anai
MomentuzÅÄmumi ā tie ir konteineru stÄvokļa momentuzÅÄmumi, kuros varat atgriezties
Lai pÄrvaldÄ«tu krÄtuvi LXD, izmantojiet komandu lxc storage sertifikÄts, kuru varat iegÅ«t, norÄdot atslÄgu - lxc storage --help
NÄkamÄ komanda parÄda visu sarakstu UzglabÄÅ”anas baseins LXD krÄtuvÄ:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Lai skatÄ«tu visu sarakstu KrÄtuves apjoms atlasÄ«tajÄ UzglabÄÅ”anas baseins kalpo komandai lxc storage volume list:
lxc storage volume list hddpool
+-------+----------------------------------+-------------+---------+
| TYPE | NAME | DESCRIPTION | USED BY |
+-------+----------------------------------+-------------+---------+
| image | ebd565585223487526ddb3607f515... | | 1 |
+-------+----------------------------------+-------------+---------+
lxc storage volume list ssdpool
+-----------+----------------------------------+-------------+---------+
| TYPE | NAME | DESCRIPTION | USED BY |
+-----------+----------------------------------+-------------+---------+
| container | alp3 | | 1 |
+-----------+----------------------------------+-------------+---------+
| container | jupyter | | 1 |
+-----------+----------------------------------+-------------+---------+
| image | ebd565585223487526ddb3607f515... | | 1 |
+-----------+----------------------------------+-------------+---------+
TÄpat, ja priekÅ” UzglabÄÅ”anas baseins Veidojot, tika atlasÄ«ta BTRFS failu sistÄma, pÄc tam iegÅ«stiet sarakstu KrÄtuves apjoms vai apakÅ”lÄ«meÅi BTRFS interpretÄcijÄ varat izmantot Ŕīs failu sistÄmas rÄ«ku komplektu:
sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/hddpool
ID 257 gen 818 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/ssdpool
ID 257 gen 1820 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
ID 260 gen 1819 parent 5 top level 5 path containers/jupyter
ID 263 gen 1820 parent 5 top level 5 path containers/alp3
Pirms konteineru izveides un izmantoÅ”anas ir jÄveic vispÄrÄ«ga LXD inicializÄÅ”ana, kas izveido un konfigurÄ tÄ«klu un krÄtuvi. To var izdarÄ«t manuÄli, izmantojot standarta klienta komandas, kas ir pieejamas sarakstÄ, izsaucot komandu lxc --help vai izmantojot inicializÄcijas vedni lxd init atbildot uz dažiem jautÄjumiem.
InicializÄcijas laikÄ LXD uzdod vairÄkus jautÄjumus, tostarp nosaka noklusÄjuma failu sistÄmas tipu UzglabÄÅ”anas baseins. PÄc noklusÄjuma tam ir atlasÄ«ta BTRFS failu sistÄma. PÄc izveides nebÅ«s iespÄjams mainÄ«t uz citu FS. Ir ieteicams izvÄlÄties FS funkciju salÄ«dzinÄÅ”anas tabula:
UzglabÄÅ”anas draiveris, ko var izmantot konteinerÄ
jÄ
jÄ
NÄ
NÄ
NÄ
Atjaunot no vecÄkiem momentuzÅÄmumiem (nav jaunÄkajiem)
jÄ
jÄ
jÄ
NÄ
jÄ
UzglabÄÅ”anas kvotas
JÄ(*)
jÄ
jÄ
jÄ
NÄ
TÄ«kla un krÄtuves pÅ«la inicializÄÅ”ana, izmantojot vedni ^
NÄkamÄ komanda, kuru apskatÄ«sim, iesaka iestatÄ«t galvenos LXD komponentus, atbildot uz vienkÄrÅ”iem jautÄjumiem, izmantojot inicializÄcijas vedni.
Palaist komandu lxc init un ievadiet atbildes uz jautÄjumiem aiz kola, kÄ parÄdÄ«ts zemÄk esoÅ”ajÄ piemÄrÄ, vai mainiet tÄs atbilstoÅ”i saviem nosacÄ«jumiem:
lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]: ssdpool
Name of the storage backend to use (lvm, btrfs, dir) [default=btrfs]:
Create a new BTRFS pool? (yes/no) [default=yes]:
Would you like to use an existing block device? (yes/no) [default=no]:
Size in GB of the new loop device (1GB minimum) [default=15GB]: 10GB
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, āautoā or ānoneā) [default=auto]: 10.0.5.1/24
Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]:
What IPv6 address should be used? (CIDR subnet notation, āautoā or ānoneā) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] no
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
IepriekÅ”ÄjÄ darbÄ«bÄ mÄs izveidojÄm UzglabÄÅ”anas baseins kam tika dots vÄrds ssdpool un kura fails atrodas manÄ sistÄmÄ vietnÄ /var/lib/lxd/disks/ssdpool.img. Å Ä« failu sistÄmas adrese atbilst fiziskajam SSD diskdzinÄ« manÄ datorÄ.
Å Ä«s darbÄ«bas, lai paplaÅ”inÄtu izpratni par lomu UzglabÄÅ”anas baseins repozitorijÄ mÄs izveidosim otru UzglabÄÅ”anas baseins kas fiziski atradÄ«sies cita veida diskÄ, HDD. ProblÄma ir tÄ, ka LXD neļauj jums izveidot UzglabÄÅ”anas baseins Ärpus adreses /var/lib/lxd/disks/ un pat simboliskas saites nedarbosies, skatiet izstrÄdÄtÄja atbildi. MÄs varam apiet Å”o ierobežojumu inicializÄcijas/formatÄÅ”anas laikÄ UzglabÄÅ”anas baseins norÄdot vÄrtÄ«bu kÄ bloka ierÄ«ci, nevis ceļu uz atgriezeniskÄs saites failu, norÄdot to atslÄgÄ source.
TÄtad, pirms izveidoÅ”anas UzglabÄÅ”anas baseins jums ir jÄdefinÄ atpakaļcilpas fails vai esoÅ”s nodalÄ«jums savÄ failu sistÄmÄ, ko tas izmantos. Lai to izdarÄ«tu, mÄs izveidosim un izmantosim failu, kura lielumu ierobežosim lÄ«dz 10 GB:
dd if=/dev/zero of=/mnt/work/lxd/hddpool.img bs=1MB count=10000
10000+0 records in
10000+0 records out
10000000000 bytes (10 GB, 9,3 GiB) copied, 38,4414 s, 260 MB/s
Savienosim atpakaļcilpas failu ar bezmaksas cilpas ierīci:
Pateicoties atslÄgai --show izpildot komandu, ekrÄnÄ tiek atgriezts tÄs ierÄ«ces nosaukums, kurai ir pievienots atpakaļcilpas fails. Ja nepiecieÅ”ams, mÄs varam parÄdÄ«t visu Å”Äda veida aizÅemto ierÄ«Äu sarakstu, lai pÄrliecinÄtos, ka mÅ«su darbÄ«bas ir pareizas:
No saraksta varat atrast, ka ierÄ«cei ir /dev/loop1 cilpas fails ir iekļauts /mnt/work/lxd/hddpool.img, un ierÄ«cÄ /dev/loop0 cilpas fails ir iekļauts /var/lib/lxd/disks/ssdpool.img kas atbilst noklusÄjuma UzglabÄÅ”anas baseins.
SekojoÅ”Ä komanda izveido jaunu UzglabÄÅ”anas baseins LXD, pamatojoties uz tikko sagatavoto cilpas failu. LXD formatÄs atgriezeniskÄs saites failu /mnt/work/lxd/hddpool.img ierÄ«cÄ /dev/loop1 BTRFS failu sistÄmai:
PÄc radÄ«Å”anas UzglabÄÅ”anas baseins, ja nepiecieÅ”ams, to var paplaÅ”inÄt. PriekÅ” UzglabÄÅ”anas baseins pamatojoties uz BTRFS failu sistÄmu, palaidiet Å”Ädas komandas:
Mums ir viena neliela problÄma, pÄrstartÄjot resursdatora sistÄmu, failu /mnt/work/lxd/hddpool.img "izlidos" no ierÄ«ces /dev/loop1 un LXD pakalpojums avarÄs ielÄdes laikÄ, jo tas to neredzÄs Å”ajÄ ierÄ«cÄ. Lai atrisinÄtu Å”o problÄmu, jums ir jÄizveido sistÄmas pakalpojums, kas ievietos Å”o failu ierÄ«cÄ /dev/loop1 kad tiek sÄknÄta resursdatora sistÄma.
systemctl status lxd-hddpool.service
ā lxd-hddpool.service - Losetup LXD Storage Pool (hddpool)
Loaded: loaded (/etc/systemd/system/lxd-hddpool.service; enabled; vendor preset: disabled)
Active: active (exited) since Wed 2020-04-08 03:43:53 MSK; 1min 37s ago
Process: 711 ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img (code=exited, status=0/SUCCESS)
Main PID: 711 (code=exited, status=0/SUCCESS)
Š°ŠæŃ 08 03:43:52 manjaro systemd[1]: Starting Losetup LXD Storage Pool (hddpool)...
Š°ŠæŃ 08 03:43:53 manjaro systemd[1]: Finished Losetup LXD Storage Pool (hddpool).
No izvades mÄs varam pÄrbaudÄ«t, vai pakalpojuma stÄvoklis ir aktÄ«vs, neskatoties uz to, ka mÅ«su skripta izpilde no vienas komandas tika pabeigta, opcija ļÄva mums to izdarÄ«t RemainAfterExit=true.
TÄ kÄ visi konteineru procesi faktiski darbojas izolÄti resursdatora sistÄmÄ, izmantojot tÄs kodolu, lai vÄl vairÄk aizsargÄtu konteineru procesu piekļuvi resursdatora sistÄmai, LXD piedÄvÄ procesa privilÄÄ£ijas, kur:
PriviliÄ£Äti konteineri - tie ir konteineri, kuros procesi ar UID un GID atbilst vienam un tam paÅ”am Ä«paÅ”niekam kÄ resursdatora sistÄmÄ. PiemÄram, procesam, kas darbojas konteinerÄ ar UID 0, ir visas tÄdas paÅ”as piekļuves tiesÄ«bas kÄ procesam resursdatora sistÄmÄ ar UID 0. Citiem vÄrdiem sakot, saknes lietotÄjam konteinerÄ ir visas tiesÄ«bas ne tikai konteinerÄ, bet arÄ« resursdatora sistÄmÄ, ja viÅÅ” var iziet Ärpus konteinera izolÄtÄs nosaukumvietas.
NepriviliÄ£Äti konteineri - tie ir konteineri, kuros procesi pieder UID un GID Ä«paÅ”niekam ar numuru no 0 lÄ«dz 65535, bet saimnieksistÄmai Ä«paÅ”nieks tiek maskÄts, izmantojot attiecÄ«gi pievienotos SubUID un SubGID bitus. PiemÄram, lietotÄjs ar UID=0 konteinerÄ tiks rÄdÄ«ts resursdatora sistÄmÄ kÄ SubUID + UID. Tas aizsargÄ resursdatora sistÄmu, jo, ja kÄds process konteinerÄ spÄj izvairÄ«ties no izolÄtÄs nosaukumvietas, tas var sazinÄties ar resursdatora sistÄmu tikai kÄ process ar nezinÄmu, ļoti augstu UID/GID.
PÄc noklusÄjuma jaunizveidotajiem konteineriem ir nepieŔķirts statuss, tÄpÄc mums ir jÄdefinÄ SubUID un SubGID.
Izveidosim divus konfigurÄcijas failus, kuros iestatÄ«sim attiecÄ«gi SubUID un SubGID masku:
TÄ kÄ mÄs iepriekÅ” inicializÄjÄm tÄ«klu, izmantojot inicializÄcijas vedni lxd init un izveidoja tÄ«kla ierÄ«ci lxdbr0, tad Å”ajÄ sadaÄ¼Ä mÄs vienkÄrÅ”i iepazÄ«simies ar tÄ«klu veidoÅ”anu LXD un kÄ izveidot virtuÄlo slÄdzi (tiltu), izmantojot klienta komandu.
Å Ä« diagramma parÄda, kÄ slÄdzis (tilts) savieno resursdatoru un konteinerus tÄ«klÄ:
Konteineri var sazinÄties, izmantojot tÄ«klu, ar citiem konteineriem vai resursdatoru, kurÄ Å”ie konteineri tiek apkalpoti. Lai to izdarÄ«tu, konteineru virtuÄlÄs tÄ«kla kartes ir jÄsaista ar virtuÄlo slÄdzi. Vispirms mÄs izveidosim slÄdzi, un konteinera tÄ«kla saskarnes tiks saistÄ«tas nÄkamajÄs nodaļÄs pÄc paÅ”a konteinera izveides.
Å Ä« komanda izveido slÄdzi ar apakÅ”tÄ«klu 10.0.5.0/24 un IPv4 adrese 10.0.5.1/24, kÄ arÄ« ietver ipv4.nat lai konteineri varÄtu piekļūt internetam, izmantojot resursdatoru, izmantojot NAT pakalpojumu:
Katram konteineram LXD ir sava konfigurÄcija, un to var paplaÅ”inÄt ar globÄli deklarÄtÄm konfigurÄcijÄm, ko sauc konfigurÄcijas profili. KonfigurÄcijas profilu pielietoÅ”anai konteineram ir kaskÄdes modelis. To parÄda Å”Äds piemÄrs:
Å ajÄ piemÄrÄ LXD sistÄmÄ ir izveidoti trÄ«s profili: default, hddpool Šø hostfs. Visi trÄ«s profili tiek lietoti konteineram, kuram ir lokÄla konfigurÄcija (pelÄkÄ zona). Profils default ir ierÄ«ce root kam ir parametrs pool ir vienÄds ar ssdpool, bet, pateicoties kaskÄdes konfigurÄcijas lietojumprogrammas modelim, mÄs varam piemÄrot konteineram profilu hddpool kam ir parametrs pool aizstÄs to paÅ”u parametru no profila default un konteiners saÅems ierÄ«ces konfigurÄciju root ar parametru pool vienÄds hddpoolun profilu hostfs vienkÄrÅ”i pievieno konteineram jaunu ierÄ«ci.
Lai skatÄ«tu pieejamo konfigurÄcijas profilu sarakstu, izmantojiet Å”o komandu:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Pilnu pieejamo komandu sarakstu darbam ar profilu var iegÅ«t, pievienojot atslÄgu --help:
lxc profile --help
Description:
Manage profiles
Usage:
lxc profile [command]
Available Commands:
add Add profiles to instances
assign Assign sets of profiles to instances
copy Copy profiles
create Create profiles
delete Delete profiles
device Manage instance devices
edit Edit profile configurations as YAML
get Get values for profile configuration keys
list List profiles
remove Remove profiles from instances
rename Rename profiles
set Set profile configuration keys
show Show profile configurations
unset Unset profile configuration keys
NoklusÄjuma konfigurÄcijas profils default nav tÄ«kla kartes konfigurÄcijas konteineram un visiem jaunizveidotajiem konteineriem nav tÄ«kla, tiem ir nepiecieÅ”ams izveidot lokÄlÄs (dedicÄtas) tÄ«kla ierÄ«ces ar atseviŔķu komandu, bet mÄs varam izveidot globÄlÄ tÄ«kla ierÄ«ci konfigurÄcijÄ profils, kas tiks koplietots starp visiem konteineriem, kas izmanto Å”o profilu. TÄdÄ veidÄ tÅ«lÄ«t pÄc komandas izveidot jaunu konteineru viÅiem bÅ«s tÄ«kls ar piekļuvi tÄ«klam. TajÄ paÅ”Ä laikÄ nav nekÄdu ierobežojumu, mÄs vienmÄr varam izveidot lokÄlÄ tÄ«kla ierÄ«ci vÄlÄk, ja nepiecieÅ”ams.
Å Ä« komanda pievienos ierÄ«ci konfigurÄcijas profilam eth0 tips nic savienots ar tÄ«klu lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Ir svarÄ«gi atzÄ«mÄt, ka, tÄ kÄ mÄs faktiski pievienojÄm ierÄ«ci konfigurÄcijas profilam, ja ierÄ«cÄ norÄdÄ«jÄm statisku IP adresi, tad visiem konteineriem, kas izmantos Å”o profilu, bÅ«s viena IP adrese. Ja ir nepiecieÅ”ams izveidot konteineru ar konteineram pieŔķirtu statisku IP adresi, tÄ«kla ierÄ«ces konfigurÄcija ir jÄizveido konteinera lÄ«menÄ« (lokÄlÄ konfigurÄcija) ar IP adreses parametru, nevis profila lÄ«menÄ«.
PÄrbaudÄ«sim profilu:
lxc profile show default
config: {}
description: Default LXD profile
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: ssdpool
type: disk
name: default
used_by: []
Å ajÄ profilÄ redzams, ka visiem jaunizveidotajiem konteineriem tiks izveidotas divas ierÄ«ces:
eth0 ā IerÄ«ces veids nic savienots ar slÄdzi (tÄ«kla tilts) lxdbr0
root ā IerÄ«ces veids disk kas izmanto uzglabÄÅ”anas baseinu ssdpool
Lai izmantotu iepriekÅ” izveidoto UzglabÄÅ”anas baseins konteinerus, izveidojiet konfigurÄcijas profilu ssdroot kurÄ pievienosim tÄdu ierÄ«ci kÄ disk ar stiprinÄjuma punktu / (sakne), izmantojot iepriekÅ” izveidoto UzglabÄÅ”anas baseins SÄkot no ssdpool:
Konteineri tiek izveidoti no attÄliem, kas ir Ä«paÅ”i samontÄti izplatÄ«jumi, kuriem nav Linux kodola. TÄpÄc pirms konteinera palaiÅ”anas tas ir jÄizvieto no Ŕī attÄla. AttÄlu avots ir lokÄla repozitorija, kurÄ attÄli tiek lejupielÄdÄti no ÄrÄjÄm krÄtuvÄm.
Lai parÄdÄ«tu ierobežotu skaitu kolonnu, mÄs izmantojÄm Å”o opciju -c ar parametriem dasut, kÄ arÄ« ierobežoja saraksta garumu ar komandu head.
Lai parÄdÄ«tu attÄlu sarakstu, ir pieejama filtrÄÅ”ana. NÄkamajÄ komandÄ tiks uzskaitÄ«tas visas pieejamÄs izplatÄ«Å”anas arhitektÅ«ras AlpineLinux:
Lai sÄktu lietot konteineru, vietÄjam ir jÄpievieno attÄls no globÄlÄs krÄtuves local:. Tagad vietÄjÄ repozitorijs ir tukÅ”s, komanda par to pÄrliecinÄsies lxc image list. Ja metode list nenorÄdiet repozitoriju, tad pÄc noklusÄjuma tiks izmantota vietÄjÄ repozitorija - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
RepozitorijÄ esoÅ”ie attÄli tiek pÄrvaldÄ«ti, izmantojot Å”Ädas metodes:
Papildus interaktÄ«vajam režīmam LXD atbalsta arÄ« neinteraktÄ«vu konfigurÄcijas instalÄÅ”anas režīmu, tas ir, kad konfigurÄcija tiek norÄdÄ«ta YAML faila formÄ, kas ir Ä«paÅ”s formÄts, kas ļauj instalÄt visu konfigurÄciju uzreiz, apejot izpildi. no daudzÄm interaktÄ«vajÄm komandÄm, kas tika apspriestas iepriekÅ” Å”ajÄ rakstÄ, tostarp tÄ«kla konfigurÄcija, konfigurÄcijas profilu izveide utt. MÄs Å”eit neaptveram Å”o jomu, varat to pÄrbaudÄ«t pats. dokumentÄcijÄ.
NÄkamÄ interaktÄ«vÄ komanda lxc config kuru mÄs apskatÄ«sim, ļauj iestatÄ«t konfigurÄciju. PiemÄram, lai nodroÅ”inÄtu, ka lokÄlajÄ repozitorijÄ lejupielÄdÄtie attÄli netiek automÄtiski atjauninÄti no globÄlajiem repozitorijiem, mÄs varam iespÄjot Å”o darbÄ«bu ar Å”Ädu komandu:
Lai izveidotu konteineru, izmantojiet komandu lxc init kam tiek nodotas vÄrtÄ«bas ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŠ¹:Š¾Š±ŃŠ°Š· un pÄc tam vajadzÄ«go konteinera ID. Repozitoriju var norÄdÄ«t kÄ lokÄlu local: tÄpat ir jebkura globÄla. Ja repozitorijs nav norÄdÄ«ts, pÄc noklusÄjuma attÄla meklÄÅ”anai tiek izmantots lokÄlais repozitorijs. Ja attÄls ir norÄdÄ«ts no globÄlÄs repozitorijas, attÄls vispirms tiks lejupielÄdÄts lokÄlajÄ repozitorijÄ un pÄc tam izmantots konteinera izveidei.
Izpildīsim Ŕo komandu, lai izveidotu savu pirmo konteineru:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
ApskatÄ«sim Å”eit izmantotos komandu taustiÅus secÄ«bÄ:
alpine3 ā AttÄlam, kas iepriekÅ” tika augÅ”upielÄdÄts vietÄjÄ repozitorijÄ, ir norÄdÄ«ts aizstÄjvÄrds (alias). Ja Å”im attÄlam nav izveidots aizstÄjvÄrds, vienmÄr varat atsaukties uz attÄlu pÄc tÄ pirksta nospiedums kas tiek parÄdÄ«ts tabulÄ.
alp ā Iestata konteinera identifikatoru
--storage ā Å is taustiÅÅ” norÄda, kurÄ UzglabÄÅ”anas baseins tiks izveidots konteiners
--profile ā Å Ä«s atslÄgas kaskÄdes lieto konteinerÄ konfigurÄciju no iepriekÅ” izveidotajiem konfigurÄcijas profiliem
MÄs palaižam konteineru, kas sÄk palaist izplatÄ«Å”anas init sistÄmu:
lxc start alp
Varat arÄ« izmantot komandu lxc launch kas ļauj apvienot komandas lxc init Šø lxc start vienÄ operÄcijÄ.
Konteinera stÄvokļa pÄrbaude:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
SadaÄ¼Ä profiles mÄs varam pÄrliecinÄties, ka Å”is konteiners izmanto divus konfigurÄcijas profilus ā default Šø hddroot. SadaÄ¼Ä devices mÄs varam noteikt tikai vienu ierÄ«ci, jo tÄ«kla ierÄ«ce tika izveidota profila lÄ«menÄ« default. Lai redzÄtu visas konteinera izmantotÄs ierÄ«ces, jÄpievieno atslÄga --expanded:
Ja mÄÄ£inÄm iestatÄ«t IP adresi tÄ«kla ierÄ«cei eth0 komanda lxc config device set alp paredzÄts konteinera konfigurÄcijai, tad saÅemsim kļūdu, kas ziÅos, ka ierÄ«ce neeksistÄ, jo ierÄ«ce eth0 ko izmanto konteiners pieder profilam default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
MÄs, protams, varam iestatÄ«t statisku IP adresi eth0 ierÄ«ces profilÄ, taÄu tas bÅ«s vienÄds visiem konteineriem, kas izmantos Å”o profilu. TÄpÄc pievienosim konteineram paredzÄtu ierÄ«ci:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
PÄc tam jums ir jÄrestartÄ konteiners:
lxc restart alp
Ja mÄs tagad skatÄmies uz konteinera konfigurÄciju, mums Ŕī opcija nav jÄizmanto --expanded lai redzÄtu tÄ«kla ierÄ«ci eth0, jo mÄs to izveidojÄm konteinera lÄ«menÄ«, un tas tika kaskÄdÄts pa to paÅ”u ierÄ«ci no profila default:
Lai izpildÄ«tu komandas konteinerÄ tieÅ”i, apejot tÄ«kla savienojumus, izmantojiet komandu lxc exec kas izpilda komandas konteinerÄ, nepalaižot sistÄmas Äaulu. Ja jums ir jÄizpilda komanda ÄaulÄ, izmantojot Äaulas modeļus, piemÄram, mainÄ«gos, failu pÄradresÄcijas (caurule) utt., Jums ir skaidri jÄpalaiž apvalks un jÄnodod komanda kÄ atslÄga, piemÄram:
lxc exec alp -- /bin/sh -c "echo $HOME"
KomandÄ tika izmantota Ä«paÅ”a atkÄpÅ”anÄs rakstzÄ«me par Ä«paÅ”u raksturu $ lai mainÄ«gais $HOME netika interpretÄts resursdatorÄ, bet tika interpretÄts tikai konteinera iekÅ”pusÄ.
Ir iespÄjams arÄ« sÄkt interaktÄ«vo Äaulas režīmu un pÄc tam beigt sesiju, izpildot karsto taustiÅu CTRL+D:
limit.cpu - saista konteineru ar vienu vai vairÄkiem CPU kodoliem
limits.cpu.allowance - pÄrvalda vai nu CFS plÄnotÄja kvotas, kad ir pagÄjis laika ierobežojums, vai universÄlo CPU resursu koplietoÅ”anas mehÄnismu, kad ir pagÄjis procents
limits.cpu.priority - plÄnotÄja prioritÄte, ja vairÄkiem gadÄ«jumiem, kas koplieto procesoru kopu, tiek pieŔķirts vienÄds procesoru procentuÄlais daudzums
Papildus ierobežojumiem, piemÄram limits.read, limits.write mÄs varam arÄ« ierobežot konteinera patÄrÄtÄs diska vietas daudzumu (darbojas tikai ar ZFS vai BTRFS):
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Lai skatÄ«tu izmantotÄs diska kvotas, mÄs varam iegÅ«t no komandas lxc info:
lxc info alp
...
Resources:
Processes: 5
Disk usage:
root: 1.05GB
CPU usage:
CPU usage (in seconds): 1
Memory usage:
Memory (current): 5.46MB
Network usage:
eth0:
Bytes received: 802B
Bytes sent: 1.59kB
Packets received: 4
Packets sent: 14
lo:
Bytes received: 0B
Bytes sent: 0B
Packets received: 0
Packets sent: 0
Neskatoties uz to, ka konteinera saknes ierÄ«cei esam iestatÄ«juÅ”i ierobežojumu lÄ«dz 2 GB, sistÄmas utilÄ«tas, piemÄram, df neredzÄs Å”o ierobežojumu. Lai to izdarÄ«tu, mÄs veiksim nelielu pÄrbaudi un uzzinÄsim, kÄ tas darbojas.
Izveidosim 2 jaunus identiskus konteinerus tajÄ paÅ”Ä UzglabÄÅ”anas baseins (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Ja mÄs skatÄmies otrajÄ konteinerÄ, pÄrbaudiet, vai tajÄ paÅ”Ä vietÄ nav faila, tad Ŕī faila tur nebÅ«s, kas ir sagaidÄms, jo konteineri tiek izveidoti atseviŔķi. KrÄtuves apjoms tajÄ paÅ”Ä UzglabÄÅ”anas baseins:
lxc exec alp2 -- ls -lh
total 0
Bet salÄ«dzinÄsim tÄs radÄ«tÄs vÄrtÄ«bas df uz viena un otra konteinera:
lxc exec alp1 -- df -hT
Filesystem Type Size Used Available Use% Mounted on
/dev/loop1 btrfs 9.3G 1016.4M 7.8G 11% /
...
lxc exec alp2 -- df -hT
Filesystem Type Size Used Available Use% Mounted on
/dev/loop1 btrfs 9.3G 1016.4M 7.8G 11% /
...
IerÄ«ce /dev/loop1 uzstÄdÄ«ts kÄ saknes nodalÄ«jums UzglabÄÅ”anas baseins ko izmanto Å”ie konteineri, tÄpÄc to tilpums tiek sadalÄ«ts starp diviem.
LXD ir iespÄja izveidot momentuzÅÄmumus un atjaunot no tiem konteinera stÄvokli.
Lai izveidotu momentuzÅÄmumu, palaidiet Å”Ädu komandu:
lxc snapshot alp snapshot1
Komanda lxc snapshot nav pieejama atslÄga listtÄpÄc, lai skatÄ«tu momentuzÅÄmumu sarakstu, ir jÄizmanto komanda, kas parÄda vispÄrÄ«gu informÄciju par konteineru:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Varat atjaunot konteineru no momentuzÅÄmuma, izmantojot komandu lxc restore norÄdot konteineru, kuram tiks veikta atjaunoÅ”ana, un momentuzÅÄmuma aizstÄjvÄrdu:
lxc restore alp snapshot1
Lai dzÄstu momentuzÅÄmumu, tiek izmantota Å”Äda komanda. LÅ«dzu, Åemiet vÄrÄ, ka komandu sintakse nav lÄ«dzÄ«ga visÄm citÄm; Å”eit pÄc konteinera nosaukuma ir jÄnorÄda slÄ«psvÄ«tra. Ja slÄ«psvÄ«tra ir izlaista, momentuzÅÄmuma dzÄÅ”anas komanda tiek interpretÄta kÄ konteinera dzÄÅ”anas komanda!
lxc delete alp/snapshot1
IepriekÅ” minÄtajÄ piemÄrÄ mÄs apskatÄ«jÄm tÄ sauktos bezvalstnieku momentuzÅÄmumus. LXD ir cita veida momentuzÅÄmumi - statusful, kas saglabÄ visu konteinerÄ esoÅ”o procesu paÅ”reizÄjo stÄvokli. Ar statusu saturoÅ”iem momentuzÅÄmumiem ir saistÄ«tas vairÄkas interesantas un noderÄ«gas funkcijas.