
LXD â Ă€r en systemhanterare för containrar av nĂ€sta generation, sĂ„ stĂ„r det . Den erbjuder ett anvĂ€ndargrĂ€nssnitt som liknar virtuella maskiner, men anvĂ€nder istĂ€llet Linux-containrar.
KĂ€rnan LXD â Ă€r en privilegierad demon (tjĂ€nst som körs med root-rĂ€ttigheter) som tillhandahĂ„ller ett REST API via en lokal unix-socket, samt över nĂ€tverket om rĂ€tt konfiguration Ă€r installerad. Klienter, sĂ„som kommandoradsverktyget som levereras med LXD, skickar förfrĂ„gningar via detta REST API. Det betyder att oavsett om du kontaktar den lokala vĂ€rden eller en fjĂ€rransluten, fungerar allting likadant.
I den hĂ€r artikeln kommer vi inte att gĂ„ in pĂ„ koncepten LXD i detalj, vi kommer inte att diskutera alla tillgĂ€ngliga möjligheter som beskrivs i dokumentationen, inklusive den senaste implementeringen i de senaste versionerna av LXD med stöd för virtuella maskiner QEMU parallellt med containrar. IstĂ€llet kommer vi att lĂ€ra oss om de grundlĂ€ggande administrationsfunktionerna för containrar â vi ska konfigurera lagringspooler, nĂ€tverk, starta en container, tillĂ€mpa resursgrĂ€nser och titta pĂ„ hur man anvĂ€nder snapshots, sĂ„ att du fĂ„r en grundlĂ€ggande förstĂ„else för LXD och hur man anvĂ€nder containrar i Linux.
För att fÄ fullstÀndig information ska du hÀnvisa till den officiella kÀllan:
Navigation
Installation av LXD
Installation av LXD i Ubuntu-distributioner
I Ubuntu-distributionen 19.10 har paketet lxd en översÀttning till :
apt search lxd
lxd/eoan 1:0.7 all
ĂvergĂ„ngspaket - lxd -> snap (lxd)Det betyder att tvĂ„ paket kommer att installeras samtidigt, ett systempaket och ett annat som snap-paket. Installation av tvĂ„ paket i systemet kan skapa ett problem dĂ€r systempaketet kan bli ett förĂ€ldralöst paket om snap-paketet tas bort av snap-paketshanteraren.
Hitta paket lxd i snap-repositoriet kan göras med följande kommando:
snap find lxd
Namn Version Sammanfattning
lxd 3.21 Systemcontainerhanterare och API
lxd-demo-server 0+git.6d54658 Online mjukvarudemo-sessioner med LXD
nova ocata OpenStack Compute Service (nova)
nova-hypervisor ocata OpenStack Compute Service - KVM Hypervisor (nova)
distrobuilder 1.0 Imagebyggare för LXC och LXD
fabrica 0.1 Bygg snap-paket genom att helt enkelt peka ett formulÀr till...
satellite 0.1.2 Avancerad skalbar öppen kÀllkod intelligensplattformGenom att köra kommandot list kan man försÀkra sig om att paketet lxd inte Àr installerat Àn:
snap list
Namn Version Rev SpÄrning Utgivare Noter
core 16-2.43.3 8689 stabil canonicalâ coreTrots att LXD Ă€r ett snap-paket, mĂ„ste det installeras via ett systempaket lxd, som kommer att skapa en motsvarande grupp i systemet, nödvĂ€ndiga verktyg i /usr/bin och sĂ„ vidare.
sudo apt update
sudo apt install lxdLÄt oss se till att paketet Àr installerat som ett snap-paket:
snap list
Namn Version Rev SpÄrning Utgivare Noter
core 16-2.43.3 8689 stabil canonicalâ core
lxd 3.21 13474 stabil/⊠canonicalâ -Installation av LXD i Arch Linux-distributioner
För att installera LXD-paketet i systemet mĂ„ste följande kommandon köras, det första â uppdaterar listan över tillgĂ€ngliga paket i systemets repository, det andra â installerar paketet direkt:
sudo pacman -Syyu && sudo pacman -S lxdEfter installationen av paketet, för att hantera LXD som en vanlig anvÀndare, mÄste han lÀggas till i systemgruppen lxd:
sudo usermod -a -G lxd user1LÄt oss se till att anvÀndaren user1 har lagts till i gruppen lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxdOm gruppen lxd inte syns i listan, behöver man aktivera anvÀndarsessionen igen. För detta mÄste man logga ut och logga in i systemet med samma anvÀndare.
Aktivera systemd LXD-tjÀnsten att starta vid systemstart:
sudo systemctl enable lxdStartar tjÀnsten:
sudo systemctl start lxdKontrollerar tjÀnstens status:
sudo systemctl status lxdLagring LXD (Storage)
Innan initieringen mÄste vi förstÄ hur lagringen i LXD Àr logiskt strukturerad.
Lagring (Storage) bestÄr av en eller flera Storage Pool som anvÀnder ett av de stödda filsystemen som ZFS, BTRFS, LVM eller vanliga kataloger. Varje Storage Pool delas upp i volymer (Storage Volume) som innehÄller bilder, containrar eller data för andra ÀndamÄl.
- Avbilder â Ă€r specialt sammanstĂ€llda distributioner utan Linux-kĂ€rna och tillgĂ€ngliga frĂ„n externa kĂ€llor
- Containrar â Ă€r distribuerade distributioner frĂ„n avbilder som Ă€r klara för drift
- Snapshots â Ă€r tillstĂ„ndsbilder av containrar som man kan Ă„tergĂ„ till

