LXD on järgmise põlvkonna süsteemikonteinerite haldur, nii öeldakse allikas. See pakub virtuaalmasinatele sarnast kasutajaliidest, kuid kasutab selle asemel Linuxi konteinereid.
LXD tuum on privilegeeritud deemon (juurõigustega teenus), mis pakub REST API-d nii kohaliku unixi pesa kaudu kui ka võrgu kaudu, kui vastav konfiguratsioon on installitud. Kliendid, näiteks LXD-ga kaasas olev käsureatööriist, esitavad taotlusi selle REST API kaudu. See tähendab, et olenemata sellest, kas kasutate juurdepääsu kohalikule või kaughostile, töötab kõik samamoodi.
Selles artiklis me ei peatu LXD kontseptsioonidel üksikasjalikult; me ei võta arvesse kõiki dokumentatsioonis kirjeldatud saadaolevaid võimalusi, sealhulgas hiljutist juurutamist LXD uusimates versioonides, mis toetavad QEMU virtuaalmasinaid paralleelselt konteineritega. Selle asemel õpime ainult konteinerihalduse põhitõdesid – salvestusbasseinide seadistamist, võrgu loomist, konteineri käitamist, ressursipiirangute rakendamist ja hetktõmmiste kasutamist, et saaksite LXD-st põhiteadmised ja konteinerite kasutamist Linuxis.
Täieliku teabe saamiseks vaadake ametlikku allikat:
See tähendab, et korraga installitakse kaks paketti, üks süsteemipaketina ja teine kiirpaketina. Kahe paketi installimine süsteemi võib tekitada probleeme, kus süsteemipakett võib muutuda orvuks, kui snap-paketihaldur snap-paketi eemaldab.
Leia pakett lxd snap-i hoidlas saate kasutada järgmist käsku:
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
Käsu käivitamisega list saate veenduda, et pakett lxd pole veel installitud:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
Hoolimata asjaolust, et LXD on kiirpakett, tuleb see installida süsteemipaketi kaudu lxd, mis loob süsteemis vastava grupi, sisse vajalikud utiliidid /usr/bin jne
sudo apt update
sudo apt install lxd
Veenduge, et pakett oleks installitud kiirpaketina:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
lxd 3.21 13474 stable/… canonical✓ -
LXD paketi installimiseks süsteemi peate käivitama järgmised käsud, esimene värskendab hoidlas saadaolevate süsteemi pakettide loendit, teine installib paketi otse:
sudo pacman -Syyu && sudo pacman -S lxd
Pärast paketi installimist, et tavakasutaja saaks LXD-d hallata, tuleb see lisada süsteemigruppi lxd:
sudo usermod -a -G lxd user1
Veendume, et kasutaja user1 gruppi lisatud lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Kui rühm lxd ei ole loendis nähtav, siis peate kasutajaseansi uuesti aktiveerima. Selleks tuleb välja logida ja sama kasutaja alt sisse logida.
Aktiveeri sisse systemd LXD teenuse laadimine süsteemi käivitamisel:
Enne lähtestamise alustamist peame mõistma, kuidas LXD-s salvestusruum on loogiliselt paigutatud.
Salvestus (Säilitamine) koosneb ühest või mitmest Hoiubassein mis kasutab ühte toetatud failisüsteemidest, näiteks ZFS, BTRFS, LVM või tavalisi katalooge. iga Hoiubassein on jagatud köideteks (Salvestusmaht), mis sisaldavad pilte, konteinereid või muul eesmärgil andmeid.
Pildid - need on spetsiaalselt kokkupandud distributsioonid ilma Linuxi tuumata ja saadaval välistest allikatest
Konteinerid - need on piltidest juurutatud distributsioonid, kasutamiseks valmis
Hetketõmmised - need on hetktõmmised konteinerite olekust, mille juurde saate naasta
LXD-s salvestusruumi haldamiseks kasutage käsku lxc storage sertifikaat, mille saate võtme täpsustades - lxc storage --help
Järgmine käsk kuvab kõigi loendi Hoiubassein LXD-mälus:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Kõigi loendi vaatamiseks Salvestusmaht valitud Hoiubassein teenindab meeskonda 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 |
+-----------+----------------------------------+-------------+---------+
Samuti, kui selleks Hoiubassein Loomisel valiti BTRFS-failisüsteem, seejärel hankige loend Salvestusmaht või alamhulgad BTRFS-i tõlgenduses saate kasutada selle failisüsteemi tööriistakomplekti:
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
Enne konteinerite loomist ja kasutamist peate tegema üldise LXD lähtestamise, mis loob ja konfigureerib võrgu ja salvestusruumi. Seda saab teha käsitsi, kasutades standardseid kliendikäske, mis on saadaval loendis käsu kutsumisega lxc --help või lähtestamisviisardi abil lxd init vastates mõnele küsimusele.
Initsialiseerimise ajal esitab LXD mitmeid küsimusi, sealhulgas vaikefailisüsteemi tüübi määramise Hoiubassein. Vaikimisi on selle jaoks valitud BTRFS-failisüsteem. Pärast loomist on võimatu teisele FS-ile üle minna. Soovitatav on valida FS funktsioonide võrdlustabel:
tunnusjoon
kataloog
Btrfs
LVM
ZFS
CEPH
Optimeeritud piltide salvestamine
ei
jah
jah
jah
jah
Optimeeritud eksemplari loomine
ei
jah
jah
jah
jah
Optimeeritud hetktõmmiste loomine
ei
jah
jah
jah
jah
Optimeeritud pildiedastus
ei
jah
ei
jah
jah
Optimeeritud eksemplari ülekandmine
ei
jah
ei
jah
jah
kopeerida kirjutama
ei
jah
jah
jah
jah
Plokipõhine
ei
ei
jah
ei
jah
Kohene kloonimine
ei
jah
jah
jah
jah
Salvestusdraiver, mida saab kasutada konteineris
jah
jah
ei
ei
ei
Taastamine vanematest hetktõmmistest (mitte uusim)
jah
jah
jah
ei
jah
Säilituskvoodid
jah (*)
jah
jah
jah
ei
Võrgu ja salvestusbasseini lähtestamine viisardi abil ^
Järgmine käsk, mida vaatame, soovitab seadistada LXD põhikomponendid, vastates lihtsatele küsimustele, kasutades lähtestamisviisardi.
Käivita käsk lxc init ja sisestage vastused küsimustele pärast koolonit, nagu on näidatud allolevas näites, või muutke neid vastavalt oma tingimustele:
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]:
Eelmises etapis lõime Hoiubassein millele anti nimi ssdpool ja mille fail asub minu süsteemis aadressil /var/lib/lxd/disks/ssdpool.img. See failisüsteemi aadress vastab minu arvuti füüsilisele SSD-draivile.
Järgmised toimingud, et laiendada arusaamist tema rollist Hoiubassein hoidlas loome teise Hoiubassein mis asub füüsiliselt teist tüüpi kõvakettal. Probleem on selles, et LXD ei luba teil luua Hoiubassein aadressist väljas /var/lib/lxd/disks/ ja isegi sümboolsed lingid ei tööta, vaadake arendaja vastust. Initsialiseerimise/vormindamise ajal saame sellest piirangust mööda minna Hoiubassein määrates väärtuse tagasisilmusfaili tee asemel plokkseadmena, määrates selle võtmes source.
Niisiis, enne loomist Hoiubassein peate määrama oma failisüsteemis tagasisilmusfaili või olemasoleva partitsiooni, mida see kasutab. Selleks loome ja kasutame faili, mille suuruse piirame 10 GB-ni:
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
Ühendame tagasisilmusfaili tasuta loopback-seadmega:
Tänu võtmele --show käsu täitmine tagastab ekraanile selle seadme nime, millega meie loopback-fail on ühendatud. Vajadusel saame kuvada kõigi seda tüüpi hõivatud seadmete loendi, et veenduda meie toimingute õigsuses:
Loendist leiate, et seadmel on /dev/loop1 loopback fail on kaasas /mnt/work/lxd/hddpool.imgja seadmes /dev/loop0 loopback fail on kaasas /var/lib/lxd/disks/ssdpool.img mis vastab vaikeväärtusele Hoiubassein.
Järgmine käsk loob uue Hoiubassein LXD-s, mis põhineb äsja koostatud loopback-failil. LXD vormindab tagasisilmusfaili /mnt/work/lxd/hddpool.img seadmes /dev/loop1 BTRFS-failisüsteemi jaoks:
Meil on üks väike probleem hostisüsteemi taaskäivitamisel, fail /mnt/work/lxd/hddpool.img "lendab" seadmest välja /dev/loop1 ja LXD-teenus jookseb laadimisel kokku, kuna see ei näe seda selles seadmes. Selle probleemi lahendamiseks peate looma süsteemiteenuse, mis lisab selle faili seadmesse /dev/loop1 kui hostsüsteem käivitub.
Loome üksus faili tüüp teenus в /etc/systemd/system/ SystemD lähtestamissüsteemi jaoks:
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
Aktiveerige teenus:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.
Pärast hostisüsteemi taaskäivitamist kontrollime teenuse olekut:
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).
Väljundist saame kontrollida, kas teenuse olek on aktiivne, hoolimata asjaolust, et meie skripti täitmine ühest käsust oli lõpule viidud, võimaldas see valik meil seda teha RemainAfterExit=true.
Kuna kõik konteinerprotsessid töötavad tegelikult hostsüsteemis isoleeritult, kasutades selle tuuma, pakub LXD, et veelgi kaitsta konteineriprotsesside juurdepääsu hostsüsteemile, protsessi privileege, kus:
Privilegeeritud konteinerid - need on konteinerid, milles UID ja GID-ga protsessid vastavad samale omanikule mis hostsüsteemis. Näiteks protsessil, mis töötab konteineris, mille UID on 0, on kõik samad juurdepääsuõigused kui hostsüsteemi protsessil, mille UID on 0. Teisisõnu, konteineri juurkasutaja omab kõiki õigusi mitte ainult konteineris, aga ka hostsüsteemis, kui ta saab väljuda konteineri isoleeritud nimeruumist.
Privilegeerimata konteinerid - need on konteinerid, milles protsessid kuuluvad UID ja GID omanikule numbriga 0 kuni 65535, kuid hostsüsteemi jaoks on omanik maskeeritud vastavalt lisatud SubUID ja SubGID bittide abil. Näiteks kasutajat, kelle konteineris on UID=0, nähakse hostsüsteemis kui SubUID + UID. See kaitseb hostisüsteemi, sest kui mõni konteineris olev protsess suudab oma isoleeritud nimeruumist välja pääseda, saab see hostsüsteemiga suhelda ainult tundmatu, väga kõrge UID/GID-ga protsessina.
Vaikimisi on vastloodud konteineritel privilegeerimata olek ja seetõttu peame määratlema SubUID ja SubGID.
Loome kaks konfiguratsioonifaili, milles seame vastavalt SubUID ja SubGID maski:
Kuna oleme varem võrgu lähtestamisviisardi abil initsialiseerinud lxd init ja lõi võrguseadme lxdbr0, siis selles osas tutvume lihtsalt LXD võrgundusega ja sellega, kuidas kliendikäsku kasutades virtuaalset lülitit (silda) luua.
Järgmine diagramm näitab, kuidas lüliti (sild) ühendab hosti ja konteinerid võrku:
Konteinerid saavad võrgu kaudu suhelda teiste konteineritega või hostiga, kus neid konteinereid teenindatakse. Selleks tuleb siduda konteinerite virtuaalsed võrgukaardid virtuaalse lülitiga. Esmalt loome lüliti ja konteineri võrguliidesed lingitakse järgmistes peatükkides pärast konteineri enda loomist.
Järgmine käsk loob alamvõrguga lüliti 10.0.5.0/24 ja IPv4 aadress 10.0.5.1/24ja sisaldab ka ipv4.nat et konteinerid saaksid NAT-teenust kasutades hosti kaudu Internetti juurde pääseda:
Igal LXD konteineril on oma konfiguratsioon ja seda saab laiendada globaalselt deklareeritud konfiguratsioonidega konfiguratsiooniprofiilid. Konteineri profiilide rakendamisel konteinerile on kaskaadmudel, seda demonstreerib järgmine näide:
Selles näites on LXD süsteemis loodud kolm profiili: default, hddpool и hostfs. Kõik kolm profiili rakendatakse konteinerile, millel on kohalik konfiguratsioon (hall ala). Profiil default on seade root millel on parameeter pool on ssdpool, kuid tänu kaskaadkonfiguratsiooni rakenduse mudelile saame konteinerile profiili rakendada hddpool millel on parameeter pool alistab sama parameetri profiilist default ja konteiner saab seadme konfiguratsiooni root parameetriga pool võrdne hddpoolja profiil hostfs lihtsalt lisab konteinerisse uue seadme.
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Profiiliga töötamiseks saadaolevate käskude täieliku loendi saate võtme lisamisega --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
Vaikekonfiguratsiooniprofiil default ei oma konteineri jaoks võrgukaardi konfiguratsiooni ja kõigil vastloodud konteineritel pole võrku, nende jaoks on vaja luua eraldi käsuga kohalikud (spetsiaalsed) võrguseadmed, kuid konfiguratsioonis saame luua globaalse võrguseadme profiil, mida jagatakse kõigi seda profiili kasutavate konteinerite vahel. Nii on neil kohe pärast uue konteineri loomise käsku võrk, millel on juurdepääs võrgule. Samas piiranguid pole, vajadusel saame alati hiljem luua kohaliku võrgu seadme.
Järgmine käsk lisab seadme konfiguratsiooniprofiili eth0 tüüp nic võrku ühendatud lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Oluline on märkida, et kuna me tegelikult lisasime seadme konfiguratsiooniprofiili, siis kui määrasime seadmes staatilise IP-aadressi, jagavad kõik seda profiili kasutavad konteinerid sama IP-aadressi. Kui on vaja luua konteinerile eraldatud staatilise IP-aadressiga konteiner, peaksite võrguseadme konfiguratsiooni looma IP-aadressi parameetriga konteineri tasemel (kohalik konfiguratsioon), mitte profiili tasemel.
Vaatame profiili üle:
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: []
Sellel profiilil näeme, et kõigi vastloodud konteinerite jaoks luuakse kaks seadet:
eth0 - Seadme tüüp nic ühendatud lülitiga (võrgusild) lxdbr0
root - Seadme tüüp disk mis kasutab hoiubasseini ssdpool
Varem loodud kasutamiseks Hoiubassein konteinerid, looge konfiguratsiooniprofiil ssdroot millesse lisame seadme nagu disk koos kinnituspunktiga / (juur), kasutades eelnevalt loodud Hoiubassein - ssdpool:
Konteinerid luuakse piltidest, mis on spetsiaalselt kokku pandud distributsioonid, millel pole Linuxi tuuma. Seetõttu tuleb see enne konteineri käivitamist sellelt pildilt juurutada. Piltide allikaks on kohalik hoidla, kuhu laaditakse alla pilte välistest hoidlatest.
Konteineri kasutamise alustamiseks peate lisama pildi globaalsest hoidlast kohalikku local:. Nüüd on kohalik hoidla tühi, käsk veendub selles lxc image list. Kui meetod list ärge määrake hoidlat, siis kasutatakse vaikimisi kohalikku hoidlat - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Hoidlas olevaid pilte hallatakse järgmiste meetoditega.
Meeskond
Kirjeldus
lxc pilt alias
Piltide varjunimede haldamine
lxc pilt koopia
Kopeerige pilte serverite vahel
lxc pilt kustutama
Kustuta pildid
lxc pilt muuta
Redigeeri pildi atribuute
lxc pilt eksport
Eksportige ja laadige alla pilte
lxc pilt import
Importige pildid pildipoodi
lxc pilt info
Näita kasulikku teavet piltide kohta
lxc pilt nimekiri
Loendi pilte
lxc pilt refresh
Värskenda pilte
lxc pilt näitama
Kuva pildi atribuudid
Kopeerige pilt globaalsest hoidlast kohalikku hoidlasse images::
Lisaks interaktiivsele režiimile toetab LXD ka mitteinteraktiivset konfiguratsiooni installirežiimi, see on siis, kui konfiguratsioon määratakse YAML-faili kujul, mis on spetsiaalne vorming, mis võimaldab teil installida kogu konfiguratsiooni korraga, jättes täitmisest mööda. paljudest interaktiivsetest käskudest, mida selles artiklis eespool käsitleti, sealhulgas võrgu konfigureerimine, konfiguratsiooniprofiilide loomine jne. Me ei käsitle seda ala siin, saate seda ise kontrollida. dokumentatsioonis.
Järgmine interaktiivne käsk lxc config mida me vaatame, saate määrata konfiguratsiooni. Näiteks tagamaks, et kohalikku hoidlasse allalaaditud pilte ei värskendata automaatselt globaalsetest hoidlatest, saame selle käitumise lubada järgmise käsuga:
Konteineri loomiseks kasutage käsku lxc init millele väärtused edasi antakse репозиторий:образ ja seejärel konteineri soovitud ID. Hoidla saab määrata kohalikuks local: nii on ka iga globaalne. Kui hoidlat pole määratud, siis vaikimisi kasutatakse pildi otsimiseks kohalikku hoidlat. Kui pilt on määratud globaalsest hoidlast, laaditakse pilt esmalt alla kohalikku hoidlasse ja seejärel kasutatakse konteineri loomiseks.
Käivitame esimese konteineri loomiseks järgmise käsu:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Vaatame siin kasutatavaid käsuklahve järjekorras:
alpine3 — Varem kohalikku hoidlasse üles laaditud pildile on määratud varjunimi (alias). Kui selle pildi jaoks pole pseudonüümi loodud, saate selle pildi järgi alati viidata Sõrmejälg mis kuvatakse tabelis.
alp — Määrab konteineri identifikaatori
--storage — See klahv näitab, millises Hoiubassein luuakse konteiner
--profile — Need võtmed rakendavad konteinerisse konfiguratsiooni varem loodud konfiguratsiooniprofiilidest
Käivitame konteineri, mis hakkab käivitama distributsiooni init-süsteemi:
lxc start alp
Võite kasutada ka käsku lxc launch mis võimaldab meeskondi ühendada lxc init и lxc start ühes operatsioonis.
Konteineri seisukorra kontrollimine:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
Jaotises profiles saame olla kindlad, et see konteiner kasutab kahte konfiguratsiooniprofiili − default и hddroot. Jaotises devices saame tuvastada ainult ühe seadme, kuna võrguseade loodi profiili tasemel default. Kõigi konteineris kasutatavate seadmete nägemiseks peate lisama võtme --expanded:
Kui proovime määrata võrguseadmele IP-aadressi eth0 meeskond lxc config device set alp mõeldud konteineri konfiguratsiooni jaoks, siis saame veateate, mis teatab, et seadet pole olemas, kuna seade eth0 mida konteiner kasutab, kuulub profiili juurde default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Muidugi saame määrata staatilise IP-aadressi eth0 profiilis olevad seadmed, kuid see kehtib kõigi seda profiili kasutavate konteinerite puhul. Seetõttu lisame konteinerile spetsiaalse seadme:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Seejärel peate konteineri taaskäivitama:
lxc restart alp
Kui vaatame praegu konteineri konfiguratsiooni, ei pea me seda valikut kasutama --expanded võrguseadme nägemiseks eth0, kuna lõime selle konteineri tasemel ja see liikus profiilist üle sama seadme default:
Käskude täitmiseks konteineris otse, võrguühendustest mööda minnes, kasutage käsku lxc exec mis täidab konteineris käske ilma süsteemi kesta käivitamata. Kui teil on vaja täita shellis käsk, kasutades kesta mustreid, nagu muutujad, failide ümbersuunamised (toru) jne, siis peate shell selgesõnaliselt käivitama ja käsu võtmena edastama, näiteks:
lxc exec alp -- /bin/sh -c "echo $HOME"
Käsk kasutas spetsiaalset paomärki erilise iseloomu jaoks $ nii et muutuja $HOME ei tõlgendatud hostmasinas, vaid seda tõlgendati ainult konteineri sees.
Samuti on võimalik käivitada interaktiivne kestarežiim ja seejärel seanss lõpetada kiirklahvi käivitamisega CTRL+D:
LXD-s saate konteineriressursse hallata spetsiaalse konfiguratsioonikomplekti abil. Leiate konteineri konfiguratsiooniparameetrite täieliku loendi dokumentatsioonis.
Protsessori ressursside piiramiseks on mitu võimalust. piirangute tüübid:
limit.cpu - seob konteineri ühe või mitme CPU südamikuga
limits.cpu.allowance - haldab CFS-i planeerija kvoote, kui tähtaeg on möödas, või universaalset protsessori ressursside jagamise mehhanismi, kui protsent on möödas
limits.cpu.priority - planeerija prioriteet, kui mitmele protsessorite komplekti jagavale eksemplarile määratakse sama protsessorite protsent
Lisaks piirangutele nagu limits.read, limits.write saame piirata ka konteineri tarbitava kettaruumi hulka (töötab ainult ZFS-i või BTRFS-iga):
lxc config device set alp root size=2GB
Pärast paigaldamist parameetris devices.root.size Saame kontrollida seatud limiiti:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Kasutatud kettakvootide vaatamiseks saame käsust 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
Hoolimata asjaolust, et oleme seadnud konteineri juurseadme piiranguks 2 GB, kasutavad süsteemiutiliidid, nagu df ei näe seda piirangut. Selleks viime läbi väikese testi ja uurime, kuidas see töötab.
Loome samas 2 uut identset konteinerit Hoiubassein (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Kui vaatame teises konteineris, kontrollime faili olemasolu samas asukohas, siis seda faili seal pole, mis on ootuspärane, kuna konteinerid luuakse omaette Salvestusmaht samas Hoiubassein:
lxc exec alp2 -- ls -lh
total 0
Kuid võrdleme väärtusi, mida see toodab df ühel ja teisel konteineril:
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% /
...
Seade /dev/loop1 monteeritud nii, nagu juurpartitsioon on Hoiubassein mida need konteinerid kasutavad, nii et nende maht jagatakse kahe vahel.
LXD-l on võimalus luua hetktõmmiseid ja taastada nende põhjal konteineri olek.
Pildi loomiseks käivitage järgmine käsk:
lxc snapshot alp snapshot1
Meeskond lxc snapshot võtit pole saadaval listSeetõttu peate hetktõmmiste loendi vaatamiseks kasutama käsku, mis kuvab konteineri kohta üldist teavet:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Konteineri saate hetktõmmisest taastada käsu abil lxc restore määrates konteineri, mille jaoks taastatakse, ja hetktõmmise varjunime:
lxc restore alp snapshot1
Hetketõmmise kustutamiseks kasutatakse järgmist käsku. Pange tähele, et käsu süntaks ei ole kõigi teistega sarnane; siin peate konteineri nime järel määrama kaldkriipsu. Kui kaldkriips on välja jäetud, tõlgendatakse hetktõmmise kustutamise käsku konteineri kustutamise käsuna!
lxc delete alp/snapshot1
Ülaltoodud näites vaatlesime niinimetatud olekuta hetktõmmiseid. LXD-l on teist tüüpi hetktõmmised – olekupõhine, mis salvestab kõigi konteineris olevate protsesside hetkeseisu. Olekupõhiste hetktõmmistega on seotud mitmeid huvitavaid ja kasulikke funktsioone.