LXD põhifunktsioonid — konteinerisüsteem Linuxis

LXD põhifunktsioonid — konteinerisüsteem Linuxis

LXD — on järgmise põlvkonna konteinerihaldur, nii väidab allikas. See pakub kasutajaliidest, mis sarnaneb virtuaalmasinate omale, kuid kasutab selle asemel Linuxi konteinereid.

LXD-i tuum — on privileeritud teenus (teenus, mis on käivitatud root õigustega), mis pakub REST API-d kohalikku unix socketi kaudu ning ka üle võrgu, kui vastav konfiguratsioon on paigaldatud. Kliendid, nagu LXD-ga kaasa tulev käsurea tööriist, saadavad päringud selle REST API kaudu. See tähendab, et olenemata sellest, kas pöördute kohalikku hosti või kaug-hosti poole, töötab kõik samamoodi.

Selles artiklis ei keskendu me LXD kontseptsioonidele, ei käsitle kõiki dokumentatsioonis esitatud võimalusi, sealhulgas hiljutist teostust viimastes LXD versioonides QEMU virtuaalmasinate toe paralleelselt konteineritega. Selle asemel uurime ainult konteinerihalduse põhivõimalusi – seadistame salvestusjärjestused, võrgu, käivitame konteineri, rakendame ressursipiirangud ja vaatame, kuidas kasutada jääkaadreid, et saaksite LXD-st põhjaliku arusaama ja kasutada Linuxis konteinereid.

Täieliku teabe saamiseks tutvuge ametliku allikaga:

Navigeerimine

LXD paigaldamine ^

LXD paigaldamine Ubuntu distributsioonides ^

lxd muundub snap-paketiks snap-pakett:

apt search lxd

lxd/eoan 1:0.7 all
  Ülemineku pakett - lxd -> snap (lxd)

See tähendab, et installitakse kohe kaks paketti, üks süsteemipakett ja teine snap-pakett. Kahe paketi installimine süsteemi võib tekitada probleemi, kus süsteemipakett võib muutuda orvuks, kui snap-pakett eemaldatakse snap-pakettide halduriga.

Leidke pakett muundub snap-repositoriumis saab järgmise käsuga:

snap find lxd

Nimi              Versioon        Kokkuvõte
lxd               3.21           Süsteemi konteinerihaldur ja API
lxd-demo-server   0+git.6d54658  Veebipõhised tarkvara demoseansid, mis kasutavad LXD
nova              ocata          OpenStacki arvutusservice (nova)
nova-hypervisor   ocata          OpenStacki arvutusservice - KVM hüperviisor (nova)
distrobuilder     1.0            Piltide koostamise tööriist LXC ja LXD jaoks
fabrica           0.1            Snapide koostamine, suunates veebivormi ...
satellite         0.1.2          Täiustatud skaleeritav avatud allika intelligentsuse platvorm

Käivitades käsu loend võime veenduda, et pakett muundub pole veel installitud:

snap list

Nimi  Versioon    Rev   Jälgimine  Publisher   Märkused
core  16-2.43.3  8689  stable    canonical✓  core

Kuigi LXD on snap-pakett, tuleb seda installida läbi süsteemipaketti muundub, mis loob süsteemis vastava grupi, vajalikud utiliidid; /usr/bin jne.

sudo apt update
sudo apt install lxd

Veendume, et pakett on installitud kui snap-pakett:

snap list

Nimi  Versioon    Rev    Jälgimine  Publisher   Märkused
core  16-2.43.3  8689   stable    canonical✓  core
lxd   3.21       13474  stable/...  canonical✓  -

LXD paigaldamine Arch Linux distributsioonides ^

LXD-paketi installimiseks süsteemis tuleb käivitada järgmised käsud, esimene - ajakohastab pakettide nimekirja süsteemis, mis on saadaval reposioonis, teine - installib paketi:

sudo pacman -Syyu && sudo pacman -S lxd

Pärast paketi installimist, et hallata LXD-d tavalise kasutajana, tuleb see lisada süsteemi gruppi muundub:

sudo usermod -a -G lxd user1

Veendume, et kasutaja user1 on lisatud gruppi muundub:

id -Gn user1

user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd

Kui grupp muundub pole nimekirjas näha, siis tuleb kasutaja sessioon uuesti aktiveerida. Selleks peab sama kasutaja välja logima ja uuesti sisenema.

Aktiveerime systemd LXD teenuse üleslaadimise süsteemi käivitamise ajal:

sudo systemctl enable lxd

Käivitame teenuse:

sudo systemctl start lxd

Kontrollime teenuse staatust:

sudo systemctl status lxd

LXD salvestus (Storage) ^

Enne, kui alustame initsialiseerimist, peame aru saama, kuidas LXD-s säilitamine loogiliselt paigutatud on.

Säilitamine (Salvestus) koosneb ühe või mitme Säilitustorn mis kasutab ühte toetatud failisüsteemist nagu ZFS, BTRFS, LVM või tavalised kataloogid. Iga Säilitustorn jagatakse mahtudeks (Säilituse maht) mis sisaldavad pilte, konteinerite või muu otstarbega andmeid.

  • Pildid — need on spetsiaalselt kokku pandud jaotused, milles ei ole Linuxi tuuma ja mis on saadaval välistest allikatest
  • Konteinerid — need on paigaldatud jaotused piltidest, mis on tööks valmis
  • Snaipid — need on konteinerite oleku pildid, millesse saab tagasi pöörduda

LXD põhifunktsioonid — konteinerisüsteem Linuxis