För att hantera lagring i LXD anvĂ€nds kommandot lxc storage varifrĂ„n man kan fĂ„ hjĂ€lp genom att ange nyckeln â lxc storage --help
Följande kommando visar en lista över alla Storage Pool i LXD-lagring:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+För att se listan över alla Storage Volume i det valda Storage Pool anvÀnds kommandot 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 |
+-----------+----------------------------------+-------------+---------+Dessutom, om för Storage Pool en filsystem BTRFS valdes vid skapandet, kan man fÄ en lista över Storage Volume eller subvolymer i BTRFS-tolkning med hjÀlp av verktygen för detta filsystem:
sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/hddpool
ID 257 gen 818 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3sudo 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/alp3Initialisering av LXD
Innan containrar skapas och anvÀnds, Àr det nödvÀndigt att utföra den grundlÀggande initieringen av LXD som skapar och konfigurerar nÀtverket samt lagringen. Detta kan göras manuellt med hjÀlp av grundlÀggande klientkommandon som finns i listan genom att anropa kommandot lxc --help eller med hjÀlp av installationsguiden lxd init genom att svara pÄ nÄgra frÄgor.
Val av filsystem för lagringspool
Under LXD initialization, several questions are asked, including the type of file system for the default configuration. Storage PoolBy default, the BTRFS file system is selected for it. It will not be possible to change to another file system after creation.The following file systems are offered for selection: :
Funktion
Directory
Btrfs
LVM
ZFS
CEPH
Optimerad bildlagring
nej
ja
ja
ja
ja
Optimerad instanskapande
nej
ja
ja
ja
ja
Optimerad snapshotskapande
nej
ja
ja
ja
ja
Optimerad bildöverföring
nej
ja
nej
ja
ja
Optimerad instansöverföring
nej
ja
nej
ja
ja
Copy on write
nej
ja
ja
ja
ja
Blockbaserad
nej
nej
ja
nej
ja
Ăgonblicklig kloning
nej
ja
ja
ja
ja
Lagringsdrivrutin anvÀndbar inom en behÄllare
ja
ja
nej
nej
nej
Ă
terstÀll frÄn Àldre snapshots (inte senaste)
ja
ja
ja
nej
ja
Lagringskvoter
ja(*)
ja
ja
ja
nej
Initialisering av nÀtverk och lagringspool med hjÀlp av guiden
Den nÀsta kommandon vi kommer att titta pÄ erbjuder att konfigurera huvudkomponenterna i LXD genom svar pÄ enkla frÄgor med hjÀlp av en initieringsguid.
Kör kommandot lxc init och ange svaren pÄ frÄgorna efter kolon som visas i exemplet nedan eller Àndra dem enligt dina omstÀndigheter:
lxd init
Vill du anvÀnda LXD-klustering? (ja/nej) [standard=nej]:
Vill du konfigurera en ny lagringspool? (ja/nej) [standard=ja]:
Namn pÄ den nya lagringspoolen [standard=default]: ssdpool
Namn pÄ lagringsbackend att anvÀnda (lvm, btrfs, dir) [standard=btrfs]:
Vill du skapa en ny BTRFS-pool? (ja/nej) [standard=ja]:
Vill du anvÀnda en befintlig blockenhet? (ja/nej) [standard=nej]:
Storlek i GB pÄ den nya loop-enheten (minst 1GB) [standard=15GB]: 10GB
Vill du ansluta till en MAAS-server? (ja/nej) [standard=nej]:
Vill du skapa en ny lokal nÀtverksbro? (ja/nej) [standard=ja]:
Vad ska den nya bron kallas? [standard=lxdbr0]:
Vilken IPv4-adress ska anvĂ€ndas? (CIDR-subnĂ€tnotation, âautoâ eller ânoneâ) [standard=auto]: 10.0.5.1/24
Vill du att LXD ska NAT IPv4-trafik pÄ din bro? [standard=ja]:
Vilken IPv6-adress ska anvĂ€ndas? (CIDR-subnĂ€tnotation, âautoâ eller ânoneâ) [standard=auto]: ingen
Vill du att LXD ska vara tillgÀngligt över nÀtverket? (ja/nej) [standard=nej]:
Vill du att förÄldrade cachelagrade bilder ska uppdateras automatiskt? (ja/nej) [standard=ja] nej
Vill du att en YAML "lxd init" preseed ska skrivas ut? (ja/nej) [standard=nej]: Skapa en ytterligare lagringspool
I det föregÄende steget skapade vi Storage Pool som vi gav namnet ssdpool och vars fil ligger pÄ min dator pÄ adressen /var/lib/lxd/disks/ssdpool.img. Denna filsystemadress motsvarar den fysiska SSD-disken i min dator.
De följande ÄtgÀrderna, för att utöka förstÄelsen av vilken roll Storage Pool spelar i lagringen, kommer vi att skapa en andra Storage Pool som kommer att ligga fysiskt pÄ en annan typ av disk, pÄ HDD. Problemet Àr att LXD inte tillÄter skapelse Storage Pool utanför adressen /var/lib/lxd/disks/ och inte ens symboliska lÀnkar kommer att fungera, . Vi kan kringgÄ denna begrÀnsning vid initiering/formatering Storage Pool genom att ange vÀrdet som en blockenhet istÀllet för en sökvÀg till en loopback-fil genom att ange detta i nyckeln source.
SÄ, före skapandet Storage Pool Du mÄste ange en loopback-fil eller en befintlig partition i ditt filsystem som den kommer att anvÀnda. För detta ska vi skapa och anvÀnda en fil som begrÀnsas till 10 GB:
dd if=/dev/zero of=/mnt/work/lxd/hddpool.img bs=1MB count=10000
10000+0 poster in
10000+0 poster ut
10000000000 byte (10 GB, 9,3 GiB) kopierat, 38,4414 s, 260 MB/sVi kopplar loopback-filen till en ledig loopback-enhet:
sudo losetup --find --show /mnt/work/lxd/hddpool.img
/dev/loop1Tack vare nyckeln --show returnerar kommandots utförande namnet pÄ enheten som vÄr loopback-fil har kopplats till. Vid behov kan vi visa en lista över alla upptagna enheter av detta slag, för att sÀkerstÀlla att vÄra ÄtgÀrder var korrekta:
losetup -l
NAMN STORLEK BEGRĂNSNING OFFSET AUTOCLEAR RO BACK-FIL 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 512FrÄn listan kan man upptÀcka att enheten /dev/loop1 har en loopback-fil kopplad /mnt/work/lxd/hddpool.img, och enheten /dev/loop0 har en loopback-fil kopplad /var/lib/lxd/disks/ssdpool.img som motsvarar standard Storage Pool.
NÀsta kommando skapar en ny Storage Pool i LXD baserat pÄ den just förberedda loopback-filen. LXD kommer att formatera loopback-filen /mnt/work/lxd/hddpool.img i enheten /dev/loop1 till BTRFS-filsystemet:
lxc storage create hddpool btrfs size=10GB source=/dev/loop1Vi listar alla Storage Pool pÄ skÀrmen:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAMN | BESKRIVNING | DRIVARE | KĂLLA | ANVĂND AV |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 0 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 0 |
+---------+-------------+--------+--------------------------------+---------+Ăka storleken pĂ„ lagringspoolen
Efter skapandet Storage Pool, om nödvÀndigt kan den utökas. För Storage Pool baserat pÄ BTRFS-filsystemet, kör följande kommandon:
sudo truncate -s +5G /mnt/work/lxd/hddpool.img
sudo losetup -c /dev/loop1
sudo btrfs filesystem resize max /var/lib/lxd/storage-pools/hddpoolAutointegrering av loopback-filen i loopback-enhetsslot
Vi har ett litet problem, vid omstart av vÀrdsystemet kommer filen /mnt/work/lxd/hddpool.img "att "flyga ut" ur enheten /dev/loop1 och LXD-tjÀnsten kommer att krascha vid uppstart eftersom den inte ser den i denna enhet. För att lösa detta problem mÄste vi skapa en systemtjÀnst som kommer att montera denna fil i enheten /dev/loop1 vid uppstart av vÀrdsystemet.
Vi skapar -tester i projektet, samt i relation till filer. fil av typen service pÄ /etc/systemd/system/ för systeminitiering 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
EOFVi aktiverar tjÀnsten:
sudo systemctl enable lxd-hddpool
Skapade symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service â /etc/systemd/system/lxd-hddpool.service.Efter omstart av vĂ€rdsystemet kontrollerar vi statusen för tjĂ€nsten:
systemctl status lxd-hddpool.service
â lxd-hddpool.service - Losetup LXD Lagringspool (hddpool)
Laddad: laddad (/etc/systemd/system/lxd-hddpool.service; aktiverad; leverantörens förinstÀllning: inaktiverad)
Aktiv: aktiv (utgÄngen) sedan ons 2020-04-08 03:43:53 MSK; 1min 37s sedan
Process: 711 ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img (kod=utgÄngen, status=0/SUCCES)
Huvud-PID: 711 (kod=utgÄngen, status=0/SUCCES)
apr 08 03:43:52 manjaro systemd[1]: Startar Losetup LXD Lagringspool (hddpool)...
apr 08 03:43:53 manjaro systemd[1]: Klarade Losetup LXD Lagringspool (hddpool).FrÄn utskriften kan vi bekrÀfta att tjÀnstens tillstÄnd Àr active, trots att körningen av vÄrt skript frÄn en enda kommando avslutades, detta möjliggjordes av alternativet RemainAfterExit=true.
SÀkerhet. Behörigheter för containrar
Eftersom alla processer i containern faktiskt körs isolerat pÄ vÀrdsystemet med hjÀlp av dess kÀrna, erbjuder LXD en privilegium för containerns processer för att ytterligare skydda Ätkomsten till vÀrdsystemet, dÀr:
Privilegierade containrar â Ă€r containrar dĂ€r processerna har UID och GID som motsvarar samma Ă€gare som pĂ„ vĂ€rdsystemet. Till exempel, en process som körs i en container med UID lika med 0 har alla samma Ă„tkomstrĂ€ttigheter som processen pĂ„ vĂ€rdsystemet med UID lika med 0. Med andra ord har root-anvĂ€ndaren i containern alla rĂ€ttigheter inte bara i containern utan ocksĂ„ pĂ„ vĂ€rdsystemet om han kan gĂ„ utanför den isolerade namnomrĂ„det.
Icke-privilegierade containrar â Ă€r containrar dĂ€r processerna tillhör Ă€garen med UID och GID mellan 0 och 65535, men för vĂ€rdsystemet maskeras Ă€garen med hjĂ€lp av den tillagda SubUID- och SubGID-biten. Till exempel, en anvĂ€ndare med UID=0 i containern kommer att betraktas pĂ„ vĂ€rdsystemet som
SubUID + UID. Detta skyddar vÀrdsystemet, eftersom om nÄgon process i containern lyckas gÄ ut ur sitt isolerade namnomrÄde kan den interagera med vÀrdsystemet endast som en process med en okÀnd, mycket hög UID/GID.
Som standard har nyligen skapade containrar status som icke-privilegierade och dÀrför mÄste vi definiera SubUID och SubGID.
Vi skapar tvÄ konfigurationsfiler dÀr vi stÀller in masken för SubUID och SubGID respektive:
sudo touch /etc{/subuid,/subgid}
sudo usermod --add-subuids 1000000-1065535 root
sudo usermod --add-subgids 1000000-1065535 rootFör att tillÀmpa Àndringarna mÄste LXD-tjÀnsten startas om:
sudo systemctl restart lxdSkapa en virtuell nÀtverksbrygga
Eftersom vi tidigare har initierat nÀtverket med hjÀlp av guiden för initiering lxd init och skapat en nÀtverksenhet lxdbr0, sÄ kommer vi i detta avsnitt bara att bekanta oss med nÀtverket i LXD och hur man skapar en virtuell switch (nÀtverksbro) med hjÀlp av klientkommandot.
Den följande schemat visar hur switchen (nÀtverksbron) kopplar ihop vÀrden och containrar i nÀtverket:

