LXD - Linux edukiontzi sistemen oinarrizko ezaugarriak
LXD hurrengo belaunaldiko sistemaren edukiontzien kudeatzailea da, hala dio iturri. Makina birtualen antzeko erabiltzailearen interfazea eskaintzen du, baina Linux edukiontziak erabiltzen ditu horren ordez.
LXD nukleoa deabru pribilegiatu bat da (root eskubideekin exekutatzen den zerbitzua) REST API bat unix socket lokal baten bidez eskaintzen duena, baita sarearen bidez ere, konfigurazio egokia instalatuta badago. Bezeroek, hala nola, LXD-rekin hornitutako komando-lerroko tresnak, eskaerak egiten dituzte REST API honen bidez. Horrek esan nahi du tokiko ostalari edo urruneko ostalari batera sartzen ari bazara, dena berdin funtzionatzen duela.
Artikulu honetan ez gara LXDren kontzeptuetan sakonduko, ez ditugu kontuan hartuko dokumentazioan azaltzen diren gaitasun erabilgarri guztiak, LXDren azken bertsioetan QEMU makina birtualen euskarria edukiontziekin paraleloan duela gutxi inplementatzea barne. Horren ordez, edukiontzien kudeaketaren oinarriak bakarrik ikasiko ditugu: biltegiratze-igerilekuak konfiguratzea, sareak konektatzea, edukiontzi bat martxan jartzea, baliabideen mugak aplikatzea eta argazkiak nola erabili, LXD-ren oinarrizko ulermena lortu eta Linux-en edukiontziak erabili ahal izateko.
Horrek esan nahi du bi pakete aldi berean instalatuko direla, bata sistema pakete gisa eta bestea snap pakete gisa. Sistema batean bi pakete instalatzeak arazoren bat sor dezake, non sistemaren paketea umezurtz geratu daitekeen, snap paketearen kudeatzaileak kentzen badu.
Aurkitu paketea lxd snap biltegian komando hau erabil dezakezu:
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
Komandoa exekutatuz list paketea dela ziurtatu dezakezu lxd oraindik instalatu gabe:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalβ core
LXD snap paketea izan arren, sistema paketearen bidez instalatu behar da lxd, sisteman dagokion taldea sortuko duena, beharrezko utilitateak barruan /usr/bin eta abar.
sudo apt update
sudo apt install lxd
Ziurtatu paketea snap pakete gisa instalatuta dagoela:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalβ core
lxd 3.21 13474 stable/β¦ canonicalβ -
LXD paketea sisteman instalatzeko, komando hauek exekutatu behar dituzu, lehenengoak biltegian eskuragarri dagoen sistemako paketeen zerrenda eguneratuko du, bigarrenak paketea zuzenean instalatuko du:
sudo pacman -Syyu && sudo pacman -S lxd
Paketea instalatu ondoren, ohiko erabiltzaile batek LXD kudeatzeko, sistema taldean gehitu behar da lxd:
sudo usermod -a -G lxd user1
Ziur dezagun erabiltzailea user1 taldean gehitu da lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Taldea bada lxd ez dago zerrendan ikusgai, orduan erabiltzailearen saioa berriro aktibatu behar duzu. Horretarako, saioa amaitu eta erabiltzaile berarekin hasi behar duzu.
Aktibatu systemd LXD zerbitzua kargatzea sistema abiaraztean:
Hasieratzea hasi baino lehen, LXD-n biltegiratzea logikoki nola antolatzen den ulertu behar dugu.
Biltegiratzea (Biltegiratzea) osatzen dute batetik edo gehiagotik Biltegiratze Igerilekua Onartutako fitxategi-sistemetako bat erabiltzen duena, hala nola ZFS, BTRFS, LVM edo direktorio arruntak. Bakoitzak Biltegiratze Igerilekua bolumenetan banatuta dago (Biltegiratze bolumena) beste helburu batzuetarako irudiak, edukiontziak edo datuak dituztenak.
irudiak - Linux nukleorik gabe bereziki muntatutako banaketak dira eta kanpoko iturrietatik eskuragarri daude
edukiontzi - Irudietatik banatutako banaketak dira, erabiltzeko prest
Argazkiak - itzul ditzakezun edukiontzien egoeraren argazkiak dira
LXD-n biltegiratzea kudeatzeko, erabili komandoa lxc storage gakoa zehaztuz lor dezakezun ziurtagiria - lxc storage --help
Ondorengo komandoak guztien zerrenda bistaratzen du Biltegiratze Igerilekua LXD biltegian:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Guztien zerrenda ikusteko Biltegiratze bolumena hautatutakoan Biltegiratze Igerilekua taldeari balio dio 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 |
+-----------+----------------------------------+-------------+---------+
Gainera, bada Biltegiratze Igerilekua Sortzean, BTRFS fitxategi-sistema hautatu zen, gero zerrenda bat lortu Biltegiratze bolumena edo azpibolumenak BTRFS interpretazioan, fitxategi-sistema honen tresna-kit erabil dezakezu:
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
Edukiontziak sortu eta erabili aurretik, sarea eta biltegiratzea sortu eta konfiguratzen dituen LXD hasierako orokor bat egin behar duzu. Hori eskuz egin daiteke zerrendan eskuragarri dauden bezero-komando estandarrak erabiliz komandoari deituz lxc --help edo hasieratzeko morroia erabiliz lxd init galdera batzuei erantzunez.
Hasieran, LXD-k hainbat galdera egiten ditu, besteak beste, lehenetsitako fitxategi-sistema mota zehaztea Biltegiratze Igerilekua. Lehenespenez, BTRFS fitxategi-sistema hautatzen da horretarako. Sortu ondoren ezinezkoa izango da beste FS batera aldatzea. FS bat hautatzeko gomendatzen da ezaugarrien alderaketa taula:
Feature
Directory
Btrfs
LVM
ZFS
CEPH
Irudien biltegiratze optimizatua
no
bai
bai
bai
bai
Instantziaren sorrera optimizatua
no
bai
bai
bai
bai
Argazkien sorkuntza optimizatua
no
bai
bai
bai
bai
Irudien transferentzia optimizatua
no
bai
no
bai
bai
Instantzia transferentzia optimizatua
no
bai
no
bai
bai
Kopiatu idaztean
no
bai
bai
bai
bai
Blokeetan oinarrituta
no
no
bai
no
bai
Berehalako klonazioa
no
bai
bai
bai
bai
Biltegiratze kontrolatzailea edukiontzi baten barruan erabil daiteke
bai
bai
no
no
no
Leheneratu argazki zaharretatik (ez azkena)
bai
bai
bai
no
bai
Biltegiratze-kuotak
bai (*)
bai
bai
bai
no
Sarea eta Biltegiratze Pool hasieratzea morroia erabiliz ^
Aztertuko dugun hurrengo komandoak LXDren osagai nagusiak konfiguratzea proposatzen du hasierako morroia erabiliz galdera errazak erantzunez.
Exekutatu komandoa lxc init eta idatzi bi puntuen ondoren galderen erantzunak beheko adibidean erakusten den moduan edo aldatu zure baldintzen arabera:
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]:
Aurreko urratsean sortu genuen Biltegiratze Igerilekua izena jarri zioten ssdpool eta horren fitxategia nire sisteman dago helbidean /var/lib/lxd/disks/ssdpool.img. Fitxategi-sistemaren helbide hau nire ordenagailuko SSD unitate fisikoari dagokio.
Ondorengo ekintzak, jokatutako rolaren ulermena zabaltzeko Biltegiratze Igerilekua biltegian, bigarren bat sortuko dugu Biltegiratze Igerilekua fisikoki beste disko mota batean kokatuko dena, HDD. Arazoa da LXD-k ez dizula sortzen uzten Biltegiratze Igerilekua helbidetik kanpo /var/lib/lxd/disks/ eta esteka sinbolikoek ere ez dute funtzionatuko, ikusi garatzailearen erantzuna. Muga hori saihestu dezakegu hasierako/formateatzeko garaian Biltegiratze Igerilekua balioa bloke-gailu gisa zehaztuz, loopback fitxategirako bidearen ordez, hau gakoan zehaztuz source.
Beraz, sortu baino lehen Biltegiratze Igerilekua Loopback fitxategi bat edo lehendik dagoen partizio bat definitu behar duzu zure fitxategi-sisteman erabiliko duen. Horretarako, 10 GB-ra mugatuko dugun fitxategi bat sortu eta erabiliko dugu:
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
Giltzari esker --show komandoa exekutatzean gure loopback fitxategia konektatuta dagoen gailuaren izena itzultzen da pantailara. Beharrezkoa izanez gero, mota honetako okupatutako gailu guztien zerrenda bistaratu dezakegu gure ekintzak zuzenak direla ziurtatzeko:
Zerrendatik gailuak daukala aurki dezakezu /dev/loop1 loopback fitxategia barne /mnt/work/lxd/hddpool.img, eta gailuan /dev/loop0 loopback fitxategia barne /var/lib/lxd/disks/ssdpool.img lehenetsiari dagokiona Biltegiratze Igerilekua.
Hurrengo komandoak berri bat sortzen du Biltegiratze Igerilekua LXDn prestatu berri dugun loopback fitxategian oinarrituta. LXD-k loopback fitxategia formateatuko du /mnt/work/lxd/hddpool.img gailuan /dev/loop1 BTRFS fitxategi sistemarako:
Sortu ondoren Biltegiratze Igerilekua, behar izanez gero, zabaldu egin daiteke. Izan ere Biltegiratze Igerilekua BTRFS fitxategi-sisteman oinarrituta, exekutatu komando hauek:
Loopback fitxategi bat automatikoki txertatzea loopback gailuaren zirrikituan ^
Arazo txiki bat dugu, ostalariaren sistema berrabiaraztean, fitxategia /mnt/work/lxd/hddpool.img gailutik "hegan egingo du". /dev/loop1 eta LXD zerbitzua kargatzean huts egingo du gailu honetan ez duelako ikusiko. Arazo hau konpontzeko, fitxategi hau gailuan txertatuko duen sistema-zerbitzu bat sortu behar duzu /dev/loop1 ostalariaren sistema abiarazten denean.
Sor dezagun unitate fitxategi mota zerbitzua Π² /etc/systemd/system/ SystemD hasierako sistemarako:
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
Aktibatu zerbitzua:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service β /etc/systemd/system/lxd-hddpool.service.
Ostalari sistema berrabiarazi ondoren, zerbitzuaren egoera egiaztatzen dugu:
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).
Irteeran zerbitzuaren egoera dela egiaztatu dezakegu Puntuatu gabe oraindik, gure script-a komando batetik exekutatu zen arren, aukerak hau egiteko aukera eman zigun RemainAfterExit=true.
Edukiontzi-prozesu guztiak bere nukleoa erabiliz sistema ostalarian isolatuta exekutatzen direnez, edukiontzi-prozesuek ostalari-sistemarako sarbidea gehiago babesteko, LXD-k prozesu-pribilegioa eskaintzen du, non:
Edukiontzi pribilegiatuak - UID eta GID duten prozesuak ostalari-sistemako jabe berari dagozkion edukiontziak dira. Adibidez, 0 UID duen edukiontzi batean exekutatzen den prozesu batek 0 UID duen sistema ostalariaren prozesu baten atzipen-eskubide berdinak ditu. Beste era batera esanda, edukiontziko root erabiltzaileak eskubide guztiak ditu, ez bakarrik. edukiontzian, baina baita ostalari-sisteman ere edukiontziaren izen-espazio isolatutik kanpo joan badaiteke.
Pribilegiorik gabeko edukiontziak - UIDaren eta GIDaren jabearen prozesuak 0tik 65535era bitarteko zenbakia duten edukiontziak dira, baina ostalari-sistemarako jabea, hurrenez hurren, gehitutako SubUID eta SubGID bitak erabiliz maskaratuta dago. Adibidez, edukiontzi batean UID=0 duen erabiltzaile bat ostalari-sisteman ikusiko da SubUID + UID. Honek ostalari-sistema babesten du, zeren edukiontziko edozein prozesu bere izen-espazio isolatuetatik ihes egiteko gai bada, ostalari-sistemarekin soilik komunika daiteke UID/GID ezezaguna eta oso altua duen prozesu gisa.
Lehenespenez, sortu berri diren edukiontziek pribilegiorik gabeko egoera dute eta, beraz, SubUID eta SubGID bat definitu behar dugu.
Sor ditzagun bi konfigurazio fitxategiak zeinetan SubUID eta SubGID maskara ezarriko dugun, hurrenez hurren:
Aurretik sarea hasieratzeko morroia erabiliz hasieratu genuenez lxd init eta sareko gailu bat sortu lxdbr0, orduan atal honetan LXD-ko sareak ezagutuko ditugu eta bezeroaren komandoa erabiliz switch birtual bat (zubia) nola sortu.
Ondorengo diagramak etengailu batek (zubi) ostalaria eta edukiontziak sare batera nola konektatzen dituen erakusten du:
Edukiontziek sare baten bidez komunika daitezke beste edukiontzi batzuekin edo edukiontzi horiek zerbitzatzen diren ostalariarekin. Horretarako, edukiontzien sare-txartel birtualak etengailu birtual batekin lotu behar dituzu. Lehenik etengailu bat sortuko dugu, eta edukiontziaren sareko interfazeak hurrengo kapituluetan lotuko dira, edukiontzia bera sortu ondoren.
Hurrengo komandoak etengailu bat sortzen du azpisare batekin 10.0.5.0/24 eta IPv4 helbidea 10.0.5.1/24, eta barne hartzen ditu ipv4.nat edukiontziak ostalariaren bidez Internetera sar daitezen NAT zerbitzua erabiliz:
LXD-ko edukiontzi bakoitzak bere konfigurazioa du eta orokorrean deklaratutako konfigurazioekin zabaldu dezake konfigurazio-profilak. Edukiontzi bati konfigurazio-profilak aplikatzeak kaskada-eredu bat du; adibide honek hau erakusten du:
Adibide honetan, LXD sisteman hiru profil sortu dira: default, hddpool ΠΈ hostfs. Hiru profilak konfigurazio lokala duen edukiontzi bati aplikatzen zaizkio (eremu grisa). Profila default gailu bat dauka root parametro bat duena pool berdina da ssdpool, baina kaskadako konfigurazio aplikazio-ereduari esker, edukiontziari profil bat aplika diezaiokegu hddpool parametro bat duena pool profilaren parametro bera gainidatziko du default eta edukiontziak gailuaren konfigurazioa jasoko du root parametroarekin pool berdina hddpool, eta profila hostfs gailu berri bat gehitzen dio edukiontziari.
Eskuragarri dauden konfigurazio-profilen zerrenda ikusteko, erabili komando hau:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Profil batekin lan egiteko erabilgarri dauden komandoen zerrenda osoa lor daiteke tekla gehituta --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
Lehenetsitako konfigurazio-profila default ez du edukiontzirako sare-txartelaren konfiguraziorik eta sortu berri diren edukiontzi guztiek ez dute sarerik, haientzat sare lokaleko gailuak (eskainikoak) sortu behar dira komando bereizi batekin, baina sareko gailu global bat sor dezakegu konfigurazioan. profil hau erabiliz edukiontzi guztien artean partekatuko den profila. Horrela, edukiontzi berri bat sortzeko komandoaren ondoren, sare bat izango dute sarerako sarbidea. Aldi berean, ez dago murrizketarik; behar izanez gero, beti sor dezakegu sare lokaleko gailu bat geroago.
Hurrengo komandoak gailua konfigurazio profilera gehituko du eth0 mota nic sarera konektatuta lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Garrantzitsua da kontuan izan gailua konfigurazio profilean gehitu dugunez, gailuan IP helbide estatiko bat zehaztu badugu, profil hori erabiliko duten edukiontzi guztiek IP helbide bera partekatuko dutela. Edukiontziari esleitutako IP helbide estatikoa duen edukiontzi bat sortu beharra badago, sareko gailuaren konfigurazioa edukiontzi mailan (konfigurazio lokala) sortu beharko zenuke IP helbide parametroarekin, eta ez profil mailan.
Ikus dezagun profila:
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: []
Profil honetan ikus dezakegu sortu berri diren edukiontzi guztietarako bi gailu sortuko direla:
eth0 β Gailu mota nic etengailu batera konektatuta (sare-zubia) lxdbr0
root β Gailu mota disk biltegiratze igerilekua erabiltzen duena ssdpool
Aurretik sortutakoa erabiltzeko Biltegiratze Igerilekua edukiontziak, sortu konfigurazio-profila ssdroot bertan, antzeko gailu bat gehituko dugu disk muntaketa puntuarekin / (erroa) aurretik sortutakoa erabiliz Biltegiratze Igerilekua - ssdpool:
Linux nukleorik ez duten bereziki muntatutako banaketak diren irudietatik sortzen dira edukiontziak. Horregatik, edukiontzia exekutatu aurretik, irudi honetatik zabaldu behar da. Irudien iturria tokiko biltegi bat da, non irudiak kanpoko biltegietatik deskargatzen diren.
Zutabe kopuru mugatu bat bistaratzeko aukera erabili dugu -c parametroekin dasut, eta zerrendaren luzera ere mugatu zuen komandoarekin head.
Iragazkia erabilgarri dago irudien zerrenda bistaratzeko. Hurrengo komandoak eskuragarri dauden banaketa-arkitektura guztiak zerrendatuko ditu AlpineLinux:
Edukiontzia erabiltzen hasteko, biltegi orokorreko irudi bat gehitu behar diozu tokikoari local:. Orain tokiko biltegia hutsik dago, komandoak hori ziurtatuko du lxc image list. Metodoa bada list ez zehaztu biltegirik, orduan tokiko biltegia erabiliko da lehenespenez - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Biltegiko irudiak metodo hauek erabiliz kudeatzen dira:
Team
Description
lxc irudia ezizena
Kudeatu irudien aliasak
lxc irudia kopiatu
Kopiatu irudiak zerbitzarien artean
lxc irudia ezabatu
Ezabatu irudiak
lxc irudia editatu
Editatu irudiaren propietateak
lxc irudia esportatu
Esportatu eta deskargatu irudiak
lxc irudia inportatu
Inportatu irudiak irudi-dendan
lxc irudia info
Erakutsi irudiei buruzko informazio erabilgarria
lxc irudia zerrenda
Zerrendatu irudiak
lxc irudia refresh
Freskatu irudiak
lxc irudia erakutsi
Erakutsi irudiaren propietateak
Kopiatu irudia tokiko biltegira globaletik images::
Modu interaktiboaz gain, LXD-k konfigurazio ez-interaktiboa instalatzeko modua ere onartzen du, hau da, konfigurazioa YAML fitxategi baten moduan zehazten da, formatu berezi bat, konfigurazio osoa aldi berean instalatzeko aukera ematen duena, exekuzioa saihestuz. Artikulu honetan goian eztabaidatu diren komando interaktibo asko, sarearen konfigurazioa, konfigurazio profilak sortzea, etab. Hemen ez dugu eremu hau landuko, zure kabuz egiaztatu dezakezu. dokumentazioan.
Hurrengo komando interaktiboa lxc config aztertuko duguna konfigurazioa ezartzeko aukera ematen du. Adibidez, tokiko biltegira deskargatutako irudiak biltegi globaletatik automatikoki eguneratzen ez direla ziurtatzeko, portaera hau gaitu dezakegu komando honekin:
Edukiontzi bat sortzeko, erabili komandoa lxc init zeinetara pasatzen diren balioak ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:ΠΎΠ±ΡΠ°Π· eta gero edukiontziaren nahi den IDa. Biltegia lokal gisa zehaztu daiteke local: orobat ere bai. Biltegia zehazten ez bada, lehenespenez tokiko biltegia erabiltzen da irudia bilatzeko. Irudia biltegi orokorretik zehazten bada, irudia lehenik tokiko biltegira deskargatuko da eta gero edukiontzia sortzeko erabiliko da.
Exekutatu dezagun komando hau gure lehen edukiontzia sortzeko:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Ikus ditzagun hemen erabiltzen ditugun komando-teklak ordenan:
alpine3 β Ezizen bat (alias) zehazten da aurretik tokiko biltegira kargatu zen irudiarentzat. Irudi honetarako ezizena sortu ez bada, beti egin dezakezu erreferentzia bere bidez irudia Hatz taulan agertzen dena.
alp β Edukiontziaren identifikatzailea ezartzen du
--storage β Tekla honek zeinetan adierazten du Biltegiratze Igerilekua edukiontzi bat sortuko da
--profile β Gako hauek kaskada batean aldez aurretik sortutako konfigurazio-profiletatik konfigurazioa aplikatzen diote edukiontziari
Edukiontzia abiarazten dugu, banaketaren init sistema abiarazten hasten dena:
lxc start alp
Komandoa ere erabil dezakezu lxc launch taldeak uztartzeko aukera ematen duena lxc init ΠΈ lxc start eragiketa batean.
Edukiontziaren egoera egiaztatzea:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
atalean profiles edukiontzi honek bi konfigurazio-profil erabiltzen dituela ziurtatu dezakegu default ΠΈ hddroot. atalean devices gailu bakarra detektatu dezakegu sareko gailua profil mailan sortu delako default. Kontenedoreak erabiltzen dituen gailu guztiak ikusteko gako bat gehitu behar duzu --expanded:
Sareko gailu baterako IP helbide bat ezartzen saiatzen bagara eth0 taldeak lxc config device set alp edukiontziaren konfiguraziorako pentsatuta, orduan gailua ez dagoela gailua existitzen ez dela jakinaraziko duen errore bat jasoko dugu eth0 edukiontziak erabiltzen duena profilari dagokio default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Noski IP helbide estatiko bat ezarri dezakegu eth0 profileko gailuak, baina berdina izango da profil hori erabiliko duten ontzi guztietan. Beraz, gehi dezagun edukiontziari eskainitako gailu bat:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Ondoren, edukiontzia berrabiarazi behar duzu:
lxc restart alp
Orain edukiontziaren konfigurazioari erreparatzen badiogu, ez dugu aukerarik erabili behar --expanded sareko gailua ikusteko eth0, edukiontzi mailan sortu dugulako eta profiletik gailu beretik kaskadatuta default:
Komandoak edukiontzi batean zuzenean exekutatzeko, sareko konexioak saihestuz, erabili komandoa lxc exec komandoak edukiontzian exekutatzen dituena, sistema shell-a abiarazi gabe. Komando bat shell batean exekutatu behar baduzu shell ereduak erabiliz, hala nola aldagaiak, fitxategien birbideraketak (tutua), etab., orduan esplizituki shell-a abiarazi eta komandoa gako gisa pasa behar duzu, adibidez:
lxc exec alp -- /bin/sh -c "echo $HOME"
Komandoak ihes karaktere berezi bat erabiltzen zuen izaera berezirako $ beraz, aldagaia $HOME ez zen ostalari makinan interpretatu, edukiontzi barruan bakarrik interpretatu zen.
Era berean, posible da shell modu interaktiboa abiarazi eta, ondoren, saioa amaitzea laster-tekla exekutatuz CTRL+D:
LXDn, edukiontzien baliabideak kudeatu ditzakezu konfigurazio multzo berezi bat erabiliz. Edukiontzien konfigurazio-parametroen zerrenda osoa aurki daiteke dokumentazioan.
PUZaren baliabideak mugatzeko hainbat modu daude. murrizketa motak:
limit.cpu - Edukiontzi bat CPU nukleo bati edo gehiagori lotzen dio
limits.cpu.allowance - CFS programatzailearen kuotak kudeatzen ditu denbora-muga igarotakoan, edo CPU baliabideak partekatzeko mekanismo unibertsala ehunekoa gainditu denean.
limits.cpu.priority - Antolatzailearen lehentasuna prozesadore multzo bat partekatzen duten hainbat instantzi prozesadoreen ehuneko bera esleitzen zaienean
Halako murrizketez gain limits.read, limits.write edukiontziak kontsumitzen duen disko-espazio kopurua ere muga dezakegu (ZFS edo BTRFS-ekin bakarrik funtzionatzen du):
lxc config device set alp root size=2GB
Instalatu ondoren, parametroan devices.root.size Ezarritako muga egiaztatu dezakegu:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Erabilitako disko-kuotak ikusteko komandotik lor ditzakegu 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
Izan ere, edukiontziaren root gailuaren muga 2GB-ra ezarri dugun arren, sistemaren utilitateak, esaterako df ez du muga hori ikusiko. Horretarako, proba txiki bat egingo dugu eta nola funtzionatzen duen ezagutuko dugu.
Sor ditzagun 2 ontzi berdin berdin berean Biltegiratze Igerilekua (HDDpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Bigarren edukiontzian begiratuz gero, egiaztatu kokapen berean fitxategi bat dagoen, orduan fitxategi hau ez da egongo, espero baita, edukiontziak bere kabuz sortzen baitira. Biltegiratze bolumena berean Biltegiratze Igerilekua:
lxc exec alp2 -- ls -lh
total 0
Baina konparatu ditzagun sortzen dituen balioak df edukiontzi batean eta bestean:
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% /
...
gailu /dev/loop1 erroko partizioa dagoen bezala muntatuta Biltegiratze Igerilekua ontzi hauek erabiltzen dutena, beraz, bere bolumena biren artean banatzen dute.
LXD-k argazkiak sortzeko eta edukiontziaren egoera berrezartzeko gaitasuna du.
Argazki bat sortzeko, exekutatu komando hau:
lxc snapshot alp snapshot1
Taldea lxc snapshot ez dago gakorik list, beraz, argazkien zerrenda ikusteko edukiontziari buruzko informazio orokorra bistaratzen duen komandoa erabili behar duzu:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Edukiontzi bat argazki batetik berrezar dezakezu komandoa erabiliz lxc restore zaharberritzea zein edukiontzitarako egingo den eta argazkiaren ezizena zehaztuz:
lxc restore alp snapshot1
Hurrengo komandoa argazki bat ezabatzeko erabiltzen da. Kontuan izan komandoaren sintaxia ez dela beste guztien antzekoa; hemen barra-barra bat zehaztu behar duzu edukiontziaren izenaren ondoren. Barra ezabatzen bada, argazki bat ezabatzeko komandoa edukiontzi bat ezabatzeko komando gisa interpretatuko da!
lxc delete alp/snapshot1
Goiko adibidean, estaturik gabeko argazki deritzonak aztertu ditugu. LXD-k beste argazki mota batzuk ditu: egoerakoak, edukiontzian dauden prozesu guztien egungo egoera gordetzen duena. Estatuko argazkiek hainbat ezaugarri interesgarri eta erabilgarriak dituzte.