LXD-s salvestamise haldamiseks kasutatakse käsku lxc storage mille kohta saab abi küsida, kasutades võtit — lxc storage --help

Järgmine käsk kuvab ekraanile kõigi Säilitustorn LXD salvestuste nimekirja:

lxc storage list

+---------+-------------+--------+--------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |             SOURCE             | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool |             | btrfs  | /dev/loop1                     | 2       |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool |             | btrfs  | /var/lib/lxd/disks/ssdpool.img | 4       |
+---------+-------------+--------+--------------------------------+---------+

Kogu selle valitud jaoks salvestuste nimekirja vaatamiseks kasutatakse käsku Säilituse maht lxc storage volume list Säilitustorn 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

loomisest valiti BTRFS failisüsteem, saab saada nimekirja

subvolumes Säilitustorn BTRFS tõlgenduses, kasutades selle failisüsteemi tööriistu: Säilituse maht või sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/hddpoolID 257 gen 818 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3 sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/ssdpoolID 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 tuleb teostada LXD üldine initsialiseerimine, mis loob ja seadistab võrgu ning salvestuse. Seda saab teha käsitsi, kasutades kliendi standardkäsku, mis on saadaval nimekirjas, kutsudes käsku

lxc --help

LXD initsialiseerimine ^

või initsialiseerimise abil lxd init vastates mõnele küsimusele. lxd init vastamisel mõnele küsimusele.

Failisüsteemi valimine salvestusjärjestusele ^

LXD küsib initsialiseerimise ajal mitmeid küsimusi, sealhulgas vaikimisi failisüsteemi tüüp. SäilitustornSelle jaoks valitakse vaikimisi failisüsteemiks BTRFS. Pärast loomist ei ole võimalik faili süsteemi muuta.Failisüsteemi valimiseks on olemas võimaluste võrdlustabel.:

Funktsioon
Directory
Btrfs
LVM
ZFS
CEPH

Optimeeritud pildi salvestamine
no
yes
yes
yes
yes

Optimeeritud instantside loomine
no
yes
yes
yes
yes

Optimeeritud snapshotide loomine
no
yes
yes
yes
yes

Optimeeritud pildi edastamine
no
yes
no
yes
yes

Optimeeritud instantside edastamine
no
yes
no
yes
yes

Kirjuta kirjutamise peale
no
yes
yes
yes
yes

Plokkpõhine
no
no
yes
no
yes

Kiire kloonimine
no
yes
yes
yes
yes

Salvestusjuhi kasutamine konteineris
yes
yes
no
no
no

Taasta vanematest snapshotidest (mitte viimastest)
yes
yes
yes
no
yes

Salvestuskvoodid
jah(*)
yes
yes
yes
no

Võrgu ja salvestusjärjestuse initsialiseerimine assistendi abil ^

Järgmine käsu, mida me käsitleme, võimaldab seadistada LXD põhikomponente lihtsate küsimuste vastuste kaudu initsialiseerimisviisardi abil.

Käitage käsku lxc init ja sisestage vastused küsimustele pärast kolmnurksümbolit, nagu näidatud allpool, või muutke neid vastavalt oma tingimustele:

lxd init

Kas soovite kasutada LXD klastrisse? (jah/ei) [vaikimisi=ei]: 
Kas soovite konfigureerida uut salvestusala? (jah/ei) [vaikimisi=jah]: 
Uue salvestusala nimi [vaikimisi=vaikimisi]: ssdpool         
Kasutatav salvestusbackend (lvm, btrfs, dir) [vaikimisi=btrfs]: 
Kas soovite luua uue BTRFS ala? (jah/ei) [vaikimisi=jah]: 
Kas soovite kasutada olemasolevat plokiseadet? (jah/ei) [vaikimisi=ei]: 
Uue silindri seadme suurus GB-des (1GB minimaalne) [vaikimisi=15GB]: 10GB
Kas soovite ühenduda MAAS serveriga? (jah/ei) [vaikimisi=ei]: 
Kas soovite luua uue kohaliku võrgu silla? (jah/ei) [vaikimisi=jah]: 
Mis peaks olema uue silda nimi? [vaikimisi=lxdbr0]: 
Millist IPv4 aadressi tuleks kasutada? (CIDR alamvõrgu notatsioon, "auto" või "ei") [vaikimisi=auto]: 10.0.5.1/24
Kas soovite, et LXD NAT-käivitaks IPv4 liiklust teie sillal? [vaikimisi=jah]: 
Millist IPv6 aadressi tuleks kasutada? (CIDR alamvõrgu notatsioon, "auto" või "ei") [vaikimisi=auto]: ei
Kas soovite, et LXD oleks kergesti kergesti saadaval? (jah/ei) [vaikimisi=ei]: 
Kas soovite, et ummistunud vaheldumisi uuendataks automaatselt? (jah/ei) [vaikimisi=jah] ei
Kas soovite, et YAML "lxd init" eelseade välja trükitaks? (jah/ei) [vaikimisi=ei]: 

Suurendamine täiendava salvestusjärjestuse loomisega ^

Eelmises sammus lõime Säilitustorn millele andsime nime ssdpool ja mille fail asub minu süsteemis aadressil /var/lib/lxd/disks/ssdpool.img. See failisüsteemi aadress vastab minu personaalse arvuti füüsilisele SSD-diskile.

Järgmiste toimingute puhul, et paremini mõista, millist rolli mängib Säilitustorn salvestuses, loome teise Säilitustorn mis asub füüsiliselt teistsugusel kettatüübil, HDD-l. Säilitustorn Probleem on selles, et LXD ei luba luua /var/lib/lxd/disks/ välja aadressist ja isegi sümboolseted lingid ei tööta,vt arendaja vastust. Säilitustorn Seda piirangut saame vältida initsialiseerimise/formaatimise ajal, source.