Containrar kan interagera via nÀtverket med andra containrar eller vÀrden som dessa containrar körs pÄ. För detta behöver vi lÀnka de virtuella nÀtverksgrÀnssnitten i containrarna med den virtuella switchen. Först kommer vi att skapa switchen, och nÀtverksgrÀnssnitten för containern kommer att lÀnkas i senare kapitel, efter att containern har skapats.
Det följande kommandot skapar en switch med ett undermedverkan 10.0.5.0/24 och en IPv4-adress 10.0.5.1/24, samt aktiverar ipv4.nat sÄ att containrarna kan fÄ internet genom vÀrden med hjÀlp av NAT-tjÀnsten:
lxc network create lxdbr0 ipv4.address=10.0.5.1/24 ipv4.nat=true ipv6.address=noneKontrollera listan över nÀtverksenheter som Àr tillgÀngliga för LXD:
lxc network list
+--------+----------+---------+-------------+---------+
| NAMN | TYP | HANDBOK | BESKRIVNING | ANVĂNDS AV |
+--------+----------+---------+-------------+---------+
| eno1 | fysisk | NEJ | | 0 |
+--------+----------+---------+-------------+---------+
| lxdbr0 | bro | JA | | 0 |
+--------+----------+---------+-------------+---------+Du kan ocksĂ„ verifiera skapandet av nĂ€tverksenheten med hjĂ€lp av det inbyggda verktyget i Linux-distributionen â ip link eller 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 0Konfigurationsprofil
Varje container i LXD har sin egen konfiguration och kan utökas med hjÀlp av globalt deklarerade konfigurationer som kallas konfigurationsprofiler. TillÀmpningen av konfigurationsprofiler pÄ en behÄllare har en kaskadmodell, följande exempel visar detta:

