LXD is die volgende generasie stelselhouerbestuurder, so staan daar bron. Dit bied 'n gebruikerskoppelvlak soortgelyk aan virtuele masjiene, maar gebruik eerder Linux-houers.
LXD kern is 'n bevoorregte daemon ('n diens wat met wortelregte loop) wat 'n REST API verskaf via 'n plaaslike unix-sok, sowel as via die netwerk indien die toepaslike konfigurasie geïnstalleer is. Kliënte, soos die opdragreëlinstrument wat by LXD voorsien word, rig versoeke deur hierdie REST API. Dit beteken dat of jy nou toegang tot 'n plaaslike gasheer of 'n afgeleë gasheer het, alles werk dieselfde.
In hierdie artikel gaan ons nie in detail stilstaan by die konsepte van LXD nie; ons sal nie al die beskikbare vermoëns wat in die dokumentasie uiteengesit word, oorweeg nie, insluitend die onlangse implementering in die nuutste weergawes van LXD van ondersteuning vir QEMU virtuele masjiene parallel met houers. In plaas daarvan sal ons net die basiese beginsels van houerbestuur leer - opstel van stoorpoele, netwerke, bestuur van 'n houer, toepassing van hulpbronlimiete, en hoe om momentopnames te gebruik sodat jy 'n basiese begrip van LXD kan kry en houers op Linux kan gebruik.
Vir volledige inligting, verwys asseblief na die amptelike bron:
Dit beteken dat twee pakkette gelyktydig geïnstalleer sal word, een as 'n stelselpakket en die ander as 'n snap-pakket. Die installering van twee pakkette op 'n stelsel kan 'n probleem skep waar die stelselpakket wees gelaat kan word as die snap-pakket deur die snap-pakketbestuurder verwyder word.
Soek pakket lxd in die snap-bewaarplek kan u die volgende opdrag gebruik:
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
Deur die opdrag uit te voer list jy kan seker maak dat die pakket lxd nog nie geïnstalleer nie:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
Ten spyte van die feit dat LXD 'n snap-pakket is, moet dit deur die stelselpakket geïnstalleer word lxd, wat die ooreenstemmende groep in die stelsel sal skep, die nodige nutsprogramme in /usr/bin ens.
sudo apt update
sudo apt install lxd
Kom ons maak seker dat die pakket as 'n snap-pakket geïnstalleer is:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
lxd 3.21 13474 stable/… canonical✓ -
Om die LXD-pakket op die stelsel te installeer, moet u die volgende opdragte uitvoer, die eerste sal die lys van pakkette op die stelsel wat in die bewaarplek beskikbaar is opdateer, die tweede sal die pakket direk installeer:
sudo pacman -Syyu && sudo pacman -S lxd
Nadat die pakket geïnstalleer is, moet dit by die stelselgroep gevoeg word om LXD deur 'n gewone gebruiker te bestuur lxd:
sudo usermod -a -G lxd user1
Kom ons maak seker die gebruiker user1 by groep gevoeg lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
As die groep lxd nie in die lys sigbaar is nie, dan moet jy die gebruikersessie weer aktiveer. Om dit te doen, moet jy afmeld en onder dieselfde gebruiker aanmeld.
Aktiveer in systemd laai die LXD-diens tydens die opstart van die stelsel:
Voordat inisialisering begin, moet ons verstaan hoe die berging in LXD logies gerangskik is.
Berging (stoor) bestaan uit van een of meer Stoor swembad wat een van die ondersteunde lêerstelsels soos ZFS, BTRFS, LVM of gewone gidse gebruik. Elke Stoor swembad word in volumes verdeel (Stoor volume) wat beelde, houers of data vir ander doeleindes bevat.
beelde - dit is spesiaal saamgestelde verspreidings sonder die Linux-kern en beskikbaar vanaf eksterne bronne
Houers - dit is ontplooide verspreidings vanaf beelde, gereed vir gebruik
Foto's - dit is momentopnames van die toestand van houers waarna jy kan terugkeer
Om berging in LXD te bestuur, gebruik die opdrag lxc storage 'n sertifikaat waarvoor jy kan verkry deur die sleutel te spesifiseer - lxc storage --help
Die volgende opdrag vertoon 'n lys van almal Stoor swembad in LXD-berging:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Om 'n lys van almal te sien Stoor volume in die geselekteerde Stoor swembad dien die span 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 |
+-----------+----------------------------------+-------------+---------+
Ook, as vir Stoor swembad By die skep is die BTRFS-lêerstelsel gekies, kry dan 'n lys Stoor volume of subvolumes in die BTRFS-interpretasie kan u die gereedskapstel van hierdie lêerstelsel gebruik:
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
Voordat u houers skep en gebruik, moet u 'n algemene LXD-inisialisering uitvoer wat die netwerk en berging skep en konfigureer. Dit kan met die hand gedoen word deur gebruik te maak van standaard kliëntopdragte wat in die lys beskikbaar is deur die opdrag te roep lxc --help of met behulp van die inisialiseringsassistent lxd init 'n paar vrae te beantwoord.
Tydens inisialisering vra LXD verskeie vrae, insluitend die bepaling van die lêerstelseltipe vir die verstek Stoor swembad. By verstek word die BTRFS-lêerstelsel daarvoor gekies. Dit sal onmoontlik wees om na 'n ander FS te verander na die skepping. Om 'n FS te kies, word dit voorgestel kenmerk vergelyking tabel:
funksie
Gids
Btrfs
LVM
ZFS
CEPH
Geoptimaliseerde beeldberging
No.
ja
ja
ja
ja
Geoptimaliseerde instansieskepping
No.
ja
ja
ja
ja
Geoptimaliseerde momentopname-skepping
No.
ja
ja
ja
ja
Geoptimaliseerde beeldoordrag
No.
ja
No.
ja
ja
Geoptimaliseerde instansie-oordrag
No.
ja
No.
ja
ja
Kopieer op skryf
No.
ja
ja
ja
ja
Blok gebaseer
No.
No.
ja
No.
ja
Onmiddellike kloning
No.
ja
ja
ja
ja
Bergingbestuurder bruikbaar binne 'n houer
ja
ja
No.
No.
No.
Herstel vanaf ouer foto's (nie nuutste nie)
ja
ja
ja
No.
ja
Bergingkwotas
ja(*)
ja
ja
ja
No.
Inisialiseer die netwerk en stoorpoel met behulp van die towenaar ^
Die volgende opdrag waarna ons sal kyk, stel voor dat die hoofkomponente van LXD opgestel word deur eenvoudige vrae te beantwoord deur die inisialiseringsassistent te gebruik.
Voer opdrag uit lxc init en voer die antwoorde op die vrae na die dubbelpunt in soos in die voorbeeld hieronder getoon of verander dit volgens jou toestande:
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 die vorige stap het ons geskep Stoor swembad wat die naam gegee is ssdpool en waarvan die lêer op my stelsel geleë is by /var/lib/lxd/disks/ssdpool.img. Hierdie lêerstelseladres stem ooreen met die fisiese SSD-aandrywer in my rekenaar.
Die volgende aksies, om begrip van die rol wat gespeel word uit te brei Stoor swembad in die bewaarplek sal ons 'n tweede een skep Stoor swembad wat fisies op 'n ander tipe skyf, HDD, geleë sal wees. Die probleem is dat LXD jou nie toelaat om te skep nie Stoor swembad buite adres /var/lib/lxd/disks/ en selfs simboliese skakels sal nie werk nie, sien die ontwikkelaar se reaksie. Ons kan hierdie beperking omseil tydens inisialisering/formatering Stoor swembad deur die waarde as 'n bloktoestel te spesifiseer in plaas van die pad na die terugluslêer deur dit in die sleutel te spesifiseer source.
Dus, voor die skep Stoor swembad jy moet 'n terugluslêer of 'n bestaande partisie op jou lêerstelsel definieer wat dit sal gebruik. Om dit te doen, sal ons 'n lêer skep en gebruik wat ons in grootte tot 10 GB sal beperk:
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
Kom ons koppel die terugluslêer aan 'n gratis teruglustoestel:
Danksy die sleutel --show deur die opdrag uit te voer, word die naam van die toestel waaraan ons terugluslêer gekoppel is, na die skerm teruggekeer. Indien nodig, kan ons 'n lys van alle besige toestelle van hierdie tipe vertoon om seker te maak dat ons optrede korrek is:
Uit die lys kan jy vind dat die toestel het /dev/loop1 loopback-lêer ingesluit /mnt/work/lxd/hddpool.img, en in die toestel /dev/loop0 loopback-lêer ingesluit /var/lib/lxd/disks/ssdpool.img wat ooreenstem met die verstek Stoor swembad.
Die volgende opdrag skep 'n nuwe een Stoor swembad in LXD gebaseer op die teruglooplêer wat ons sopas voorberei het. LXD sal die terugluslêer formateer /mnt/work/lxd/hddpool.img in die toestel /dev/loop1 vir die BTRFS-lêerstelsel:
Na die skepping Stoor swembad, indien nodig, kan dit uitgebrei word. Vir Stoor swembad gebaseer op die BTRFS-lêerstelsel, voer die volgende opdragte uit:
Outo-invoeging van 'n terugluslêer in 'n teruglustoestelgleuf ^
Ons het een klein probleem, wanneer die gasheerstelsel herlaai word, die lêer /mnt/work/lxd/hddpool.img sal uit die toestel "vlieg". /dev/loop1 en die LXD-diens sal ineenstort wanneer dit laai, want dit sal dit nie in hierdie toestel sien nie. Om hierdie probleem op te los, moet jy 'n stelseldiens skep wat hierdie lêer in die toestel sal plaas /dev/loop1 wanneer die gasheerstelsel begin.
Kom ons skep eenheid leër tipe diens в /etc/systemd/system/ vir die SystemD inisialiseringstelsel:
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
Aktiveer die diens:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.
Nadat ons die gasheerstelsel herbegin het, gaan ons die diensstatus na:
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).
Uit die afvoer kan ons verifieer dat die diensstatus is aktiewe, ten spyte van die feit dat die uitvoering van ons skrif vanaf een opdrag voltooi is, het die opsie ons toegelaat om dit te doen RemainAfterExit=true.
Aangesien alle houerprosesse eintlik in isolasie op die gasheerstelsel loop deur die kern daarvan te gebruik, om die toegang van houerprosesse tot die gasheerstelsel verder te beskerm, bied LXD prosesvoorreg, waar:
Bevoorregte houers - dit is houers waarin prosesse met UID en GID ooreenstem met dieselfde eienaar as op die gasheerstelsel. Byvoorbeeld, 'n proses wat in 'n houer met 'n UID van 0 loop, het almal dieselfde toegangsregte as 'n proses op die gasheerstelsel met 'n UID van 0. Met ander woorde, die wortelgebruiker in die houer het al die regte nie net in die houer, maar ook op die gasheerstelsel as hy buite die houer se geïsoleerde naamruimte kan gaan.
Onbevoorregte houers - dit is houers waarin prosesse aan die eienaar van die UID en GID behoort met 'n nommer van 0 tot 65535, maar vir die gasheerstelsel word die eienaar gemasker deur onderskeidelik die bygevoegde SubUID en SubGID bisse te gebruik. Byvoorbeeld, 'n gebruiker met UID=0 in 'n houer sal op die gasheerstelsel gesien word as SubUID + UID. Dit beskerm die gasheerstelsel, want as enige proses in die houer sy geïsoleerde naamruimte kan ontsnap, kan dit slegs met die gasheerstelsel kommunikeer as 'n proses met 'n onbekende, baie hoë UID/GID.
By verstek het nuutgeskepte houers 'n onbevoorregte status en daarom moet ons 'n SubUID en SubGID definieer.
Kom ons skep twee konfigurasielêers waarin ons die masker vir onderskeidelik SubUID en SubGID sal stel:
Aangesien ons voorheen die netwerk geïnisialiseer het met behulp van die inisialiseringsassistent lxd init en het 'n netwerktoestel geskep lxdbr0, dan sal ons in hierdie afdeling eenvoudig kennis maak met netwerk in LXD en hoe om 'n virtuele skakelaar (brug) te skep met behulp van die kliëntopdrag.
Die volgende diagram demonstreer hoe 'n skakelaar (brug) die gasheer en houers in 'n netwerk verbind:
Houers kan via 'n netwerk met ander houers of die gasheer waarop hierdie houers bedien word, kommunikeer. Om dit te doen, moet jy die virtuele netwerkkaarte van die houers met 'n virtuele skakelaar koppel. Ons sal eers 'n skakelaar skep, en die houer se netwerkkoppelvlakke sal in daaropvolgende hoofstukke gekoppel word, nadat die houer self geskep is.
Die volgende opdrag skep 'n skakelaar met 'n subnet 10.0.5.0/24 en IPv4-adres 10.0.5.1/24, en sluit ook in ipv4.nat sodat houers toegang tot die internet kan kry deur die gasheer deur die NAT-diens te gebruik:
Elke houer in LXD het sy eie konfigurasie en kan dit uitbrei met wêreldwyd verklaarde konfigurasies genoem konfigurasie profiele. Die toepassing van konfigurasieprofiele op 'n houer het 'n kaskademodel, die volgende voorbeeld demonstreer dit:
In hierdie voorbeeld is drie profiele in die LXD-stelsel geskep: default, hddpool и hostfs. Al drie profiele word toegepas op 'n houer wat 'n plaaslike opset (grys area) het. Profiel default het 'n toestel root wat 'n parameter het pool is gelyk aan ssdpool, maar danksy die kaskade-konfigurasie-toepassingsmodel, kan ons 'n profiel op die houer toepas hddpool wat 'n parameter het pool sal dieselfde parameter van die profiel ignoreer default en die houer sal die toestelkonfigurasie ontvang root met parameter pool gelyk is hddpool, en die profiel hostfs voeg eenvoudig 'n nuwe toestel by die houer.
Om die lys van beskikbare konfigurasieprofiele te sien, gebruik die volgende opdrag:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
'n Volledige lys van beskikbare opdragte om met 'n profiel te werk kan verkry word deur die sleutel by te voeg --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
Verstekkonfigurasieprofiel default het nie 'n netwerkkaartkonfigurasie vir die houer nie en alle nuutgeskepte houers het nie 'n netwerk nie, vir hulle is dit nodig om plaaslike (toegewyde) netwerktoestelle met 'n aparte opdrag te skep, maar ons kan 'n globale netwerktoestel in die konfigurasie skep profiel wat gedeel sal word tussen alle houers wat hierdie profiel gebruik. Op hierdie manier, onmiddellik na die opdrag om 'n nuwe houer te skep, sal hulle 'n netwerk met netwerktoegang hê. Terselfdertyd is daar geen beperkings nie; ons kan altyd later 'n plaaslike netwerktoestel skep indien nodig.
Die volgende opdrag sal die toestel by die konfigurasieprofiel voeg eth0 tipe nic aan die netwerk gekoppel lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Dit is belangrik om daarop te let dat aangesien ons die toestel eintlik by die konfigurasieprofiel gevoeg het, as ons 'n statiese IP-adres in die toestel gespesifiseer het, dan sal alle houers wat hierdie profiel sal gebruik dieselfde IP-adres deel. As daar 'n behoefte is om 'n houer te skep met 'n statiese IP-adres wat vir die houer toegeken is, dan moet jy 'n netwerktoestelkonfigurasie op die houervlak (plaaslike konfigurasie) met die IP-adresparameter skep, en nie op die profielvlak nie.
Kom ons kyk na die profiel:
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 hierdie profiel kan ons sien dat vir alle nuutgeskepte houers twee toestelle geskep sal word:
eth0 - Soort toestel nic gekoppel aan 'n skakelaar (netwerkbrug) lxdbr0
root - Soort toestel disk wat 'n stoor swembad gebruik ssdpool
Om voorheen geskep te gebruik Stoor swembad houers, skep 'n konfigurasieprofiel ssdroot waarin ons 'n toestel soos sal byvoeg disk met monteerpunt / (wortel) met behulp van die voorheen geskep Stoor swembad - ssdpool:
Houers word geskep uit beelde wat spesiaal saamgestelde verspreidings is wat nie 'n Linux-kern het nie. Daarom, voordat die houer uitgevoer word, moet dit vanaf hierdie prent ontplooi word. Die bron van beelde is 'n plaaslike bewaarplek waarin beelde van eksterne bewaarplekke afgelaai word.
Om 'n beperkte aantal kolomme te vertoon, het ons die opsie gebruik -c met parameters dasut, en het ook die lengte van die lys beperk met die opdrag head.
Filtering is beskikbaar om 'n lys prente te vertoon. Die volgende opdrag sal alle beskikbare verspreidingsargitekture lys AlpineLinux:
Om die houer te begin gebruik, moet jy 'n prent van die globale bewaarplek by die plaaslike een voeg local:. Nou is die plaaslike bewaarplek leeg, die opdrag sal hiervan seker maak lxc image list. As die metode list moenie 'n bewaarplek spesifiseer nie, dan sal die plaaslike bewaarplek by verstek gebruik word - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Beelde in die bewaarplek word bestuur deur die volgende metodes te gebruik:
Span
Beskrywing
lxc beeld alias
Bestuur beeldaliasse
lxc beeld kopie
Kopieer beelde tussen bedieners
lxc beeld verwyder
Vee prente uit
lxc beeld wysig
Wysig prenteienskappe
lxc beeld uitvoer
Voer en laai beelde af
lxc beeld voer
Voer beelde in die beeldwinkel in
lxc beeld inligting
Wys nuttige inligting oor beelde
lxc beeld lys
Lys beelde
lxc beeld Verkwik
Herlaai beelde
lxc beeld Wys
Wys prenteienskappe
Kopieer die prent na die plaaslike bewaarplek vanaf die globale een images::
Benewens die interaktiewe modus, ondersteun LXD ook 'n nie-interaktiewe konfigurasie-installasiemodus, dit is wanneer die konfigurasie gespesifiseer word in die vorm van 'n YAML-lêer, 'n spesiale formaat waarmee u die hele konfigurasie gelyktydig kan installeer, en die uitvoering omseil van baie interaktiewe opdragte wat hierbo in hierdie artikel bespreek is, insluitend netwerkkonfigurasie, skep van konfigurasieprofiele, ens. Ons sal nie hierdie area hier dek nie, jy kan dit op jou eie kyk. in dokumentasie.
Volgende interaktiewe opdrag lxc config waarna ons sal kyk, laat jou toe om die konfigurasie in te stel. Byvoorbeeld, om te verseker dat afgelaaide beelde na die plaaslike bewaarplek nie outomaties vanaf die globale bewaarplekke opgedateer word nie, kan ons hierdie gedrag aktiveer met die volgende opdrag:
Gebruik die opdrag om 'n houer te skep lxc init waaraan waardes oorgedra word репозиторий:образ en dan die verlangde ID vir die houer. Die bewaarplek kan as plaaslik gespesifiseer word local: so is enige globale een. As die bewaarplek nie gespesifiseer is nie, word die plaaslike bewaarplek by verstek gebruik om na die prent te soek. As die prent vanaf die globale bewaarplek gespesifiseer word, sal die prent eers na die plaaslike bewaarplek afgelaai word en dan gebruik word om die houer te skep.
Kom ons voer die volgende opdrag uit om ons eerste houer te skep:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Kom ons kyk na die opdragsleutels wat ons hier gebruik in volgorde:
alpine3 — 'n Alias (alias) word gespesifiseer vir die prent wat voorheen na die plaaslike bewaarplek opgelaai is. As die alias nie vir hierdie beeld geskep is nie, kan jy altyd na die beeld verwys vingerafdruk wat in die tabel vertoon word.
alp — Stel die identifiseerder vir die houer
--storage — Hierdie sleutel dui aan in watter Stoor swembad 'n houer sal geskep word
--profile — Hierdie sleutels pas konfigurasie van voorheen geskepte konfigurasieprofiele toe op die houer
Ons begin die houer, wat begin om die init-stelsel van die verspreiding te begin:
lxc start alp
Jy kan ook die opdrag gebruik lxc launch wat jou toelaat om spanne te kombineer lxc init и lxc start in een operasie.
Kontroleer die toestand van die houer:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
In die afdeling profiles ons kan seker maak dat hierdie houer twee konfigurasieprofiele gebruik − default и hddroot. In afdeling devices ons kan net een toestel opspoor omdat die netwerktoestel op profielvlak geskep is default. Om alle toestelle wat deur die houer gebruik word te sien, moet jy 'n sleutel byvoeg --expanded:
As ons probeer om 'n IP-adres vir 'n netwerktoestel te stel eth0 per span lxc config device set alp bedoel vir die houerkonfigurasie, dan sal ons 'n fout ontvang wat sal rapporteer dat die toestel nie bestaan nie omdat die toestel eth0 wat deur die houer gebruik word, behoort aan die profiel default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Ons kan natuurlik 'n statiese IP-adres vir eth0 toestelle in die profiel, maar dit sal dieselfde wees vir alle houers wat hierdie profiel sal gebruik. Laat ons dus 'n toestel byvoeg wat aan die houer toegewy is:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Dan moet jy die houer herbegin:
lxc restart alp
As ons nou na die houerkonfigurasie kyk, hoef ons nie die opsie te gebruik nie --expanded om die netwerktoestel te sien eth0, aangesien ons dit op die houervlak geskep het en dit oor dieselfde toestel vanaf die profiel geloop het default:
Om opdragte direk in 'n houer uit te voer, om netwerkverbindings te omseil, gebruik die opdrag lxc exec wat opdragte in die houer uitvoer sonder om die stelseldop te begin. As jy 'n opdrag in 'n dop moet uitvoer deur doppatrone soos veranderlikes, lêeraanwysings (pyp), ens. uit te voer, moet jy die dop eksplisiet begin en die opdrag as 'n sleutel deurgee, byvoorbeeld:
lxc exec alp -- /bin/sh -c "echo $HOME"
Die opdrag het 'n spesiale ontsnapkarakter gebruik vir spesiale karakter $ sodat die veranderlike $HOME is nie op die gasheermasjien geïnterpreteer nie, maar is slegs binne die houer geïnterpreteer.
Dit is ook moontlik om die interaktiewe dopmodus te begin, en dan die sessie te beëindig deur sneltoets uit te voer CTRL+D:
In LXD kan u houerhulpbronne bestuur deur 'n spesiale stel konfigurasie te gebruik. 'n Volledige lys van houerkonfigurasieparameters kan gevind word in dokumentasie.
Daar is verskeie maniere om SVE-hulpbronne te beperk. tipes beperkings:
limit.cpu - bind 'n houer aan een of meer SVE-kerne
limits.cpu.allowance - bestuur óf CFS-skeduleerderkwotas wanneer die tydsbeperking verby is, óf die universele SVE-hulpbrondelingmeganisme wanneer die persentasie verby is
limits.cpu.priority - skeduleerder prioriteit wanneer verskeie gevalle wat 'n stel verwerkers deel, dieselfde persentasie verwerkers toegeken word
Benewens beperkings soos limits.read, limits.write ons kan ook die hoeveelheid skyfspasie wat deur die houer verbruik word beperk (werk net met ZFS of BTRFS):
lxc config device set alp root size=2GB
Na die installasie, in die parameter devices.root.size Ons kan die vasgestelde limiet verifieer:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Om die gebruikte skyfkwotas te sien, kan ons van die opdrag kry 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
Ten spyte van die feit dat ons 'n limiet vir die worteltoestel van die houer tot 2GB gestel het, is stelselhulpmiddels soos df sal nie hierdie beperking sien nie. Om dit te doen, sal ons 'n klein toets doen en uitvind hoe dit werk.
Kom ons skep 2 nuwe identiese houers in dieselfde Stoor swembad (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
As ons in die tweede houer kyk, kyk vir die bestaan van 'n lêer op dieselfde plek, dan sal hierdie lêer nie daar wees nie, wat verwag word, aangesien houers in hul eie geskep word Stoor volume in dieselfde Stoor swembad:
lxc exec alp2 -- ls -lh
total 0
Maar kom ons vergelyk die waardes wat dit produseer df op die een en die ander houer:
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% /
...
toestel /dev/loop1 gemonteer soos die wortelpartisie is Stoor swembad wat hierdie houers gebruik, dus deel hulle die volume tussen twee.
LXD het die vermoë om momentopnames te skep en die houerstatus daaruit te herstel.
Om 'n momentopname te skep, voer die volgende opdrag uit:
lxc snapshot alp snapshot1
Die span lxc snapshot geen sleutel beskikbaar nie list, dus, om die lys van foto's te sien, moet jy die opdrag gebruik wat algemene inligting oor die houer vertoon:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
U kan 'n houer vanaf 'n momentopname herstel deur die opdrag te gebruik lxc restore spesifiseer die houer waarvoor die herstel uitgevoer sal word en die momentopname alias:
lxc restore alp snapshot1
Die volgende opdrag word gebruik om 'n momentopname uit te vee. Neem asseblief kennis dat die opdragsintaksis nie soortgelyk is aan alle ander nie; hier moet jy 'n voorwaartse skuinsstreep na die houernaam spesifiseer. As die skuinsstreep weggelaat word, word die opdrag om 'n momentopname uit te vee geïnterpreteer as 'n opdrag om 'n houer uit te vee!
lxc delete alp/snapshot1
In die voorbeeld hierbo het ons na sogenaamde staatlose kiekies gekyk. LXD het 'n ander soort foto's - stateful, wat die huidige toestand van alle prosesse in die houer stoor. Daar is 'n aantal interessante en nuttige kenmerke wat verband hou met statige foto's.