märgides väärtuse plokiseadmeks, mitte loopback-faili teeks, määrates selle võtmes. Säilitustorn On vajalik määrata loopback-fail või olemasolev partitsioon teie failisüsteemis, mida see kasutab. Selleks loome ja kasutame faili, mille suuruse piirdame 10GB-ga:

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 loopback-faili vaba loopback-seadmestikuga:

sudo losetup --find --show \/mnt\/work\/lxd\/hddpool.img

\/dev\/loop1

Tänu võtmele --show tagastab käsk ekraanile seadme nime, millega meie loopback-fail on ühendatud. Vajadusel saame ekraanile väljendada nimekirja kõikidest hõivatud seadmetest seda tüüpi, et veenduda meie tegevuste õigsuses:

losetup -l

NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                      DIO LOG-SEC
\/dev\/loop1         0      0         0  0 \/mnt\/work\/lxd\/hddpool.img        0     512
\/dev\/loop0         0      0         1  0 \/var\/lib\/lxd\/disks\/ssdpool.img   0     512

Nimekirjast võib näha, et seadmes /dev/loop1 on ühendatud loopback-fail /mnt/work/lxd/hddpool.img, ja seadmes /dev/loop0 on ühendatud loopback-fail /var/lib/lxd/disks/ssdpool.img mis vastab vaikimisi Säilitustorn.

Järgmine käsk loob uue Säilitustorn LXD-s just ettevalmistatud loopback-faili põhjal. LXD vormindab loopback-faili /mnt/work/lxd/hddpool.img seadmestikus /dev/loop1 BTRFS failisüsteemi:

lxc storage create hddpool btrfs size=10GB source=\/dev\/loop1

Väljendame kõiki Säilitustorn ekraanile:

lxc storage list

+---------+-------------+--------+--------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |             SOURCE             | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool |             | btrfs  | \/dev\/loop1                     | 0       |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool |             | btrfs  | \/var\/lib\/lxd\/disks\/ssdpool.img | 0       |
+---------+-------------+--------+--------------------------------+---------+

Loopback-faili automaatne lisamine loopback-seadmestikku ^

Pärast loomist Säilitustorn, vajadusel, saab seda laiendada. BTRFS failisüsteemi põhjal täitke järgmised käsud: Säilitustorn sudo truncate -s +5G \/mnt\/work\/lxd\/hddpool.img sudo losetup -c \/dev\/loop1 sudo btrfs filesystem resize max \/var\/lib\/lxd\/storage-pools\/hddpool

Meil on üks väike probleem, kui host-süsteem taaskäivitub, siis fail

Turvalisus. Konteinerite privileegid ^

"langeb" seadmest välja /mnt/work/lxd/hddpool.img ja LXD teenus kukub laadimise ajal, kuna ei näe seda seadmest. Selle probleemi lahendamiseks on vajalik luua süsteemiteenus, mis ühendab selle faili seadmega /dev/loop1 host-süsteemi käivitamisel. /dev/loop1 fail tüübiga

Loome üksuse SystemD initsialiseerimissüsteemile: teenus ja /etc/systemd/system/ 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

Aktiveerime teenuse:

Aktiveerime teenuse:

sudo systemctl enable lxd-hddpool

Loodud symbol	/etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.

Pärast host-süsteemi taaskäivitamist kontrollime teenuse staatust:

systemctl status lxd-hddpool.service 

● lxd-hddpool.service - Losetup LXD Storage Pool (hddpool)
     Loaded: laetud (/etc/systemd/system/lxd-hddpool.service; lubatud; tootepool: keelatud)
     Active: aktiivne (väljunud) alates Kol 2020-04-08 03:43:53 MSK; 1min 37s tagasi
    Process: 711 ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img (kood=väljunud, staatus=0/EDUKAS)
   Main PID: 711 (kood=väljunud, staatus=0/EDUKAS)

apr 08 03:43:52 manjaro systemd[1]: Käivitab Losetup LXD Storage Pool (hddpool)...
apr 08 03:43:53 manjaro systemd[1]: Lõpetas Losetup LXD Storage Pool (hddpool).

Väljundist saame veenduda, et teenuse olek on active, vaatamata sellele, et meie skripti täitmine ühe käsuna lõpetati, andis see meile võimaluse RemainAfterExit=true.

Virtuaalse võrguswitšeri loomine ^

Kuna kõik konteineri protsessid tegelikult käivad isoleeritud host-süsteemis, kasutades selle südamikku, pakub LXD protsesside täiendava kaitse host-süsteemi juurde pääsemiseks, kus:

  • Privileegitud konteinerid — need on konteinerid, kus protsesside UID ja GID vastavad samale omanikule, mis on host-süsteemis. Näiteks, konteineris, mille UID on 0, on kõik õigused samad, mis host-süsteemis UID-ga 0 protsessil. Teisisõnu, konteineri root-kasutajal on kõik õigused mitte ainult konteineris, vaid ka host-süsteemis, kui ta suudab pääseda väljapoole konteineri isoleeritud nimesüsteemi.

  • Mitteprivileegitud konteinerid — need on konteinerid, kus protsessid kuuluvad omanikele UID ja GID numbriga vahemikus 0 kuni 65535, kuid host-süsteemis omanik maskeeritakse SubUID ja SubGID lisatud bittidega. Näiteks, konteineri UID=0 kasutaja tuvastatakse host-süsteemis kui SubUID + UID. See kaitseb host-süsteemi, kuna kui mõni protsess konteineris suudab väljuda oma isoleeritud nimesüsteemist, saab ta suhelda host-süsteemiga ainult tundmatu, väga kõrge UID/GID-ga protsessina.

