LXD estas la venontgeneracia sistema ujmanaĝero, tiel ĝi diras fonto. Ĝi ofertas uzantinterfacon similan al virtualaj maŝinoj, sed uzas Linuksajn ujojn anstataŭe.
LXD-kerno estas privilegiita demono (servo funkcianta kun radikrajtoj) kiu disponigas REST-API per loka uniksa ingo, same kiel per la reto se la taŭga agordo estas instalita. Klientoj, kiel la komandlinia ilo provizita per LXD, faras petojn per ĉi tiu REST-API. Ĉi tio signifas, ke ĉu vi aliras lokan gastiganton aŭ malproksiman gastiganton, ĉio funkcias same.
En ĉi tiu artikolo ni ne detale detale pri la konceptoj de LXD, ni ne konsideros ĉiujn disponeblajn kapablojn skizitaj en la dokumentaro, inkluzive de la lastatempa efektivigo en la plej novaj versioj de LXD de subteno por virtualaj maŝinoj QEMU paralele kun ujoj. Anstataŭe, ni lernos nur la bazojn de kontenera administrado - agordi stokejojn, interkonektadon, ruli ujon, aplikante rimedlimojn, kaj kiel uzi momentfotojn por ke vi povu akiri bazan komprenon pri LXD kaj uzi ujojn en Linukso.
Por kompleta informo, bonvolu raporti al la oficiala fonto:
Ĉi tio signifas, ke du pakaĵoj estos instalitaj samtempe, unu kiel sistempakaĵo kaj la alia kiel rapida pako. Instali du pakaĵojn en sistemo povas krei iun problemon kie la sistempakaĵo povas iĝi orfigita se la klakpakaĵo estas forigita de la klaka pakaĵmanaĝero.
Trovu pakon lxd en la klaka deponejo vi povas uzi la jenan komandon:
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
Rugante la komandon list vi povas certigi ke la pako lxd ankoraŭ ne instalita:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
Malgraŭ la fakto, ke LXD estas rapida pako, ĝi devas esti instalita per la sistema pako lxd, kiu kreos la respondan grupon en la sistemo, la necesajn utilecojn en /usr/bin kaj tiel plu.
sudo apt update
sudo apt install lxd
Ni certigu, ke la pakaĵo estas instalita kiel rapida pako:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
lxd 3.21 13474 stable/… canonical✓ -
Por instali la LXD-pakaĵon en la sistemo, vi devas ruli la jenajn komandojn, la unua ĝisdatigos la liston de pakaĵoj en la sistemo disponebla en la deponejo, la dua rekte instalos la pakaĵon:
sudo pacman -Syyu && sudo pacman -S lxd
Post instalo de la pakaĵo, por administri LXD de kutima uzanto, ĝi devas esti aldonita al la sistema grupo lxd:
sudo usermod -a -G lxd user1
Ni certigu, ke la uzanto user1 aldonita al grupo lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Se la grupo lxd ne videblas en la listo, tiam vi devas aktivigi la uzantan sesion denove. Por fari tion, vi devas elsaluti kaj ensaluti sub la sama uzanto.
Aktivigu en systemd ŝarĝante la LXD-servon ĉe la ekfunkciigo de la sistemo:
Antaŭ ol komencado komenciĝas, ni devas kompreni kiel la stokado en LXD estas logike aranĝita.
Stokado (stokado) konsistas de unu aŭ pli Stokado Naĝejo kiu uzas unu el la subtenataj dosiersistemoj kiel ZFS, BTRFS, LVM aŭ regulajn dosierujojn. Ĉiu Stokado Naĝejo estas dividita en volumojn (Stokada Volumo) kiuj enhavas bildojn, ujojn aŭ datumojn por aliaj celoj.
Bildoj - ĉi tiuj estas speciale kunmetitaj distribuaĵoj sen la Linukso-kerno kaj haveblaj de eksteraj fontoj
Ujoj - ĉi tiuj estas deplojitaj distribuaĵoj el bildoj, pretaj por uzo
Momentfotoj - ĉi tiuj estas momentfotoj de la stato de ujoj al kiuj vi povas reveni
Por administri stokadon en LXD, uzu la komandon lxc storage atestilo por kiu vi povas akiri specifante la ŝlosilon - lxc storage --help
La sekva komando montras liston de ĉiuj Stokado Naĝejo en LXD-stokado:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Por vidi liston de ĉiuj Stokada Volumo en la elektita Stokado Naĝejo servas la teamon 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 |
+-----------+----------------------------------+-------------+---------+
Ankaŭ, se por Stokado Naĝejo Dum kreado, la dosiersistemo BTRFS estis elektita, tiam ricevu liston Stokada Volumo aŭ subvolumoj en la BTRFS-interpreto, vi povas uzi la ilaron de ĉi tiu dosiersistemo:
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
Antaŭ krei kaj uzi ujojn, vi devas plenumi ĝeneralan LXD-komencigon, kiu kreas kaj agordas la reton kaj stokadon. Ĉi tio povas esti farita mane uzante normajn klientkomandojn kiuj estas haveblaj en la listo per vokado de la komando lxc --help aŭ uzante la komencan sorĉiston lxd init respondante kelkajn demandojn.
Dum pravalorigo, LXD demandas plurajn demandojn, inkluzive determini la dosiersisteman tipon por la defaŭlta Stokado Naĝejo. Defaŭlte, la dosiersistemo BTRFS estas elektita por ĝi. Estos neeble ŝanĝi al alia FS post kreado. Por elekti FS ĝi estas sugestita trajto kompara tablo:
trajto
Gvidlibro
Btrfs
LVM
ZFS
CEPH
Optimumigita bildstokado
ne
jes
jes
jes
jes
Optimumigita kreado de petskriboj
ne
jes
jes
jes
jes
Optimumigita kreado de momentfoto
ne
jes
jes
jes
jes
Optimumigita transdono de bildoj
ne
jes
ne
jes
jes
Optimumigita kazo-translokigo
ne
jes
ne
jes
jes
Kopiu sur skribu
ne
jes
jes
jes
jes
Bloko bazita
ne
ne
jes
ne
jes
Tuja klonado
ne
jes
jes
jes
jes
Stoka ŝoforo uzebla ene de ujo
jes
jes
ne
ne
ne
Restarigi de pli malnovaj momentfotoj (ne plej novaj)
jes
jes
jes
ne
jes
Stokaj kvotoj
jes (*)
jes
jes
jes
ne
Komencante la reton kaj Stokadon uzante la sorĉiston ^
La sekva komando, kiun ni rigardos, sugestas agordi la ĉefajn komponantojn de LXD respondante simplajn demandojn per la komenca sorĉisto.
Rulu komandon lxc init kaj enigu la respondojn al la demandoj post la dupunkto kiel montrite en la suba ekzemplo aŭ ŝanĝu ilin laŭ viaj kondiĉoj:
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]:
En la antaŭa paŝo ni kreis Stokado Naĝejo kiu ricevis la nomon ssdpool kaj kies dosiero troviĝas en mia sistemo ĉe /var/lib/lxd/disks/ssdpool.img. Ĉi tiu dosiersistema adreso respondas al la fizika SSD-disko en mia komputilo.
La sekvaj agoj, por pligrandigi komprenon de la rolo ludita de Stokado Naĝejo en la deponejo, ni kreos duan Stokado Naĝejo kiu estos fizike lokita sur malsama speco de disko, HDD. La problemo estas, ke LXD ne permesas vin krei Stokado Naĝejo ekster adreso /var/lib/lxd/disks/ kaj eĉ simbolaj ligiloj ne funkcios, vidu la respondon de la programisto. Ni povas preteriri ĉi tiun limigon dum inicialigo/formatado Stokado Naĝejo specifigante la valoron kiel blokan aparaton anstataŭ la vojon al la loopback dosiero specifante ĉi tion en la ŝlosilo source.
Do, antaŭ krei Stokado Naĝejo vi devas difini loopback-dosieron aŭ ekzistantan subdiskon en via dosiersistemo, kiun ĝi uzos. Por fari tion, ni kreos kaj uzos dosieron, kiun ni limigos en grandeco al 10GB:
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
Ni konektu la loopback dosieron al senpaga loopback aparato:
Dankon al la ŝlosilo --show plenumante la komandon revenas al la ekrano la nomon de la aparato, en kiu nia loopback-dosiero estas konektita. Se necese, ni povas montri liston de ĉiuj okupataj aparatoj de ĉi tiu tipo por certigi, ke niaj agoj estas ĝustaj:
El la listo vi povas trovi ke la aparato havas /dev/loop1 loopback dosiero inkluzivita /mnt/work/lxd/hddpool.img, kaj en la aparato /dev/loop0 loopback dosiero inkluzivita /var/lib/lxd/disks/ssdpool.img kiu respondas al la defaŭlta Stokado Naĝejo.
La sekva komando kreas novan Stokado Naĝejo en LXD bazita sur la loopback dosiero kiun ni ĵus preparis. LXD formatos la loopback dosieron /mnt/work/lxd/hddpool.img en la aparato /dev/loop1 por la BTRFS-dosiersistemo:
Aŭtomata enmeto de loopback dosiero en loopback aparato fendo ^
Ni havas unu malgrandan problemon, kiam oni rekomencas la gastigan sistemon, la dosieron /mnt/work/lxd/hddpool.img "flugos" el la aparato /dev/loop1 kaj la LXD-servo kraŝos dum ŝarĝo ĉar ĝi ne vidos ĝin en ĉi tiu aparato. Por solvi ĉi tiun problemon, vi devas krei sisteman servon, kiu enigos ĉi tiun dosieron en la aparaton /dev/loop1 kiam la gastiga sistemo ekfunkciigas.
Ni kreu unuo dosiertipo servo в /etc/systemd/system/ por la inicialigsistemo SystemD:
cat << EOF | sudo tee -a /etc/systemd/system/lxd-hddpool.service
[Unit]
Description=Losetup LXD Storage Pool (hddpool)
After=local-fs.target
[Service]
Type=oneshot
ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img
RemainAfterExit=true
[Install]
WantedBy=local-fs.target
EOF
Aktivigu la servon:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.
Post rekomenco de la gastiga sistemo, ni kontrolas la servostaton:
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).
De la eligo ni povas kontroli ke la servo stato estas aktiva, malgraŭ la fakto, ke la ekzekuto de nia skripto de unu komando estis finita, la opcio permesis al ni fari ĉi tion RemainAfterExit=true.
Ĉar ĉiuj ujprocezoj efektive funkcias izole sur la gastiga sistemo uzante ĝian kernon, por plue protekti la aliron de ujprocezoj al la gastiga sistemo, LXD ofertas procezprivilegion, kie:
Privilegiaj Ujoj - ĉi tiuj estas ujoj en kiuj procezoj kun UID kaj GID respondas al la sama posedanto kiel en la gastiga sistemo. Ekzemple, procezo kuranta en ujo kun UID de 0 havas ĉiujn samajn alirrajtojn kiel procezo sur la gastiga sistemo kun UID de 0. Alivorte, la radika uzanto en la ujo havas ĉiujn rajtojn ne nur en la ujo, sed ankaŭ sur la gastiga sistemo se li povas iri ekster la izolita nomspaco de la ujo.
Senprivilegiaj ujoj - ĉi tiuj estas ujoj en kiuj procezoj apartenas al la posedanto de la UID kaj GID kun nombro de 0 ĝis 65535, sed por la gastiga sistemo la posedanto estas maskita uzante la aldonitajn SubUID kaj SubGID-bitojn, respektive. Ekzemple, uzanto kun UID=0 en ujo estos vidita sur la gastiga sistemo kiel SubUID + UID. Tio protektas la gastigan sistemon ĉar se iu procezo en la ujo povas eviti sian izolitan nomspacon, ĝi povas nur komuniki kun la gastiga sistemo kiel procezo kun nekonata, tre alta UID/GID.
Defaŭlte, lastatempe kreitaj ujoj havas neprivilegian statuson kaj tial ni devas difini SubUID kaj SubGID.
Ni kreu du agordajn dosierojn en kiuj ni starigos la maskon por SubUID kaj SubGID, respektive:
Ĉar ni antaŭe pravigis la reton per la komenca sorĉisto lxd init kaj kreis retan aparaton lxdbr0, tiam en ĉi tiu sekcio ni simple konatiĝos kun retoj en LXD kaj kiel krei virtualan ŝaltilon (ponton) per la klienta komando.
La sekva diagramo montras kiel ŝaltilo (ponto) ligas la gastiganton kaj ujojn en reton:
Ujoj povas komuniki per reto kun aliaj ujoj aŭ la gastiganto sur kiu tiuj ujoj estas servataj. Por fari tion, vi devas ligi la virtualajn retajn kartojn de la ujoj per virtuala ŝaltilo. Ni unue kreos ŝaltilon, kaj la retaj interfacoj de la ujo estos ligitaj en postaj ĉapitroj, post kiam la ujo mem estas kreita.
La sekva komando kreas ŝaltilon kun subreto 10.0.5.0/24 kaj IPv4-adreso 10.0.5.1/24, kaj ankaŭ inkluzivas ipv4.nat por ke ujoj povu aliri la Interreton per la gastiganto uzante la NAT-servon:
Ĉiu ujo en LXD havas sian propran agordon kaj povas etendi ĝin per tutmonde deklaritaj agordoj nomitaj agordaj profiloj. Apliki agordajn profilojn al ujo havas kaskadan modelon, la sekva ekzemplo montras tion:
En ĉi tiu ekzemplo, tri profiloj estis kreitaj en la LXD-sistemo: default, hddpool и hostfs. Ĉiuj tri profiloj estas aplikataj al ujo, kiu havas lokan agordon (griza areo). Profilo default havas aparaton root kiu havas parametron pool estas egala ssdpool, sed danke al la kaskada agorda aplika modelo, ni povas apliki profilon al la ujo hddpool kiu havas parametron pool superregos la saman parametron de la profilo default kaj la ujo ricevos la aparatan agordon root kun parametro pool egala hddpool, kaj la profilon hostfs simple aldonas novan aparaton al la ujo.
Por vidi la liston de disponeblaj agordaj profiloj, uzu la jenan komandon:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Kompleta listo de disponeblaj komandoj por labori kun profilo povas esti akirita aldonante la ŝlosilon --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
Defaŭlta agorda profilo default ne havas retkartan agordon por la ujo kaj ĉiuj nove kreitaj ujoj ne havas reton, por ili necesas krei lokajn (dediĉitajn) retajn aparatojn per aparta komando, sed ni povas krei tutmondan retan aparaton en la agordo. profilon kiu estos dividita inter ĉiuj ujoj uzante ĉi tiun profilon. Tiel, tuj post la komando krei novan ujon, ili havos reton kun retaliro. Samtempe, ne ekzistas limigoj; ni ĉiam povas krei lokan retan aparaton poste se necese.
La sekva komando aldonos la aparaton al la agorda profilo eth0 tipo nic konektita al la reto lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Gravas noti, ke ĉar ni efektive aldonis la aparaton al la agorda profilo, se ni specifis statikan IP-adreson en la aparato, tiam ĉiuj ujoj, kiuj uzos ĉi tiun profilon, dividos la saman IP-adreson. Se necesas krei ujon kun statika IP-adreso asignita por la ujo, tiam vi devus krei retan aparaton agordon ĉe la ujnivelo (loka agordo) kun la IP-adresa parametro, kaj ne ĉe la profilnivelo.
Ni kontrolu la profilon:
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: []
En ĉi tiu profilo ni povas vidi, ke por ĉiuj nove kreitaj ujoj estos kreitaj du aparatoj:
eth0 — Tipo de aparato nic konektita al ŝaltilo (retoponto) lxdbr0
root — Tipo de aparato disk kiu uzas stokejon ssdpool
Por uzi antaŭe kreitan Stokado Naĝejo ujoj, kreu agordan profilon ssdroot en kiu ni aldonos aparaton kiel disk kun montopunkto / (radiko) uzante la antaŭe kreitan Stokado Naĝejo - ssdpool:
Ujoj estas kreitaj el bildoj kiuj estas speciale kunmetitaj distribuaĵoj kiuj ne havas Linuksan kernon. Tial, antaŭ ol ruli la ujon, ĝi devas esti deplojita de ĉi tiu bildo. La fonto de bildoj estas loka deponejo en kiu bildoj estas elŝutitaj de eksteraj deponejoj.
Por komenci uzi la ujon, vi devas aldoni bildon de la tutmonda deponejo al la loka local:. Nun la loka deponejo estas malplena, la komando certigos pri tio lxc image list. Se la metodo list ne specifu deponejon, tiam la loka deponejo estos uzata defaŭlte - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Bildoj en la deponejo estas administritaj per la sekvaj metodoj:
teamo
Priskribo
lxc bildo alias
Administri bildajn kaŝnomojn
lxc bildo kopii
Kopiu bildojn inter serviloj
lxc bildo forviŝi
Forigi bildojn
lxc bildo redakti
Redaktu bildopropraĵojn
lxc bildo eksportado
Eksportu kaj elŝutu bildojn
lxc bildo importado
Importu bildojn en la bildbutikon
lxc bildo info
Montru utilajn informojn pri bildoj
lxc bildo listo
Listo de bildoj
lxc bildo refreŝigi
Refreŝigi bildojn
lxc bildo spektaklo
Montru bildajn proprietojn
Kopiu la bildon al la loka deponejo de la tutmonda images::
Krom la interaga reĝimo, LXD ankaŭ subtenas ne-interaga agorda instala reĝimo, jen kiam la agordo estas specifita en formo de YAML-dosiero, speciala formato, kiu ebligas instali la tutan agordon samtempe, preterirante la ekzekuton. de multaj interagaj komandoj, kiuj estis diskutitaj supre en ĉi tiu artikolo, inkluzive de reta agordo, kreado de agordaj profiloj, ktp. Ni ne kovros ĉi tiun areon ĉi tie, vi povas kontroli ĝin memstare. en dokumentado.
Sekva interaga komando lxc config kiun ni rigardos permesas al vi agordi la agordon. Ekzemple, por certigi, ke elŝutitaj bildoj al la loka deponejo ne estas aŭtomate ĝisdatigitaj de la tutmondaj deponejoj, ni povas ebligi ĉi tiun konduton per la sekva komando:
Por krei ujon uzu la komandon lxc init al kiu valoroj estas transdonitaj репозиторий:образ kaj tiam la deziratan identigilon por la ujo. La deponejo povas esti specifita kiel loka local: same estas iu ajn tutmonda. Se la deponejo ne estas specifita, tiam defaŭlte la loka deponejo estas uzata por serĉi la bildon. Se la bildo estas specifita el la tutmonda deponejo, tiam la bildo unue estos elŝutita al la loka deponejo kaj poste uzata por krei la ujon.
Ni rulu la sekvan komandon por krei nian unuan ujon:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Ni rigardu la komandklavojn, kiujn ni uzas ĉi tie en ordo:
alpine3 — Kaŝnomo (kaŝnomo) estas specifita por la bildo, kiu antaŭe estis alŝutita al la loka deponejo. Se la kaŝnomo ne estis kreita por ĉi tiu bildo, tiam vi ĉiam povas rilati al la bildo per ĝia Fingerprint kiu estas montrata en la tabelo.
alp — Agordas la identigilon por la ujo
--storage — Ĉi tiu klavo indikas en kiu Stokado Naĝejo ujo estos kreita
--profile — Ĉi tiuj klavoj kaskadas aplikas agordon de antaŭe kreitaj agordaj profiloj al la ujo
Ni lanĉas la ujon, kiu komencas lanĉi la init-sistemon de la distribuo:
lxc start alp
Vi ankaŭ povas uzi la komandon lxc launch kiu permesas vin kombini teamojn lxc init и lxc start en unu operacio.
Kontrolante la staton de la ujo:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
En la sekcio profiles ni povas certigi, ke ĉi tiu ujo uzas du agordajn profilojn − default и hddroot. En sekcio devices ni povas nur detekti unu aparaton ĉar la reto-aparato estis kreita ĉe la profilnivelo default. Por vidi ĉiujn aparatojn uzatajn de la ujo, vi devas aldoni ŝlosilon --expanded:
Se ni provas agordi IP-adreson por reta aparato eth0 teamo lxc config device set alp destinita por la ujo-agordo, tiam ni ricevos eraron, kiu informos, ke la aparato ne ekzistas ĉar la aparato eth0 kiu estas uzata de la ujo apartenas al la profilo default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Ni povas kompreneble agordi statikan IP-adreson por eth0 aparatoj en la profilo, sed estos la sama por ĉiuj ujoj, kiuj uzos ĉi tiun profilon. Tial, ni aldonu aparaton dediĉitan al la ujo:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Tiam vi devas rekomenci la ujon:
lxc restart alp
Se ni rigardas la ujan agordon nun, ni ne bezonas uzi la opcion --expanded por vidi la retan aparaton eth0, ĉar ni kreis ĝin ĉe la ujo-nivelo kaj ĝi kaskadis super la sama aparato de la profilo default:
Por ekzekuti komandojn en ujo rekte, preterirante retajn konektojn, uzu la komandon lxc exec kiu efektivigas komandojn en la ujo sen lanĉi la sisteman ŝelon. Se vi bezonas ekzekuti komandon en ŝelo uzante ŝemajn ŝablonojn kiel variablojn, dosierajn alidirektojn (pipo), ktp., tiam vi devas eksplicite lanĉi la ŝelon kaj pasi la komandon kiel ŝlosilon, ekzemple:
lxc exec alp -- /bin/sh -c "echo $HOME"
La komando uzis specialan eskapan signon por speciala karaktero $ tiel ke la variablo $HOME ne estis interpretita sur la gastiga maŝino, sed estis interpretita nur ene de la ujo.
Eblas ankaŭ komenci la interagan ŝelreĝimon, kaj poste fini la sesion per ekzekuto de klavoklavo CTRL+D:
limit.cpu - ligas ujon al unu aŭ pluraj CPU-kernoj
limits.cpu.allowance - administras aŭ CFS-horarkvotojn kiam la tempolimo pasis, aŭ la universalan CPU-remecan dividan mekanismon kiam la procento pasis
limits.cpu.priority - prioritato pri horaro kiam pluraj okazoj kundividantaj aron da procesoroj ricevas la saman procenton de procesoroj
Krom limigoj tiaj limits.read, limits.write ni ankaŭ povas limigi la kvanton da diskospaco konsumita de la ujo (nur funkcias kun ZFS aŭ BTRFS):
lxc config device set alp root size=2GB
Post instalado, en la parametro devices.root.size Ni povas kontroli la fiksitan limon:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Por vidi la uzatajn diskokvotojn ni povas ricevi de la komando 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
Malgraŭ tio, ke ni starigis limon por la radika aparato de la ujo al 2GB, sistemaj utilecoj kiel ekzemple df ne vidos ĉi tiun limigon. Por fari tion, ni faros malgrandan provon kaj ekscios kiel ĝi funkcias.
Ni kreu 2 novajn identajn ujojn en la sama Stokado Naĝejo (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Se ni rigardas en la dua ujo, kontrolu la ekziston de dosiero en la sama loko, tiam ĉi tiu dosiero ne estos tie, kio estas atendita, ĉar ujoj estas kreitaj en sia propra Stokada Volumo en la sama Stokado Naĝejo:
lxc exec alp2 -- ls -lh
total 0
Sed ni komparu la valorojn, kiujn ĝi produktas df sur unu kaj la alia ujo:
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% /
...
Aparato /dev/loop1 muntita kiel la radikdisko estas Stokado Naĝejo kiun ĉi tiuj ujoj uzas, do ili dividas ĝian volumenon inter du.
LXD havas la kapablon krei momentfotojn kaj restarigi la ujan staton de ili.
Por krei momentfoton, rulu la jenan komandon:
lxc snapshot alp snapshot1
La teamo lxc snapshot neniu ŝlosilo disponebla list, do, por vidi la liston de momentfotoj vi devas uzi la komandon kiu montras ĝeneralajn informojn pri la ujo:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Vi povas restarigi ujon de momentfoto uzante la komandon lxc restore precizigante la ujon por kiu la restarigo estos farita kaj la momentfoto-kaŝnomo:
lxc restore alp snapshot1
La sekva komando estas uzata por forigi momentfoton. Bonvolu noti, ke la komanda sintakso ne similas al ĉiuj aliaj; ĉi tie vi devas specifi antaŭan oblikvon post la ujo-nomo. Se la oblikvo estas preterlasita, tiam la komando por forigi momentfoton estas interpretita kiel komando por forigi ujon!
lxc delete alp/snapshot1
En la supra ekzemplo, ni rigardis tiel nomatajn sennaciajn momentfotojn. LXD havas alian specon de momentfotoj - stateful, kiu savas la nunan staton de ĉiuj procezoj en la ujo. Estas kelkaj interesaj kaj utilaj funkcioj asociitaj kun ŝtataj momentfotoj.