I det hÀr exemplet har tre profiler skapats i LXD-systemet: default, hddpool och hostfs. Alla tre profiler har tillÀmpats pÄ en behÄllare som har en lokal konfiguration (grÄ zon). Profilen default har en enhet root som har parametern pool Àr ssdpool, men tack vare den kaskadmodell för tillÀmpning av konfiguration kan vi tillÀmpa profilen för behÄllaren hddpool som har parametern pool överskrider denna samma parameter frÄn profilen default och behÄllaren fÄr enhetskonfigurationen root med parametern pool lika med hddpool, medan profilen hostfs bara lÀgger till en ny enhet i behÄllaren.
För att se listan över tillgÀngliga konfigurationsprofiler anvÀnds följande kommando:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+Den kompletta listan över tillgÀngliga kommandon för att arbeta med profiler kan fÄs genom att lÀgga till nyckeln --help:
lxc profile --help
Description:
Hantera profiler
Usage:
lxc profile [kommando]
Available Commands:
add LĂ€gg till profiler till instanser
assign Tilldela profiler till instanser
copy Kopiera profiler
create Skapa profiler
delete Ta bort profiler
device Hantera enhetsinstanser
edit Redigera profilkonfigurationer som YAML
get HÀmta vÀrden för profilkonfigurationsnycklar
list Lista profiler
remove Ta bort profiler frÄn instanser
rename Byt namn pÄ profiler
set StÀll in profilkonfigurationsnycklar
show Visa profilkonfigurationer
unset Avmarkera profilkonfigurationsnycklarRedigera profil
Standardkonfigurationsprofilen default har ingen nÀtverkskortkonfiguration för behÄllaren, och alla nyss skapade behÄllare har ingen nÀtverksanslutning. För dem Àr det nödvÀndigt att skapa lokala (dedikerade) nÀtverksenheter med ett separat kommando, men vi kan skapa en global nÀtverksenhet i konfigurationsprofilen som delas mellan alla behÄllare som anvÀnder denna profil. PÄ sÄ sÀtt kommer de omedelbart efter skapandet av en ny behÄllare att ha nÀtverksanslutning. Det finns inga begrÀnsningar, vi kan alltid skapa en lokal nÀtverksenhet senare om det skulle vara nödvÀndigt.
NÀsta kommando kommer att lÀgga till en enhet i konfigurationsprofilen eth0 av typen nic ansluten till nÀtverket lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0Det Àr viktigt att notera att eftersom vi faktiskt har lagt till en enhet i konfigurationsprofilen, om vi skulle ange en statisk IP-adress för enheten, skulle alla containrar som anvÀnder denna profil dela samma IP-adress. Om det Àr nödvÀndigt att skapa en container med en dedikerad statisk IP-adress, bör man istÀllet skapa en nÀtverkskonfigurationsprofil pÄ containernivÄ (lokal konfiguration) med IP-adressparametern, istÀllet för pÄ profilenivÄn.
LÄt oss kontrollera profilen:
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: []I denna profil kan vi se att tvÄ enheter (devices) kommer att skapas för alla ny skapade containrar:
eth0â Enhetstypnicansluten till en switch (nĂ€tverksbro)lxdbr0rootâ Enhetstypdisksom anvĂ€nder lagringspoolenssdpool
Skapa nya profiler
För att anvĂ€nda de tidigare skapade Storage Pool containrar, skapar vi en konfigurationsprofil ssdroot dĂ€r vi lĂ€gger till enhetstypen disk med monteringspunkt / (root) som anvĂ€nder den tidigare skapade Storage Pool â ssdpool:
lxc profile create ssdroot
lxc profile device add ssdroot root disk path=\/ pool=ssdpoolPĂ„ samma sĂ€tt skapar vi en enhet av typen disk, men i detta fall anvĂ€nder Storage Pool â hddpool:
lxc profile create hddroot
lxc profile device add hddroot root disk path=\/ pool=hddpoolVi kontrollerar konfigurationsprofiler:
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: []Bildrepo
Containrar skapas frÄn bilder som Àr speciellt sammanstÀllda distributioner utan en Linux-kÀrna. DÀrför, innan en container kan startas, mÄste den distribueras frÄn denna bild. KÀllan till bilder Àr det lokala arkivet dÀr bilder laddas ner frÄn externa arkiv.
FjÀrrbildrepo
Som standard Àr LXD konfigurerat för att hÀmta bilder frÄn tre externa kÀllor:
- ubuntu: (för stabila Ubuntu-bilder)
- ubuntu-daily: (för dagliga Ubuntu-bilder)
- images: (för en mÀngd andra distributioner)
lxc remote list
+-----------------+------------------------------------------+--------+--------+
| NAMN | URL | OFFENTLIG | STATISK |
+-----------------+------------------------------------------+--------+--------+
| bilder | https://images.linuxcontainers.org | JA | NEJ |
+-----------------+------------------------------------------+--------+--------+
| lokal (standard) | unix:// | NEJ | JA |
+-----------------+------------------------------------------+--------+--------+
| ubuntu | https://cloud-images.ubuntu.com/releases | JA | JA |
+-----------------+------------------------------------------+--------+--------+
| ubuntu-daily | https://cloud-images.ubuntu.com/daily | JA | JA |
+-----------------+------------------------------------------+--------+--------+Till exempel har repot ubuntu: följande bilder:
lxc image -c dasut list ubuntu: | head -n 11
+----------------------------------------------+--------------+----------+------------+
| BESKRIVNING | ARCHITEKTUR | STORLEK | TYP |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150728) | x86_64 | 153.72MB | BEHĂ
LLARE |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150819) | x86_64 | 152.91MB | BEHĂ
LLARE |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150906) | x86_64 | 154.69MB | BEHĂ
LLARE |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150930) | x86_64 | 153.86MB | BEHĂ
LLARE |
+----------------------------------------------+--------------+----------+------------+För att visa ett begrÀnsat antal kolumner anvÀnde vi alternativet -c med parametrarna dasut, och begrÀnsade ocksÄ lÀngden pÄ listan med kommandot head.
För att visa listan över tillgÀngliga bilder kan filtrering anvÀndas. Följande kommando visar listan över alla tillgÀngliga distributioners arkitekturer :
lxc image -c ldast list images:alpine/3.11
+------------------------------+--------------------------------------+--------------+
| ALIAS | BESKRIVNING | ARCHITEKTUR |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11 (3 till) | Alpine 3.11 amd64 (20200220_13:00) | x86_64 |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/arm64 (1 till) | Alpine 3.11 arm64 (20200220_13:00) | aarch64 |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/armhf (1 till) | Alpine 3.11 armhf (20200220_13:00) | armv7l |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/i386 (1 till) | Alpine 3.11 i386 (20200220_13:01) | i686 |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/ppc64el (1 till) | Alpine 3.11 ppc64el (20200220_13:00) | ppc64le |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/s390x (1 till) | Alpine 3.11 s390x (20200220_13:00) | s390x |
+------------------------------+--------------------------------------+--------------+Lokalt bildrepo
För att börja anvĂ€nda containern mĂ„ste du lĂ€gga till en bild frĂ„n det globala arkivet till det lokala. lokal:. Just nu Ă€r det lokala arkivet tomt, vilket kommer att bekrĂ€ftas av kommandot lxc image list. Om metoden list inte anger ett arkiv kommer det lokala arkivet att anvĂ€ndas som standard â lokal:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+Hantera bilder i arkivet görs med följande metoder:
Team
Beskrivning
lxc image alias
Hantera bildalias
lxc image copy
Kopiera bilder mellan servrar
lxc image ta bort
Ta bort bilder
lxc image edit
Redigera bildens egenskaper
lxc image export
Exportera och ladda ner bilder
lxc image import
Importera bilder till bildlagret
lxc image info
Visa anvÀndbar information om bilder
lxc image list
Lista bilder
lxc image refresh
Uppdatera bilder
lxc image visa
Visa bildens egenskaper
Kopiera bilden till det lokala arkivet frÄn det globala images::
lxc image copy images:alpine/3.11/amd64 local: --alias=alpine3
Bild kopierad framgÄngsrikt!Vi kommer att visa en lista över alla bilder som för nÀrvarande Àr tillgÀngliga i det lokala arkivet. lokal::
lxc image -c lfdatsu list local:
+---------+--------------+------------------------------------+--------------+
| ALIAS | FINGERPRINT | DESCRIPTION | ARCHITECTURE |
+---------+--------------+------------------------------------+--------------+
| alpine3 | 73a3093d4a5c | Alpine 3.11 amd64 (20200220_13:00) | x86_64 |
+---------+--------------+------------------------------------+--------------+Konfiguration av LXD
Förutom interaktivt lÀge stöder LXD Àven icke-interaktiv installation av konfiguration, detta innebÀr att konfigurationen anges i form av en YAML-fil, ett specialformat som gör det möjligt att stÀlla in hela konfigurationen pÄ en gÄng, utan att behöva utföra flera interaktiva kommandon som har diskuterats ovan i denna artikel, inklusive nÀtverkskonfiguration, skapande av konfigurationsprofiler m.m. HÀr kommer vi inte att behandla detta omrÄde, du kan sjÀlv bekanta dig med detta. .
Det följande interaktiva kommandot lxc config som vi kommer att behandla, tillÄter att stÀlla in konfigurationen. Till exempel, för att de uppladdade bilderna i det lokala arkivet inte ska uppdateras automatiskt frÄn globala arkiv, kan vi aktivera detta beteende med följande kommando:
lxc config set images.auto_update_cached=falseSkapa och hantera containrar
För att skapa en container anvÀnds kommandot lxc init som tar emot vÀrden arkiv:bild och sedan önskat identifierare för containern. Arkivet kan anges som lokalt. lokal: Àven om vilket som helst globalt. Om inget register anges, anvÀnds som standard det lokala registret för att söka efter bilden. Om bilden anges frÄn det globala registret, laddas först bilden upp till det lokala registret och anvÀnds sedan för att skapa containern.
LÄt oss köra följande kommando för att skapa vÄr första container:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddrootLÄt oss gÄ igenom kommandots nycklar som vi hÀr anvÀnder:
alpine3â Detta anges som alias (smeknamn) för bilden som tidigare laddats upp till det lokala registret. Om inget alias skapades för denna bild kan den alltid refereras till med dess Fingerprint som visas i tabellen.alpâ HĂ€r anges identifieraren för containern.--storageâ Denna nyckel anger i vilket Storage Pool containern kommer att skapas.--profileâ Dessa nycklar tillĂ€mpar kaskadkonfigurationen pĂ„ containern frĂ„n tidigare skapade konfigurationsprofiler.
Vi startar containern, som börjar köra init-systemet för distributionen:
lxc start alpDu kan ocksÄ anvÀnda kommandot lxc launch vilket tillÄter att kombinera kommandon lxc init och lxc start till en enda operation.
Kontrollera tillstÄndet för containern:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+Kontrollera konfigurationen för containern:
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: ""I avsnittet profiler vi kan sĂ€kerstĂ€lla att denna container anvĂ€nder tvĂ„ konfigurationsprofiler â default och hddroot. I sektionen devices kan vi upptĂ€cka att det endast finns en enhet, eftersom nĂ€tverksenheten skapades pĂ„ profilsnivĂ„. default. För att se alla enheter som anvĂ€nds av containern mĂ„ste du lĂ€gga till nyckeln --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: ""Ange statisk IP-adress
Om vi försöker stÀlla in en IP-adress för nÀtverksenheten eth0 med kommandot lxc config device set alp som Àr avsedd för kontrollering av containern, kommer vi fÄ ett felmeddelande som sÀger att enheten inte finns eftersom enheten eth0 som anvÀnds av containern tillhör profilen default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: Enheten finns inteVi kan sjÀlvklart stÀlla in en statisk IP-adress för eth0 enheten i profilen, men den kommer att vara densamma för alla containrar som anvÀnder denna profil. DÀrför lÀgger vi till en dedikerad enhet för containern:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5DÀrefter mÄste containern startas om:
lxc restart alpOm vi nu kollar konfigurationen av containern behöver vi inte tillÀmpa alternativet --expanded för att se nÀtverksenheten eth0, eftersom vi har skapat den pÄ containernivÄ och den har kaskadöverskrivit samma enhet frÄn profilen default:
lxc config show alp
arkitektur: x86_64
konfiguration:
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
profiler:
- default
- hddroot
stateful: false
description: ""Ta bort container
För att ta bort en behÄllare anvÀnds kommandot lxc delete, men innan du tar bort behÄllaren mÄste den stoppas med kommandot lxc stop:
lxc stop alplxc list
+------+---------+-------------------+------+-----------+-----------+
| NAMN | STATUS | IPV4 | IPV6 | TYP | SNAPSHOTS |
+------+---------+-------------------+------+-----------+-----------+
| alp | STOPPAD | 10.0.5.10 (eth0) | | BEHĂ
LLARE | 0 |
+------+---------+-------------------+------+-----------+-----------+NÀr vi har bekrÀftat att behÄllarens tillstÄnd Àr STOPPAD, kan den tas bort frÄn Storage Pool:
lxc delete alpĂ tkomst till container
För att köra kommandon i behÄllaren direkt, utan nÀtverksanslutningar, anvÀnds kommandot lxc exec , vilket utför kommandon i behÄllaren utan att starta ett skal. Om du behöver köra ett kommando i ett skal, med hjÀlp av shell-mönster som variabler, filomdirigeringar (pipe) etc., mÄste skalet startas explicit och kommandot överlÀmnas som en nyckel, till exempel:
lxc exec alp -- \/bin\/sh -c "echo $HOME"Kommandot involverade specialtecknet för undantag för specialtecknet $ sÄ att variabeln $HOME inte tolkades pÄ vÀrdmaskinen, utan bara inuti behÄllaren.
Det Àr ocksÄ möjligt att starta interaktivt lÀge för skalet, och avsluta sessionen med hotkey CTRL+D:
lxc exec alp -- \/bin\/shResurshantering för containrar
I LXD kan resurser för behÄllaren hanteras med hjÀlp av en speciell uppsÀttning konfigurationer. Den kompletta listan över konfigurationsparametrar för behÄllaren kan hittas .
ResursbegrÀnsning RAM (minne)
Parameter limits.memory begrÀnsar mÀngden RAM som Àr tillgÀnglig för behÄllaren. Som vÀrde anges ett nummer och en av .
Vi sÀtter en grÀns pÄ behÄllen RAM pÄ 256 MB:
lxc config set alp limits.memory 256MBDet finns ocksÄ andra parametrar för att begrÀnsa minnet:
limits.memory.enforcelimits.memory.hugepageslimits.memory.swaplimits.memory.swap.priority
Team lxc config show visar hela konfigurationen av containern, inklusive det tillÀmpade resurssambandet som har stÀllts in:
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: ""ResursbegrÀnsning CPU (processor)
För att begrÀnsa CPU-resurser finns det flera :
limit.cpuâ binder containern till en eller flera CPU-kĂ€rnorlimits.cpu.allowanceâ hanterar antingen CFS-schemalĂ€ggarens kvoter, nĂ€r tidsgrĂ€nsen har överskridits, eller en allmĂ€n mekanism för resursdelning, nĂ€r procentandelen har överskriditslimits.cpu.priorityâ schemalĂ€ggningsprioritet nĂ€r flera instanser som delar en uppsĂ€ttning processorer tilldelas samma procentandel av processorer
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: ""BegrÀnsning av lagringsutrymme
Förutom begrÀnsningar som limits.read, limits.write kan vi ocksÄ begrÀnsa mÀngden diskutrymme som containern anvÀnder (fungerar endast med ZFS eller BTRFS):
lxc config device set alp root size=2GBEfter instÀllningen kan vi i parametern devices.root.size kontrollera den aktuella begrÀnsningen:
lxc config show alp
...
devices:
root:
path: \/
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""För att se de anvÀnda disk kvoterna kan vi fÄ frÄn kommandot 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: 0Trots att vi har stÀllt in en begrÀnsning för det rotanordningen i containern till 2 GB, kommer systemverktyg som df inte att se denna begrÀnsning. För att demonstrera detta kommer vi att genomföra ett litet test och se hur det fungerar.
Vi skapar 2 nya identiska containrar i samma Storage Pool (hddpool):
lxc init alpine3 alp1 --storage=hddpool --profile=default --profile=hddroot
lxc init alpine3 alp2 --storage=hddpool --profile=default --profile=hddrootlxc list
+------+---------+------------------+------+-----------+-----------+
| NAMN | STATUS | IPV4 | IPV6 | TYP | SNAPSHOTS |
+------+---------+------------------+------+-----------+-----------+
| alp1 | KĂRANDE | 10.0.5.46 (eth0) | | CONTAINER | 0 |
+------+---------+------------------+------+-----------+-----------+
| alp2 | KĂRANDE | 10.0.5.30 (eth0) | | CONTAINER | 0 |
+------+---------+------------------+------+-----------+-----------+I en av containrarna skapar vi en fil som Àr 1 GB stor:
lxc exec alp1 -- dd if=\/dev\/urandom of=file.img bs=1M count=1000LÄt oss verifiera att filen har skapats:
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.imgOm vi tittar i den andra containern och kontrollerar filens existens pÄ samma plats, sÄ kommer filen inte att finnas, vilket Àr förvÀntat, eftersom containrarna skapas i sina egna Storage Volume i samma Storage Pool:
lxc exec alp2 -- ls -lh
total 0Men lÄt oss jÀmföra vÀrdena som ges df i de bÄda containrarna:
lxc exec alp1 -- df -hT
Filsystem Typ Storlek AnvÀnd TillgÀnglig AnvÀnd% Monterad pÄ
\/dev\/loop1 btrfs 9.3G 1016.4M 7.8G 11% \/
...lxc exec alp2 -- df -hT
Filsystem Typ Storlek AnvÀnd TillgÀnglig AnvÀnd% Monterad pÄ
\/dev\/loop1 btrfs 9.3G 1016.4M 7.8G 11% \/
...Enheten /dev/loop1 Monterat som rotpartition Àr Storage Pool vilket dessa containrar anvÀnder, sÄ de delar dess kapacitet mellan sig.
Statistik om resursanvÀndning
För att se resursförbrukningsstatistik för containern kan du anvÀnda kommandot:
lxc info alp
Namn: alp
Plats: ingen
FjÀrr: unix:\/\/
Arkitektur: x86_64
Skapad: 2020\/04\/08 18:05 UTC
Status: Körande
Typ: container
Profiler: 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
Resurser:
Processer: 5
DiskanvÀndning:
root: 495.62kB
CPU-anvÀndning:
CPU-anvÀndning (i sekunder): 1
MinnesanvÀndning:
Minne (nuvarande): 4.79MB
NÀtverksanvÀndning:
eth0:
Mottagna byte: 730B
Skickade byte: 1.59kB
Mottagna paket: 3
Skickade paket: 14
lo:
Mottagna byte: 0B
Skickade byte: 0B
Mottagna paket: 0
Skickade paket: 0Arbeta med snapshots
I LXD finns möjligheten att skapa snapshots och ÄterstÀlla containerns tillstÄnd frÄn dem.
För att skapa en snapshot, kör följande kommando:
lxc snapshot alp snapshot1Kommandot lxc snapshot har ingen nyckel list, sÄ för att se listan över snapshots mÄste du anvÀnda ett kommando som visar allmÀn information om containern:
lxc info alp
...
...
Snapshots:
snapshot1 (taget den 2020/04/08 18:18 UTC) (stateless)Ă
terstÀlla containern frÄn en snapshot görs med kommandot lxc restore ange containern som ÄterstÀllningen ska göras för och aliaset för snapshotet:
lxc restore alp snapshot1Följande kommando anvÀnds för att ta bort en snapshot. Observera att syntaxen för kommandot inte liknar de andra, hÀr mÄste en snedstreck följas efter containerns namn. Om snedstrecket utelÀmnas, kommer kommandot för att ta bort snapshotet att tolkas som kommandot för att ta bort containern!
lxc delete alp/snapshot1I det ovanstĂ„ende exemplet har vi sett sĂ„ kallade stateless-snapshots. I LXD finns det en annan typ av snapshots â stateful, dĂ€r det aktuella tillstĂ„ndet av alla processer i containern sparas. Med stateful-snapshots Ă€r det kopplade intressanta och anvĂ€ndbara funktioner.
Vad mer?
- För Python-utvecklare Àr modulen tillgÀnglig som tillhandahÄller API till LXD
UPPDATERING 10.04.2020 15:00: Jag har lagt till navigering
KĂ€lla: habr.com