Vaikimisi on uutel konteineritel privileegitamata olek ja seetõttu peame määrama SubUID ja SubGID.

Loome kaks konfiguratsioonifaili, milles määrame SubUID ja SubGID maski vastavalt:

sudo touch /etc{/subuid,/subgid}
sudo usermod --add-subuids 1000000-1065535 root 
sudo usermod --add-subgids 1000000-1065535 root

Muutuste rakendamiseks peab LXD teenus olema taaskäivitatud:

sudo systemctl restart lxd

Konfiguratsiooniprofiil ^

Kuna me eelnevalt initsialiseeritud võrgu tähtsus ja masina initsialiseerimise tööriistadega lxd init ja lõime võrgu seadme lxdbr0, uurime selles jaotises lihtsalt LXD võrku ning kuidas luua virtuaalne lüliti (võrgusild) kliendi käsu abil.

Järgmine skeem näitab, kuidas lüliti (võrgusild) ühendab hosti ja konteinerid võrku:

LXD põhifunktsioonid — konteinerisüsteem Linuxis

Konteinerid saavad võrgu kaudu suhelda teiste konteineritega või hostiga, millel need konteinerid töötavad. Selleks on vajalik virtuaalsete võrkaartide ühendamine virtuaalse lülitiga. Alustame lüliti loomisega ning konteineri võrgu liidesed ühendatakse järgmistes peatükkides, kui konteiner ise on loodud.

Järgmine käsk loob lüliti koos alavõrguga 10.0.5.0/24 ja IPv4 aadressiga 10.0.5.1/24, samuti aktiveerib ipv4.nat et konteinerid saaksid hosti kaudu NAT-teenuse abil internetti pääseda:

lxc network create lxdbr0 ipv4.address=10.0.5.1/24 ipv4.nat=true ipv6.address=none

Kontrollime LXD-s saadaval olevate võrgu seadmete loendit:

lxc network list

+--------+----------+---------+-------------+---------+
|  NAME  |   TYPE   | MANAGED | DESCRIPTION | USED BY |
+--------+----------+---------+-------------+---------+
| eno1   | physical | NO      |             | 0       |
+--------+----------+---------+-------------+---------+
| lxdbr0 | bridge   | YES     |             | 0       |
+--------+----------+---------+-------------+---------+

Samuti saab võrgu seadme loomise kontrollida Linuxi jaotuse sisseehitatud tööriista abil — ip link või ip addr:

ip addr

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:ee:7b:5a:6b:44 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet6 fe80::9571:11f3:6e0c:c07b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: lxdbr0:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether c2:38:90:df:cb:59 brd ff:ff:ff:ff:ff:ff
    inet 10.0.5.1/24 scope global lxdbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::c038:90ff:fedf:cb59/64 scope link 
       valid_lft forever preferred_lft forever
5: veth3ddab174@if4:  mtu 1500 qdisc noqueue master lxdbr0 state UP group default qlen 1000
    link/ether ca:c3:5c:1d:22:26 brd ff:ff:ff:ff:ff:ff link-netnsid 0

Profiili redigeerimine ^

Igal konteineril LXD-s on oma konfigureerimise määratlemine ja võime seda laiendada globaalselt deklareeritud konfiguratsioonidega, mida nimetatakse konfiguratsiooniprofiilid. Konfiguratsiooniprofiilide rakendamine konteinerile järgib kaskaadmudelit, järgmine näide demonstreerib seda:

LXD põhifunktsioonid — konteinerisüsteem Linuxis

Selles näites on LXD-s loodud kolm profiili: Seejärel käivitame exec käsu ja ootame 5000 sekundit, et jätkata jälgimist:, hddpool ja hostfs. Kõik kolm profiili on rakendatud konteinerile, millel on kohalik konfiguratsioon (hall ala). Profiil Seejärel käivitame exec käsu ja ootame 5000 sekundit, et jätkata jälgimist: omab seadet root mille parameeter pool on ssdpool, kuid tänu konfiguratsiooni rakendamise kaskaadmudelile saame rakendada konteinerile profiili hddpool mille parameeter pool mis katab selle sama parameetri profiilist Seejärel käivitame exec käsu ja ootame 5000 sekundit, et jätkata jälgimist: ja konteiner saab seadme konfiguratsiooni root parameetriga pool võrdne hddpool, samas kui profiil hostfs lihtsalt lisab konteinerisse uue seadme.

Selleks, et näha saadaolevate konfiguratsiooniprofiilide loendit, kasutatakse järgmist käsku:

lxc profile list

+---------+---------+
|  NAME   | USED BY |
+---------+---------+
| default | 1       |
+---------+---------+
| hddroot | 0       |
+---------+---------+
| ssdroot | 1       |
+---------+---------+

Kogu saadaolevate käskude loetelu profiiliga töötamiseks saab saada, lisades võtme --help:

lxc profile --help

Description:
  Hallake profiile

Usage:
  lxc profile [käsk]

Available Commands:
  add         Lisa profiile instantsidesse
  assign      Määrake profiilide kogumid instantsidele
  copy        Kopeerige profiilid
  create      Looge profiilid
  delete      Kustutage profiilid
  device      Hallake instantside seadmeid
  edit        Redigeerige profiili konfiguratsioone YAML vormingus
  get         Saage profiili konfiguratsioonivõtmete väärtused
  list        Loendage profiilid
  remove      Eemaldage profiilid instantsidest
  rename      Nimeta profiilid ümber
  set         Määrake profiili konfiguratsioonivõtmed
  show        Kuvage profiili konfiguratsioonid
  unset       Tühistage profiili konfiguratsioonivõtmed

