Funzioni basi di LXD - Sistemi di containeru Linux
LXD hè u gestore di u containeru di u sistema di a prossima generazione, cusì dice fonti. Offre una interfaccia d'utilizatore simile à e macchine virtuali, ma usa cuntenituri Linux invece.
core LXD hè un daemon privilegiatu (un serviziu chì funziona cù diritti di root) chì furnisce una API REST via un socket unix locale, è ancu via a reta se a cunfigurazione adatta hè stallata. I clienti, cum'è l'uttellu di linea di cumanda furnitu cù LXD, facenu richieste attraversu questa API REST. Questu significa chì sì accede à un host locale o un host remotu, tuttu funziona u stessu.
In questu articulu, ùn deteremu micca in dettagliu nantu à i cuncetti di LXD; ùn cunsideremu micca tutte e capacità dispunibili descritte in a documentazione, cumprese l'implementazione recente in l'ultime versioni di LXD di supportu per e macchine virtuali QEMU in parallelu cù i cuntenituri. Invece, impareremu solu i principii di a gestione di u containeru - a creazione di pools di almacenamento, a rete, a gestione di un containeru, l'applicazione di limiti di risorse, è cumu utilizà snapshots per pudè avè una cunniscenza di basa di LXD è aduprà cuntenituri in Linux.
Per infurmazione cumpleta, fate riferimentu à a fonte ufficiale:
Questu significa chì dui pacchetti seranu stallati in una volta, unu cum'è un pacchettu di sistema è l'altru cum'è un pacchettu snap. L'installazione di dui pacchetti in un sistema pò creà un prublema induve u pacchettu di u sistema pò esse orfanu se u pacchettu snap hè eliminatu da u gestore di pacchetti snap.
Truvà u pacchettu lxd in u repositoriu snap pudete aduprà u cumandimu seguente:
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
Eseguendu u cumandamentu list pudete assicurà chì u pacchettu lxd micca ancora stallatu:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
Malgradu u fattu chì LXD hè un pacchettu snap, deve esse installatu attraversu u pacchettu di u sistema lxd, chì hà da creà u gruppu currispundenti in u sistema, i utilità necessarii in /usr/bin è cusì.
sudo apt update
sudo apt install lxd
Assicuratevi chì u pacchettu hè stallatu cum'è un pacchettu snap:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
lxd 3.21 13474 stable/… canonical✓ -
Installazione di LXD in distribuzioni Arch Linux ^
Per installà u pacchettu LXD in u sistema, avete bisognu di eseguisce i seguenti cumandamenti, u primu aghjurnà a lista di i pacchetti nantu à u sistema dispunibile in u repository, u sicondu installà direttamente u pacchettu:
sudo pacman -Syyu && sudo pacman -S lxd
Dopu avè installatu u pacchettu, per gestisce LXD da un utilizatore regulare, deve esse aghjuntu à u gruppu di u sistema lxd:
sudo usermod -a -G lxd user1
Fighjemu chì l'utilizatore user1 aghjuntu à u gruppu lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Se u gruppu lxd ùn hè micca visibile in a lista, allora avete bisognu di attivà a sessione d'utilizatore di novu. Per fà questu, avete bisognu di log out è log in sottu u stessu utilizatore.
Attivà in systemd Caricà u serviziu LXD à l'iniziu di u sistema:
Prima di principià l'inizializazione, avemu bisognu di capiscenu cumu l'almacenamiento in LXD hè logicamente dispostu.
Storage (Storage) cunsiste da unu o più Piscina di almacenamiento chì usa unu di i sistemi di schedari supportati cum'è ZFS, BTRFS, LVM o cartulari regulari. Ogni Piscina di almacenamiento hè divisu in volumi (Volume di Storage) chì cuntenenu imaghjini, cuntenituri o dati per altri scopi.
Images - Quessi sò distribuzioni assemblati apposta senza u kernel Linux è dispunibili da fonti esterne
Contenidors - Quessi sò distribuzioni implementate da l'imaghjini, pronti per l'usu
Istantanee - Quessi sò snapshots di u statu di cuntenituri chì pudete vultà
Per gestisce l'almacenamiento in LXD, utilizate u cumandimu lxc storage un certificatu per quale pudete ottene specificando a chjave - lxc storage --help
U cumandimu seguitu mostra una lista di tutti Piscina di almacenamiento in almacenamiento LXD:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Per vede una lista di tutti Volume di Storage in i selezziunati Piscina di almacenamiento serve a squadra 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 |
+-----------+----------------------------------+-------------+---------+
Inoltre, se per Piscina di almacenamiento Quandu crea, u sistema di schedari BTRFS hè statu sceltu, dopu avè una lista Volume di Storage o subvolumi in l'interpretazione BTRFS, pudete aduprà u toolkit di stu file system:
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
Prima di creà è aduprà cuntenituri, deve esse realizatu una inizializazione LXD generale chì crea è cunfigurà a reta è u almacenamiento. Questu pò esse fattu manualmente utilizendu cumandamenti di u cliente standard chì sò dispunibili in a lista chjamendu u cumandamentu lxc --help o utilizendu l'assistente di inizializazione lxd init risponde à uni pochi di dumande.
Selezzione di un sistema di schedari per Storage Pool ^
Durante l'inizializazione, LXD face parechje dumande, cumprese a determinazione di u tipu di sistema di fugliale per u predeterminatu Piscina di almacenamiento. Per automaticamente, u sistema di schedari BTRFS hè sceltu per questu. Serà impussibile di cambià à un altru FS dopu a creazione. Per selezziunà un FS hè suggeritu tabella di paragone di caratteristiche:
Driver di almacenamentu utilizzabile in un containeru
iè
iè
innò
innò
innò
Ripristina da snapshots più antichi (micca l'ultime)
iè
iè
iè
innò
iè
Quote di almacenamiento
Iè(*)
iè
iè
iè
innò
Initializing the network and Storage Pool using the wizard ^
U prossimu cumandamentu chì guardemu suggerisce di stallà i cumpunenti principali di LXD rispondendu à e dumande simplici utilizendu l'assistente di inizializazione.
Run cumandamentu lxc init è inserite e risposte à e dumande dopu à u colon cum'è mostra in l'esempiu sottu o cambiate secondu e vostre cundizioni:
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]:
In u passu precedente avemu creatu Piscina di almacenamiento chì fù datu u nome ssdpool è u schedariu di quale si trova nantu à u mo sistema à /var/lib/lxd/disks/ssdpool.img. Questu indirizzu di u sistema di fugliale currisponde à l'unità SSD fisica in u mo PC.
E seguenti azzioni, per espansione a cunniscenza di u rolu ghjucatu da Piscina di almacenamiento in u repository, creeremu un secondu Piscina di almacenamiento chì serà fisicu situatu nantu à un altru tipu di discu, HDD. U prublema hè chì LXD ùn vi permette micca di creà Piscina di almacenamiento fora di indirizzu /var/lib/lxd/disks/ è ancu i ligami simbolichi ùn funzionanu micca, vede a risposta di u sviluppatore. Pudemu passà sta limitazione durante l'inizializazione / furmatu Piscina di almacenamiento specificendu u valore cum'è un dispositivu di bloccu invece di u percorsu à u schedariu di loopback specificendu questu in a chjave source.
Allora, prima di creà Piscina di almacenamiento avete bisognu di definisce un schedariu di loopback o una partizione esistente in u vostru sistema di schedari chì hà da aduprà. Per fà questu, creeremu è aduprà un schedariu chì limiteremu in dimensione à 10GB:
dd if=/dev/zero of=/mnt/work/lxd/hddpool.img bs=1MB count=10000
10000+0 records in
10000+0 records out
10000000000 bytes (10 GB, 9,3 GiB) copied, 38,4414 s, 260 MB/s
Cunnetteremu u schedariu di loopback à un dispositivu di loopback gratuitu:
Grazie à a chjave --show eseguisce u cumandimu torna à u screnu u nome di u dispusitivu in quale hè cunnessu u nostru schedariu loopback. Se necessariu, pudemu vede una lista di tutti i dispositi occupati di stu tipu per assicurà chì e nostre azzioni sò currette:
Da a lista vi ponu truvà chì u dispusitivu hà /dev/loop1 file loopback inclusu /mnt/work/lxd/hddpool.img, è in u dispusitivu /dev/loop0 file loopback inclusu /var/lib/lxd/disks/ssdpool.img chì currisponde à u default Piscina di almacenamiento.
U cumandimu seguitu crea un novu Piscina di almacenamiento in LXD basatu annantu à u schedariu di loopback chì avemu appena preparatu. LXD furmatu u schedariu loopback /mnt/work/lxd/hddpool.img in u dispusitivu /dev/loop1 per u sistema di schedari BTRFS:
Fighjemu una lista di tutti Piscina di almacenamiento à u screnu:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 0 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 0 |
+---------+-------------+--------+--------------------------------+---------+
Aumentà a dimensione di a piscina di almacenamiento ^
Dopu à a creazione Piscina di almacenamiento, se ne necessariu, pò esse allargatu. Per Piscina di almacenamiento basatu annantu à u sistema di schedari BTRFS, eseguite i seguenti cumandamenti:
Inserzione automatica di un schedariu loopback in un slot di un dispositivu loopback ^
Avemu un picculu prublema, quandu rebooting u sistema host, u schedariu /mnt/work/lxd/hddpool.img "volarà" fora di u dispusitivu /dev/loop1 è u serviziu LXD crash durante a carica perchè ùn u vede micca in stu dispusitivu. Per risolve stu prublema, avete bisognu di creà un serviziu di sistema chì inserisce stu schedariu in u dispusitivu /dev/loop1 quandu u sistema host boots.
Creemu unità tipu di schedariu sirvizziu в /etc/systemd/system/ per u sistema di inizializazione SystemD:
cat << EOF | sudo tee -a /etc/systemd/system/lxd-hddpool.service
[Unit]
Description=Losetup LXD Storage Pool (hddpool)
After=local-fs.target
[Service]
Type=oneshot
ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img
RemainAfterExit=true
[Install]
WantedBy=local-fs.target
EOF
Attivà u serviziu:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.
Dopu avè riavviatu u sistema di l'ospite, verificamu u statu di serviziu:
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).
Da a pruduzzioni pudemu verificà chì u statu di serviziu hè piemuntese, malgradu u fattu chì l'esekzione di u nostru script da un cumandamentu hè stata cumpletata, l'opzione ci hà permessu di fà questu RemainAfterExit=true.
Siccomu tutti i prucessi di cuntainer in realtà funzionanu isolati nantu à u sistema ospite utilizendu u so kernel, per prutege ulteriormente l'accessu di i prucessi di cuntainer à u sistema host, LXD offre u privilegiu di prucessu, induve:
Contenituri privilegiati - Quessi sò cuntenituri in quale i prucessi cù UID è GID currispondenu à u stessu pruprietariu cum'è in u sistema host. Per esempiu, un prucessu chì eseguisce in un cuntinuu cù un UID di 0 hà tutti i stessi diritti d'accessu cum'è un prucessu nantu à u sistema di l'ospiti cù un UID di 0. In altri palori, l'utilizatore root in u cuntinuu hà tutti i diritti micca solu in u cuntinuu, ma ancu nantu à u sistema d'ospiti s'ellu pò andà fora di u spaziu di nomi isolatu di u cuntinuu.
Contenituri senza privilegiu - Quessi sò cuntenituri in quali prucessi appartenenu à u pruprietariu di l'UID è u GID cù un numeru da 0 à 65535, ma per u sistema di l'ospiti u pruprietariu hè mascheratu cù i bit SubUID è SubGID aghjuntu, rispettivamente. Per esempiu, un utilizatore cù UID = 0 in un containeru serà vistu nantu à u sistema di l'ospite cum'è SubUID + UID. Questu prutege u sistema di l'ospitu perchè se qualsiasi prucessu in u cuntinuu hè capaci di scappà u so spaziu di nome isolatu, pò solu cumunicà cù u sistema di l'ospiti cum'è un prucessu cù un UID / GID scunnisciutu, assai altu.
Per automaticamente, i cuntenituri di novu creatu anu un statutu senza privilegiu è per quessa avemu da definisce un SubUID è SubGID.
Creemu dui fugliali di cunfigurazione in quale stabiliremu a maschera per SubUID è SubGID, rispettivamente:
Siccomu prima avemu inizializatu a reta cù l'assistente di inizializazione lxd init è hà creatu un dispositivu di rete lxdbr0, Allora in questa sezione avemu da fà simpricimenti cunniscenze cù a rete in LXD è cumu creà un switch virtuale (ponte) cù u cumandamentu di u cliente.
U schema seguente mostra cumu un switch (ponte) cunnetta l'ospite è i cuntenituri in una reta:
I cuntenituri ponu cumunicà via una reta cù altri cuntenituri o l'ospiti nantu à quale sti cuntenituri sò servuti. Per fà questu, avete bisognu di ligà e carte di rete virtuale di i cuntenituri cù un switch virtuale. Creemu prima un switch, è l'interfacce di rete di u cuntinuu seranu ligati in i capituli successivi, dopu chì u cuntinuu stessu hè statu creatu.
U cumandimu seguitu crea un cambiamentu cù una subnet 10.0.5.0/24 è l'indirizzu IPv4 10.0.5.1/24, è include ancu ipv4.nat cusì chì i cuntenituri ponu accede à l'Internet attraversu l'ospitu cù u serviziu NAT:
Ogni cuntainer in LXD hà a so propria cunfigurazione è pò allargà cù cunfigurazioni dichjarate globalmente chjamate profili di cunfigurazione. L'applicazione di profili di cunfigurazione à un containeru hà un mudellu in cascata, l'esempiu seguente mostra questu:
In questu esempiu, trè profili sò stati creati in u sistema LXD: default, hddpool и hostfs. Tutti i trè profili sò appiicati à un containeru chì hà una cunfigurazione lucale (zona grisa). Prufilu default hà un dispusitivu root chì hà un paràmetru pool uguali à ssdpool, ma grazia à u mudellu di applicazione di cunfigurazione in cascata, pudemu applicà un prufilu à u cuntinuu hddpool chì hà un paràmetru pool annulerà u listessu paràmetru da u prufilu default è u cuntinuu riceverà a cunfigurazione di u dispusitivu root cun paràmetru pool uguali hddpool, è u prufilu hostfs simpricimenti aghjunghje un novu dispusitivu à u cuntinuu.
Per vede a lista di profili di cunfigurazione dispunibili, utilizate u cumandimu seguitu:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Una lista cumpleta di cumandamenti dispunibuli per travaglià cù un prufilu pò esse acquistatu aghjunghjendu a chjave --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
Profilu di cunfigurazione predeterminatu default ùn hà micca una cunfigurazione di a carta di rete per u cuntinuu è tutti i cuntenituri creati di novu ùn anu micca una rete, per elli hè necessariu di creà dispositi di rete lucali (dedicati) cù un cumandamentu separatu, ma pudemu creà un dispositivu di rete globale in a cunfigurazione. prufilu chì serà spartutu trà tutti i cuntenituri chì utilizanu stu prufilu. In questu modu, subitu dopu à u cumandamentu per creà un novu cuntinuu, avè una rete cù accessu à a rete. À u listessu tempu, ùn ci hè micca restrizioni; pudemu sempre creà un dispositivu di rete locale dopu se ne necessariu.
U cumandimu seguitu aghjunghje u dispusitivu à u prufilu di cunfigurazione eth0 tipu nic cunnessu à a reta lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Hè impurtante à nutà chì, postu chì avemu aghjustatu u dispusitivu in u prufilu di cunfigurazione, se avemu specificatu un indirizzu IP staticu in u dispusitivu, allora tutti i cuntenituri chì utilizanu stu prufilu sparteranu u stessu indirizzu IP. Se ci hè bisognu di creà un cuntinuu cù un indirizzu IP staticu attribuitu per u cuntinuu, allora avete da creà una cunfigurazione di u dispositivu di rete à u livellu di u cuntinuu (configurazione lucale) cù u paràmetru di l'indirizzu IP, è micca à u livellu di u prufilu.
Cuntrollamu u prufilu:
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: []
In questu prufilu, pudemu vede chì per tutti i cuntenituri di novu creatu dui dispositi seranu creati:
eth0 - Tipu di dispusitivu nic cunnessu à un switch (ponte di rete) lxdbr0
root - Tipu di dispusitivu disk chì usa una piscina di almacenamiento ssdpool
Per aduprà creatu prima Piscina di almacenamiento cuntenituri, crea un prufilu di cunfigurazione ssdroot in quale avemu da aghjunghje un dispusitivu cum'è disk cù u puntu di muntagna / (radica) utilizendu u creatu prima Piscina di almacenamiento - ssdpool:
I cuntenituri sò creati da l'imaghjini chì sò distribuzioni assemblati apposta chì ùn anu micca un kernel Linux. Dunque, prima di eseguisce u cuntinuu, deve esse implementatu da questa imagine. A fonte di l'imaghjini hè un repository locale in quale l'imaghjini sò scaricati da i repositori esterni.
Per cumincià à utilizà u cuntinuu, avete bisognu di aghjunghje una maghjina da u repositoriu glubale à u lucale local:. Avà u repositariu lucale hè viotu, u cumandimu farà sicuru di questu lxc image list. Se u metudu list Ùn specificate micca un repository, allora u repository locale serà utilizatu per difettu - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
L'imaghjini in u repositoriu sò gestiti cù i seguenti metudi:
squadra
discrizzione
lxc imagine Alias
Gestisce l'aliasi di l'imaghjini
lxc imagine copia
Copia l'imaghjini trà i servitori
lxc imagine cancillari
Sguassà l'imaghjini
lxc imagine mudificà
Edite proprietà di l'imaghjini
lxc imagine Poni
Esporta è scaricate l'imaghjini
lxc imagine impurtazioni
Importa l'imaghjini in a tenda di l'imaghjini
lxc imagine detailed
Mostra informazioni utili nantu à l'imaghjini
lxc imagine lists
Lista d'imaghjini
lxc imagine ricaricà
Refresh images
lxc imagine spettacolo
Mostra e proprietà di l'imaghjini
Copia l'imaghjini à u repositoriu lucale da u glubale images::
In più di u modu interattivu, LXD sustene ancu un modu di stallazione di cunfigurazione non interattiva, questu hè quandu a cunfigurazione hè specificatu in forma di un schedariu YAML, un formatu speciale chì permette di stallà a cunfigurazione sana in una volta, sguassendu l'esekzione. di parechji cumandamenti interattivi chì sò stati discututi sopra in questu articulu, cumprese a cunfigurazione di a rete, a creazione di profili di cunfigurazione, etc. Ùn copreremu micca sta zona quì, pudete verificà da sè stessu. in documentazione.
U prossimu cumandamentu interattivu lxc config chì avemu da guardà vi permette di stabilisce a cunfigurazione. Per esempiu, per assicurà chì l'imaghjini scaricati à u repositoriu lucale ùn sò micca aghjurnati automaticamente da i repositori glubale, pudemu attivà stu cumpurtamentu cù u cumandimu seguente:
Per creà un containeru utilizate u cumandamentu lxc init à quale i valori sò passati репозиторий:образ è dopu l'ID desideratu per u containeru. U repositariu pò esse specificatu cum'è locale local: cusì hè qualsiasi mundiale. Se u repository ùn hè micca specificatu, da manera predeterminata u repository locale hè utilizatu per circà l'imaghjini. Se l'imaghjini hè specificatu da u repositoriu glubale, allora l'imaghjini serà prima scaricatu à u repositoriu lucale è dopu utilizatu per creà u cuntinuu.
Eseguimu u cumandimu seguitu per creà u nostru primu containeru:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Fighjemu i chjavi di cumanda chì usemu quì in ordine:
alpine3 - Un alias (alias) hè specificatu per l'imaghjina chì hè stata caricata prima à u repositoriu lucale. Se l'alias ùn hè micca creatu per questa imagine, pudete sempre riferite à l'imaghjini da u so Dàmbiu chì si vede in a tavula.
alp — Fixe l'identificateur du récipient
--storage - Questa chjave indica in quale Piscina di almacenamiento un cuntinuu serà creatu
--profile - Queste chjavi in cascata applicanu a cunfigurazione da i profili di cunfigurazione creati prima à u containeru
Lanciamu u containeru, chì principia à lancià u sistema init di a distribuzione:
lxc start alp
Pudete ancu aduprà u cumandamentu lxc launch chì permette di cumminà squadre lxc init и lxc start in una operazione.
Verificate u statu di u containeru:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
In a rùbbrica profiles pudemu assicurà chì stu containeru usa dui profili di cunfigurazione - default и hddroot. In rùbbrica devices pudemu solu detect un aparechju postu chì u dispusitivu reta statu creatu à u livellu prufilu default. Per vede tutti i dispositi utilizati da u cuntinuu avete bisognu di aghjunghje una chjave --expanded:
Sè avemu pruvatu à stabilisce un indirizzu IP per un dispusitivu reta eth0 squadra lxc config device set alp destinatu à a cunfigurazione di u cuntinuu, allora riceveremu un errore chì informarà chì u dispusitivu ùn esiste micca perchè u dispusitivu eth0 chì hè utilizatu da u cuntinuu appartene à u prufilu default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Pudemu naturalmente stabilisce un indirizzu IP staticu per eth0 dispusitivi in u prufilu, ma serà u listessu per tutti i cuntenituri chì utilizanu stu prufilu. Dunque, aghjustemu un dispositivu dedicatu à u cuntinuu:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Allora avete bisognu di ripiglià u cuntinuu:
lxc restart alp
Se guardemu a cunfigurazione di u containeru avà, ùn avemu micca bisognu di utilizà l'opzione --expanded per vede u dispusitivu reta eth0, Siccomu l'avemu creatu à u livellu di u containeru è cascata nantu à u stessu dispositivu da u prufilu default:
Per eseguisce cumandamenti in un containeru direttamente, saltendu e cunnessione di a rete, utilizate u cumandamentu lxc exec chì eseguisce cumandamenti in u cuntinuu senza lancià a shell di u sistema. Sè avete bisognu di eseguisce un cumandamentu in una cunchiglia utilizendu mudelli di cunchiglia, cum'è variabili, redirections di file (pipe), etc., allora avete bisognu di lancià esplicitamente a cunchiglia è passà u cumandamentu cum'è chjave, per esempiu:
lxc exec alp -- /bin/sh -c "echo $HOME"
U cumandimu hà utilizatu un caratteru di escape speciale per un caratteru speciale $ cusì chì a variabile $HOME ùn hè micca interpretatu nantu à a macchina host, ma hè statu interpretatu solu in u cuntinuu.
Hè ancu pussibule di inizià u modu di shell interattivu, è dopu finisce a sessione eseguendu hotkey CTRL+D:
In LXD, pudete gestisce e risorse di cuntainer utilizendu un set speciale di cunfigurazione. Una lista completa di i paràmetri di cunfigurazione di u containeru pò esse truvata in documentazione.
limit.cpu - lega un containeru à unu o più core di CPU
limits.cpu.allowance - gestisce sia quote di pianificatore CFS quandu u limitu di tempu hè passatu, sia u mecanismu universale di spartera di risorse CPU quandu u percentuale hè passatu
limits.cpu.priority - priorità di pianificatore quandu parechje istanze chì sparte un inseme di processori sò attribuiti u listessu percentuale di processori
In più di restrizioni tali limits.read, limits.write pudemu ancu limità a quantità di spaziu di discu cunsumata da u cuntinuu (funziona solu cù ZFS o BTRFS):
lxc config device set alp root size=2GB
Dopu a stallazione, in u paràmetru devices.root.size Pudemu verificà u limitu stabilitu:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Per vede e quote di discu usate pudemu avè da u cumandamentu 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
Malgradu u fattu chì avemu stabilitu un limitu per u dispusitivu radicali di u cuntinuu à 2GB, utilità di u sistema cum'è df ùn vede micca sta restrizzione. Per fà questu, faremu una piccula prova è scopre cumu funziona.
Creemu 2 novi cuntenituri identici in u stessu Piscina di almacenamiento (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Se guardemu in u sicondu cuntinuu, verificate l'esistenza di un schedariu in u stessu locu, allora stu schedariu ùn serà micca quì, chì hè previstu, postu chì i cuntenituri sò creati in u so propiu. Volume di Storage in u listessu Piscina di almacenamiento:
lxc exec alp2 -- ls -lh
total 0
Ma paragunemu i valori chì pruduce df à l'un et à l'autre récipient :
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% /
...
Dispositiu /dev/loop1 muntatu cum'è a partizione radicali Piscina di almacenamiento chì sti cuntenituri usanu, cusì sparte u so voluminu trà dui.
LXD hà a capacità di creà snapshots è restaurà u statu di u containeru da elli.
Per creà una snapshot, eseguite u cumandimu seguente:
lxc snapshot alp snapshot1
A squadra lxc snapshot nisuna chjave dispunibule list, dunque, per vede a lista di snapshots avete bisognu di utilizà u cumandimu chì mostra infurmazione generale nantu à u cuntinuu:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Pudete restaurà un containeru da una snapshot usendu u cumandimu lxc restore specificendu u cuntinuu per quale serà realizatu a risturazione è l'alias di snapshot:
lxc restore alp snapshot1
U cumandimu seguitu hè utilizatu per sguassà una snapshot. Per piacè nutate chì a sintassi di u cumandimu ùn hè micca simile à tutti l'altri; quì avete bisognu di specificà una barra in avanti dopu u nome di u containeru. Se a barra hè omessa, allora u cumandimu per sguassà una snapshot hè interpretatu cum'è un cumandamentu per sguassà un containeru!
lxc delete alp/snapshot1
In l'esempiu sopra, avemu vistu i cosi chjamati snapshots senza statu. LXD hà un altru tipu di snapshots - stateful, chì salva u statu attuale di tutti i prucessi in u containeru. I snapshots stateful venenu cù una quantità di funzioni interessanti è utili.