Uute profiilide loomine ^

Vaikimisi konfiguratsiooniprofiil Seejärel käivitame exec käsu ja ootame 5000 sekundit, et jätkata jälgimist: ei oma konteineri jaoks võrgukaardi konfiguratsiooni ja kõik uued loodud konteinerid ei oma võrku, nende jaoks tuleb luua kohalikud (dedikeeritud) võrguseadmed eraldi käsuga, kuid me saame luua konfiguratsiooniprofiilis ühtse võrguseadme, mis jagatakse kõigi nende konteinerite vahel, kes kasutavad seda profiili. Seega, kohe pärast uue konteineri loomise käsku on neil ühendus võrku. Samas ei ole piiranguid, me saame alati hiljem luua kohalikku võrguseadet, kui see on vajalik.

Järgmine käsk lisab konfiguratsiooniprofiili seadme eth0 tüüpi nic mis on ühendatud võrku lxdbr0:

lxc profile device add default eth0 nic network=lxdbr0 name=eth0

Oluline on märkida, et kuna oleme tegelikult seadme lisanud konfigureerimisprofiili, siis kui me määraksime seadmele staatilise IP-aadressi, jagaksid kõik konteinerid, mis kasutavad seda profiili, sama IP-aadressi. Kui on vajalik luua konteiner, millel on eraldi staatiline IP-aadress, tuleks luua konteineri tasemel võrgu seadme konfiguratsioon (kohalik konfiguratsioon) IP-aadressi parameetriga, mitte profiili tasemel.

Kontrollime profiili:

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: []

Selles profiilis näeme, et kõikide uute konteinerite jaoks luuakse kaks seadet (devices):

  • eth0 — Seade tüüp nic ühendatud lülitiga (võrgusillaga) lxdbr0
  • root — Seade tüüp disk mis kasutab salvestuspumpa ssdpool

Piltide hoidla ^

Kasutamiseks eelnevalt loodud Säilitustorn konteinerite jaoks loome konfigureerimisprofiili ssdroot kuhu lisame seadme tüüp disk määratud mount-punktiga / (root), mis kasutab eelnevalt loodud Säilitustornssdpool:

lxc profile create ssdroot
lxc profile device add ssdroot root disk path=\ pool=ssdpool

Sarnaselt loome seadme tüüp disk, kuid antud juhul kasutab Säilitustornhddpool:

lxc profile create hddroot
lxc profile device add hddroot root disk path=\ pool=hddpool

Kontrollime konfiguratsiooniprofiile:

lxc profile show ssdroot

config: {}
description: ""
devices:
  root:
    path: \
    pool: ssdpool
    type: disk
name: ssdroot
used_by: []

lxc profile show hddroot

config: {}
description: ""
devices:
  root:
    path: \
    pool: hddpool
    type: disk
name: hddroot
used_by: []

Kaug-piltide hoidlad ^

Konteinerid luuakse piltidest, mis on spetsiaalselt kokku pandud jaotustest, mis ei sisalda Linuxi tuuma. Seega, enne konteineri käivitamist peab see olema selle pildi põhjal juurutatud. Piltide allikaks on kohalik hoidla, kuhu pildid laaditakse välisest hoidlast.

Kohalik piltide hoidla ^

Vaikimisi on LXD seadistatud piltide saamiseks kolmest kaugallikast:

  • ubuntu: (stabiilsete Ubuntu piltide jaoks)
  • ubuntu-daily: (päevaste Ubuntu piltide jaoks)
  • images: (paljude teiste jaotuste jaoks)

lxc remote list

+-----------------+------------------------------------------+--------+--------+
|      NAME       |                   URL                    | PUBLIC | STATIC |
+-----------------+------------------------------------------+--------+--------+
| images          | https://images.linuxcontainers.org       | JAH    | EI     |
+-----------------+------------------------------------------+--------+--------+
| local (default) | unix://                                  | EI     | JAH    |
+-----------------+------------------------------------------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases | JAH    | JAH    |
+-----------------+------------------------------------------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | JAH    | JAH    |
+-----------------+------------------------------------------+--------+--------+

Näiteks, hoidla ubuntu: omab järgmisi pilte:

lxc image -c dasut list ubuntu: | head -n 11

+----------------------------------------------+--------------+----------+------------+
|                   DESCRIPTION                | ARCHITECTURE |   SIZE   |   TYPE     |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150728)  | x86_64       | 153.72MB | KONTEINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150819)  | x86_64       | 152.91MB | KONTEINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150906)  | x86_64       | 154.69MB | KONTEINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150930)  | x86_64       | 153.86MB | KONTEINER  |
+----------------------------------------------+--------------+----------+------------+

Teatud veergude kuvamiseks kasutasime valikut -c parameetritega dasut, ning piiratud tulemuste arvu käsuga head.

Piltide loendi väljastamiseks on filtreerimine saadaval. Järgnev käsk kuvab kõik saadaval olevad arhitektuurid distributsioonist AlpineLinux:

lxc image -c ldast list images:alpine/3.11

+------------------------------+--------------------------------------+--------------+
|            ALIAS             |             DESCRIPTION              | ARCHITECTURE |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11 (3 more)         | Alpine 3.11 amd64 (20200220_13:00)   | x86_64       |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/arm64 (1 more)   | Alpine 3.11 arm64 (20200220_13:00)   | aarch64      |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/armhf (1 more)   | Alpine 3.11 armhf (20200220_13:00)   | armv7l       |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/i386 (1 more)    | Alpine 3.11 i386 (20200220_13:01)    | i686         |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/ppc64el (1 more) | Alpine 3.11 ppc64el (20200220_13:00) | ppc64le      |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/s390x (1 more)   | Alpine 3.11 s390x (20200220_13:00)   | s390x        |
+------------------------------+--------------------------------------+--------------+

LXD konfiguratsioon ^

Konteineri kasutamiseks peate esmalt lisama pildi globaalsetest hoidlatest kohalikku. kohalik:. Praegu on kohalik hoidla tühi, veenduda selles aitab käsk lxc pilt nimekiri. Kui meetodil loend ei ole määratud hoidlat, kasutatakse vaikimisi kohalikku hoidlat — kohalik:

lxc pilt nimekiri kohalik:

+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+

Piltide haldamine hoidlas toimub järgmiste meetoditega:

Meeskond
Kirjeldus

lxc pilt alias
Halda pildi alias'e

lxc pilt kopeerida
Kopeerige pilte serverite vahel

lxc pilt delete
Kustuta pildid

lxc pilt edit
Muuda pildi omadusi

lxc pilt export
Eksport ja allalaadimine piltidest

lxc pilt import
Impordi pildid pildihoidlasse

lxc pilt info
Kuva kasulikke andmeid piltide kohta

lxc pilt loend
Nimekiri piltidest

lxc pilt värskenda
Värskenda pilte

lxc pilt näita
Kuva pildi omadused

Kopeerime pildi globaalsetest hoidlatest kohalikku images::

lxc pilt kopeeri images:alpine/3.11/amd64 kohalik: --alias=alpine3

Pilt kopeeritud edukalt!

Loetleme kõik pildid, mis on praegu kohalikus hoidlas saadaval kohalik::

lxc pilt -c lfdatsu nimekiri kohalik:

+---------+--------------+------------------------------------+--------------+
|  ALIAS  | FINGERPRINT  |            DESCRIPTION             | ARCHITECTURE |
+---------+--------------+------------------------------------+--------------+
| alpine3 | 73a3093d4a5c | Alpine 3.11 amd64 (20200220_13:00) | x86_64       |
+---------+--------------+------------------------------------+--------------+

Konteineri loomine ja haldamine ^

Kuna interaktiivne režiim, toetab LXD ka mitteinteraktiivset režiimi, kus konfiguratsioon määratakse YAML-faili kujul, mis on eriline formaat, mis võimaldab kogu konfiguratsiooni seadistada korraga, vältides paljude interaktiivsete käskude täitmist, mis on käsitletud eespool, sealhulgas võrgu konfiguratsioon, profiilide loomine jne. Siin me seda valdkonda ei käsitle, võite sellega ise tutvuda. in the documentation.

Järgmine interaktiivne käsk lxc konfiguratsioon mida me käsitleme, võimaldab seadistada konfiguratsiooni. Näiteks et laaditud pildid ei värskendataks automaatselt globaalsetest hoidlatest, saame selle käitumise aktiveerida järgmise käsuga:

lxc konfiguratsioon seadista images.auto_update_cached=false

Statsionaarse IP-aadressi seadistamine ^

Konteineri loomiseks kasutatakse käsku lxc init millele edastatakse väärtused hoidla:pilt ja seejärel soovitud konteineri identifikaator. Hoidla saab määrata kohalikuna. kohalik: ning igasuguse ülemaailmse. Kui hoidlat ei ole määratud, kasutatakse vaikimisi pildi leidmiseks kohalikku hoidlat. Kui pilt on määratud ülemaailmsest hoidlast, laaditakse see alguses kohalikku hoidlasse ja seejärel kasutatakse konteineri loomiseks.

Täidame järgmise käsu, et luua meie esimene konteiner:

lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot

Lähme süsteemselt läbi käsu võtmed, mida me siin kasutame:

  • alpine3 — Märgib aliast (hüüdnime) pildile, mis on eelnevalt kohalikku hoidlasse laaditud. Kui selle pildi jaoks ei oleks aliast loodud, võib alati viidata pildile selle Sõrmjälg mille väljund kuvatakse tabelis.
  • alp — Määrab konteineri identifikaatori
  • --storage — See võtmeosa näitab, millisest Säilitustorn loodakse konteiner
  • --profile — Need võtmed rakendavad konteineri konfiguratsiooni varem loodud konfiguratsiooniprofiilidelt järk-järgult

Käivitame konteineri, mis hakkab käivitama jaotuse init-süsteemi:

lxc start alp

Samuti võib kasutada käsku lxc launch mis võimaldab ühendatud käske lxc init ja lxc start üheks toiminguks.

Kontrollime konteineri olekut:

lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME |  STATE  |       IPV4       | IPV6 |   TYPE    | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp  | RUNNING | 10.0.5.46 (eth0) |      | CONTAINER | hddpool      |
+------+---------+------------------+------+-----------+--------------+

Kontrollime konteineri konfiguratsiooni:

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200326_13:39)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200326_13:39"
  image.type: squashfs
  volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
  volatile.eth0.host_name: vethb1fe71d8
  volatile.eth0.hwaddr: 00:16:3e:5f:73:3e
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  root:
    path: \/
    pool: hddpool
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Jaotises profiilid saame veenduda, et see konteiner kasutab kahte konfiguratsiooniprofiili — Seejärel käivitame exec käsu ja ootame 5000 sekundit, et jätkata jälgimist: ja hddroot. Sektsioonis seadmed saame leida ainult ühe seadme, kuna võrguseade loodi profiili tasemel Seejärel käivitame exec käsu ja ootame 5000 sekundit, et jätkata jälgimist:Kuna näha kõiki seadmeid, mida konteiner kasutab, tuleb lisada võti --expanded:

lxc config show alp --expanded

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200326_13:39)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200326_13:39"
  image.type: squashfs
  volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
  volatile.eth0.host_name: vethb1fe71d8
  volatile.eth0.hwaddr: 00:16:3e:5f:73:3e
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  eth0:
    name: eth0
    network: lxdbr0
    type: nic
  root:
    path: \/
    pool: hddpool
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Konteineri eemaldamine ^

Kui proovime seadistada IP-aadressi võrgu seadmele, eth0 käsklusega lxc config device set alp mis on mõeldud konteineri konfiguratsiooniks, saame veateate, mis ütleb, et seade ei eksisteeri, kuna seade eth0 mida konteiner kasutab, kuulub profiilile Seejärel käivitame exec käsu ja ootame 5000 sekundit, et jätkata jälgimist::

lxc config device set alp eth0 ipv4.address 10.0.5.5

Error: Seade ei eksisteeri

Muidugi, me saame seadistada staatilise IP-aadressi eth0 profiili seadmele, kuid see on kõigi konteinerite jaoks, mis seda profiili kasutavad, sama. Seetõttu lisame konteinerile pühendatud seadme:

lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5

Seejärel tuleb konteiner taaskäivitada:

lxc restart alp

Kui me nüüd vaatame konteineri konfiguratsiooni, ei pea me rakendama valikut --expanded et näha võrgu seadet eth0, kuna me lõime selle konteineri tasemel ja see kattis sama seadme profiilis. Seejärel käivitame exec käsu ja ootame 5000 sekundit, et jätkata jälgimist::

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200326_13:39)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200326_13:39"
  image.type: squashfs
  volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
  volatile.eth0.host_name: veth2a1dc59d
  volatile.eth0.hwaddr: 00:16:3e:0e:e2:71
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  eth0:
    ipv4.address: 10.0.5.5
    name: eth0
    nictype: bridged
    parent: lxdbr0
    type: nic
  root:
    path: \/
    pool: hddpool
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Ligipääs konteinerile ^

Konteineri kustutamiseks kasutatakse käsku lxc delete, kuid enne konteineri kustutamist tuleb see peatada käsuga lxc stop:

lxc stop alp

lxc list

+------+---------+-------------------+------+-----------+-----------+
| NAME |  STATE  |       IPV4        | IPV6 |   TYPE    | SNAPSHOTS |
+------+---------+-------------------+------+-----------+-----------+
| alp  | STOPPED | 10.0.5.10 (eth0)  |      | KONTENER  | 0         |
+------+---------+-------------------+------+-----------+-----------+

Kui oleme kinnitanud, et konteineri olek on STOPPIND, saab selle kustutada Säilitustorn:

lxc delete alp

Konteineri ressursside haldamine ^

Käsk, mis võimaldab käivitada käske konteineris, mööda minnes võrguühendustest, on lxc exec , mis täidab käske konteineris ilma süsteemi shelli käivitamata. Kui soovite käivitada käsu shelli mustritega, nagu muutujad, failide suunamine (pipe) jne, tuleb shelli selgelt käivitada ja käsk edastada argumendina, näiteks:

lxc exec alp -- \/bin\/sh -c "echo $HOME"

Käsk sisaldas erimärki erimärgi jaoks $ et muutujat $HOME ei tõlgendataks hostmasinas, vaid tõlgendataks ainult konteineris.

Samuti on võimalik käivitada interaktiivne shell ning seansi lõpetamiseks vajutada kuuma klahvi CTRL+D:

lxc exec alp -- \/bin\/sh

RAM (OZU) ressursside piiramise seadistamine ^

LXD-s saab konteineri ressursse hallata spetsiaalse seadistuskomplekti abil. Konteneri seadistusparameetrite täieliku loendi leiate in the documentation.

CPU (CP) ressursside piiramise seadistamine ^

Parameeter limits.memory piirab RAM-i mahtu, mis on konteinerile saadaval. Väärtusena näidatakse arvu ja ühte saadaval sufiksist..

Seadistame konteineri jaoks RAM-i piiri 256 MB:

lxc config set alp limits.memory 256MB

Samuti on olemas teised mälu piiramise parameetrid:

  • limits.memory.enforce
  • limits.memory.hugepages
  • limits.memory.swap
  • limits.memory.swap.priority

Meeskond lxc config show näitab kogu konteineri konfiguratsiooni, sealhulgas rakendatud ressursipiirangut, mis on määratud:

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200220_13:00)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200220_13:00"
  image.type: squashfs
  limits.memory: 256MB
  volatile.base_image: 73a3093d4a5ce0148fd84b95369b3fbecd19a537ddfd2e2d20caa2eef0e8fd60
  volatile.eth0.host_name: veth75b6df07
  volatile.eth0.hwaddr: 00:16:3e:a1:e7:46
  volatile.idmap.base: "0"
  volatile.idmap.current: '[]'
  volatile.idmap.next: '[]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""

Kettaruumi piiramise seadistamine ^

CPU ressursside piiramiseks on olemas mitu piirangu tüüpi:

  • limit.cpu — seob konteineri ühe või mitme CPU tuumaga
  • limits.cpu.allowance — haldab kas CFS ajakava kvote, kui aeg on piiratud, või üldist mehanismi CPU ressursside jagamiseks, kui on möödunud protsent:
  • limits.cpu.priority — ajakava prioriteet, kui mitmetele näidistele, mis jagavad protsessorihulki, on määratud sama protsent protsessoritest

lxc config set alp limits.cpu.allowance 40%

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200220_13:00)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200220_13:00"
  image.type: squashfs
  limits.cpu.allowance: 40%
  limits.memory: 256MB
  volatile.base_image: 73a3093d4a5ce0148fd84b95369b3fbecd19a537ddfd2e2d20caa2eef0e8fd60
  volatile.eth0.host_name: veth75b6df07
  volatile.eth0.hwaddr: 00:16:3e:a1:e7:46
  volatile.idmap.base: "0"
  volatile.idmap.current: '[]'
  volatile.idmap.next: '[]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""

Ressursikasutuse statistika ^

Lisaks piirangutele nagu limits.read, limits.write saame ka piirata konteineri kettaruumi kasutamist (töötas ainult ZFS või BTRFS):

lxc config device set alp root size=2GB

Pärast seadistamist saame parameetris devices.root.size veenduda seatud piirangus:

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 kasutada käsku 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

Kuigi me seadsime konteineri juurseadmestiku piiriks 2GB, süsteemi utiliidid nagu df ei näe seda piiri. Selleks teeme väikese testi ja uurime, kuidas see töötab.

Loome 2 uut identset konteinerit samasse Säilitustorn (hddpool):

lxc init alpine3 alp1 --storage=hddpool --profile=default --profile=hddroot
lxc init alpine3 alp2 --storage=hddpool --profile=default --profile=hddroot

lxc list
+------+---------+------------------+------+-----------+-----------+
| NAME |  STATE  |       IPV4       | IPV6 |   TYPE    | SNAPSHOTS |
+------+---------+------------------+------+-----------+-----------+
| alp1 | RUNNING | 10.0.5.46 (eth0) |      | CONTAINER | 0         |
+------+---------+------------------+------+-----------+-----------+
| alp2 | RUNNING | 10.0.5.30 (eth0) |      | CONTAINER | 0         |
+------+---------+------------------+------+-----------+-----------+

Loome ühte konteinerit 1GB suurusega faili:

lxc exec alp1 -- dd if=\/dev\/urandom of=file.img bs=1M count=1000

Veendume, et fail on loodud:

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, et kontrollida faili olemasolu samas kohas, siis seda faili ei ole, mis on oodatud, kuna konteinerid loovad omaette Säilituse maht samasse Säilitustorn:

lxc exec alp2 -- ls -lh
total 0

Kuid võrrelgem väärtusi, mida väljundit edastavad df ühes ja teises konteineris:

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 moodustatakse kui juurdseade, mida Säilitustorn need konteinerid kasutavad, seetõttu jagavad nad selle mahtu omavahel.

Töötlus jääkaadritega ^

Konteineri ressursside tarbimise statistikat saab vaadata käsu abil:

lxc info alp

Name: alp
Location: none
Remote: unix:\/\/ 
Architecture: x86_64
Created: 2020\/04\/08 18:05 UTC
Status: Running
Type: container
Profiles: default, hddroot
Pid: 19219
Ips:
  eth0: inet    10.0.5.5        veth2a1dc59d
  eth0: inet6   fe80::216:3eff:fe0e:e271        veth2a1dc59d
  lo:   inet    127.0.0.1
  lo:   inet6   ::1
Resources:
  Processes: 5
  Disk usage:
    root: 495.62kB
  CPU usage:
    CPU usage (in seconds): 1
  Memory usage:
    Memory (current): 4.79MB
  Network usage:
    eth0:
      Bytes received: 730B
      Bytes sent: 1.59kB
      Packets received: 3
      Packets sent: 14
    lo:
      Bytes received: 0B
      Bytes sent: 0B
      Packets received: 0
      Packets sent: 0

Ubuntu 19.10 distributsioonis sisaldab pakett ^

LXD võimaldab luua salvestusi ja taastada konteineri seisundit neist.

Salvestuse loomiseks kasutage järgmist käsku:

lxc snapshot alp snapshot1

Käsk lxc snapshot ei oma võtit loend, seetõttu, et vaadata salvestuste loendit, tuleb kasutada käsku, mis näitab konteineri üldinfot:

lxc info alp
...
...
Snapshots:
  snapshot1 (võetud 2020/04/08 18:18 UTC) (stateless)

Kontseptsiooni taastamine snapshot'ist on võimalik käsuga lxc restore näidates konteinerit, mille jaoks taastamine toimub, ja snapshot'i nime:

lxc restore alp snapshot1

Järgmine käsk on mõeldud snapshot'i kustutamiseks. Pange tähele, et käsklus ei sarnane teistega, siin tuleb konteineri nime järel kasutada kaldkriipsu. Kui kaldkriips unustada, tõlgendatakse snapshot'i kustutamise käsku konteineri kustutamise käskuna!

lxc delete alp/snapshot1

Eelnimetatud näites käsitlesime nn stateless-snapshot'e. LXD-l on ka teistsugune snapshot tüüp — stateful, kus säilitatakse konteineris kõigi protsesside praegune olek. Stateful-snapshot'itega on seotud rida huvitavaid ja kasulikke funktsioone.

Mis veel? ^

  • Python arendajatele on saadaval moodul PyLXD mis pakub API-d LXD-le

UUENDAMINE 10.04.2020 15:00: Lisatud navigeerimine

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster