Karatteristiċi bażiċi ta 'LXD - sistemi ta' kontenituri Linux

Karatteristiċi bażiċi ta 'LXD - sistemi ta' kontenituri Linux

LXD huwa l-maniġer tal-kontenitur tas-sistema tal-ġenerazzjoni li jmiss, hekk jgħid sors. Joffri interface għall-utent simili għal magni virtwali, iżda minflok juża kontenituri Linux.

qalba LXD huwa daemon privileġġjat (servizz li jaħdem bi drittijiet ta 'l-għeruq) li jipprovdi API REST permezz ta' socket unix lokali, kif ukoll permezz tan-netwerk jekk tkun installata l-konfigurazzjoni xierqa. Il-klijenti, bħall-għodda tal-linja tal-kmand ipprovduta ma 'LXD, jagħmlu talbiet permezz ta' din l-API REST. Dan ifisser li kemm jekk qed taċċessa host lokali jew host remot, kollox jaħdem l-istess.

F'dan l-artikolu mhux se nitkellem fid-dettall fuq il-kunċetti ta 'LXD, mhux se nikkunsidraw il-kapaċitajiet kollha disponibbli deskritti fid-dokumentazzjoni, inkluża l-implimentazzjoni reċenti fl-aħħar verżjonijiet ta' LXD ta 'appoġġ għal magni virtwali QEMU b'mod parallel mal-kontenituri. Minflok, nitgħallmu biss il-baŜi tal-ġestjoni tal-kontejners - it-twaqqif ta 'pools ta' ħażna, netwerking, it-tmexxija ta 'kontenitur, l-applikazzjoni ta' limiti ta 'riżorsi, u kif tuża snapshots sabiex tkun tista' tikseb fehim bażiku ta 'LXD u tuża kontenituri fuq Linux.

Għal informazzjoni kompleta, jekk jogħġbok irreferi għas-sors uffiċjali:

Навигация

Installazzjoni LXD ^

Installazzjoni ta 'LXD fuq distribuzzjonijiet Ubuntu ^

Fil-pakkett tad-distribuzzjoni Ubuntu 19.10 lxd għandu xandira fuq pakkett snap:

apt search lxd

lxd/eoan 1:0.7 all
  Transitional package - lxd -> snap (lxd)

Dan ifisser li żewġ pakketti se jiġu installati f'daqqa, wieħed bħala pakkett tas-sistema u l-ieħor bħala pakkett snap. L-installazzjoni ta' żewġ pakketti fuq sistema tista' toħloq xi problema fejn il-pakkett tas-sistema jista' jsir orfni jekk il-pakkett snap jitneħħa mill-maniġer tal-pakketti snap.

Sib pakkett lxd fir-repożitorju snap tista' tuża l-kmand li ġej:

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

Billi tmexxi l-kmand list inti tista 'tagħmel ċert li l-pakkett lxd għadu mhux installat:

snap list

Name  Version    Rev   Tracking  Publisher   Notes
core  16-2.43.3  8689  stable    canonical✓  core

Minkejja l-fatt li LXD huwa pakkett snap, għandu jiġi installat permezz tal-pakkett tas-sistema lxd, li se toħloq il-grupp korrispondenti fis-sistema, l-utilitajiet meħtieġa fil /usr/bin eċċ

sudo apt update
sudo apt install lxd

Ejja niżguraw li l-pakkett ikun installat bħala pakkett snap:

snap list

Name  Version    Rev    Tracking  Publisher   Notes
core  16-2.43.3  8689   stable    canonical✓  core
lxd   3.21       13474  stable/…  canonical✓  -

Installazzjoni ta 'LXD fuq distribuzzjonijiet ta' Arch Linux ^

Biex tinstalla l-pakkett LXD fuq is-sistema, għandek bżonn tmexxi l-kmandi li ġejjin, l-ewwel se taġġorna l-lista ta 'pakketti fis-sistema disponibbli fir-repożitorju, it-tieni se jinstalla direttament il-pakkett:

sudo pacman -Syyu && sudo pacman -S lxd

Wara l-installazzjoni tal-pakkett, sabiex timmaniġġja LXD minn utent regolari, għandu jiżdied mal-grupp tas-sistema lxd:

sudo usermod -a -G lxd user1

Ejja niżguraw li l-utent user1 miżjud mal-grupp lxd:

id -Gn user1

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

Jekk il-grupp lxd mhix viżibbli fil-lista, allura trid tattiva s-sessjoni tal-utent mill-ġdid. Biex tagħmel dan, trid tilloggja u tidħol taħt l-istess utent.

Attiva fi systemd tagħbija tas-servizz LXD fl-istartjar tas-sistema:

sudo systemctl enable lxd

Ejja nibdew is-servizz:

sudo systemctl start lxd

Iċċekkja l-istatus tas-servizz:

sudo systemctl status lxd

Ħażna LXD (Ħażna) ^

Qabel ma tibda l-inizjalizzazzjoni, irridu nifhmu kif il-ħażna f'LXD hija rranġata loġikament.

Ħażna (Ħażna) tikkonsisti minn minn wieħed jew aktar Pool tal-Ħażna li juża waħda mis-sistemi ta 'fajls appoġġjati bħal ZFS, BTRFS, LVM jew direttorji regolari. Kull Pool tal-Ħażna hija maqsuma f'volumi (Volum tal-Ħażna) li jkun fihom stampi, kontenituri, jew data għal skopijiet oħra.

  • L-immaġini - dawn huma distribuzzjonijiet immuntati apposta mingħajr il-qalba tal-Linux u disponibbli minn sorsi esterni
  • Kontenituri - dawn huma distribuzzjonijiet skjerati minn immaġini, lesti għall-użu
  • Snapshots - dawn huma snapshots tal-istat tal-kontenituri li tista' tirritorna għalihom

Karatteristiċi bażiċi ta 'LXD - sistemi ta' kontenituri Linux

Biex timmaniġġja l-ħażna f'LXD, uża l-kmand lxc storage ċertifikat li għalih tista' tikseb billi tispeċifika ċ-ċavetta - lxc storage --help

Il-kmand li ġej juri lista ta 'kollha Pool tal-Ħażna fil-ħażna LXD:

lxc storage list

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

Biex tara lista ta 'kollha Volum tal-Ħażna fil-magħżula Pool tal-Ħażna jaqdi lit-tim 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       |
+-----------+----------------------------------+-------------+---------+

Ukoll, jekk għal Pool tal-Ħażna Meta ħolqot, intgħażlet is-sistema tal-fajl BTRFS, imbagħad ikseb lista Volum tal-Ħażna jew subvolumi fl-interpretazzjoni BTRFS, tista' tuża l-għodda ta' din is-sistema tal-fajls:

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

Inizjalizzazzjoni LXD ^

Qabel ma toħloq u tuża kontenituri, trid twettaq inizjalizzazzjoni LXD ġenerali li toħloq u tikkonfigura n-netwerk u l-ħażna. Dan jista 'jsir manwalment bl-użu ta' kmandi standard tal-klijenti li huma disponibbli fil-lista billi ċċempel il-kmand lxc --help jew bl-użu tal-wizard tal-inizjalizzazzjoni lxd init jwieġeb ftit mistoqsijiet.

Għażla ta' sistema ta' fajls għal Storage Pool ^

Waqt l-inizjalizzazzjoni, LXD jistaqsi diversi mistoqsijiet, inkluż id-determinazzjoni tat-tip tas-sistema tal-fajls għall-inadempjenza Pool tal-Ħażna. B'mod awtomatiku, is-sistema tal-fajl BTRFS hija magħżula għaliha. Se jkun impossibbli li tinbidel għal FS ieħor wara l-ħolqien. Biex tagħżel FS huwa ssuġġerit tabella ta 'tqabbil tal-karatteristiċi:

karatteristika
Direttorju
Btrfs
LVM
ZFS
CEPH

Ħażna ta 'immaġni ottimizzata
le
iva
iva
iva
iva

Ħolqien ta 'istanza ottimizzat
le
iva
iva
iva
iva

Ħolqien ta' snapshot ottimizzat
le
iva
iva
iva
iva

Trasferiment tal-immaġni ottimizzat
le
iva
le
iva
iva

Trasferiment tal-istanza ottimizzat
le
iva
le
iva
iva

Kopja fuq tikteb
le
iva
iva
iva
iva

Blokk ibbażat
le
le
iva
le
iva

Klonazzjoni istantanja
le
iva
iva
iva
iva

Driver tal-ħażna li jista' jintuża ġewwa kontenitur
iva
iva
le
le
le

Irrestawra minn snapshots eqdem (mhux l-aħħar)
iva
iva
iva
le
iva

Kwoti tal-ħażna
iva (*)
iva
iva
iva
le

Inizjalizzazzjoni tan-netwerk u l-Ħażna Pool bl-użu tal-wizard ^

Il-kmand li jmiss li ser inħarsu lejh jissuġġerixxi li twaqqaf il-komponenti ewlenin ta 'LXD billi twieġeb mistoqsijiet sempliċi billi tuża l-wizard tal-inizjalizzazzjoni.

Mexxi kmand lxc init u daħħal it-tweġibiet għall-mistoqsijiet wara l-kolon kif muri fl-eżempju hawn taħt jew ibdelhom skont il-kundizzjonijiet tiegħek:

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

Ħolqien ta' Pool ta' Ħażna addizzjonali ^

Fil-pass preċedenti ħloqna Pool tal-Ħażna li ngħata l-isem ssdpool u l-fajl tiegħu jinsab fis-sistema tiegħi fuq /var/lib/lxd/disks/ssdpool.img. Dan l-indirizz tas-sistema tal-fajls jikkorrispondi għad-drajv SSD fiżiku fil-PC tiegħi.

L-azzjonijiet li ġejjin, biex jespandu l-fehim tar-rwol li għandu Pool tal-Ħażna fir-repożitorju, se noħolqu t-tieni waħda Pool tal-Ħażna li se tkun fiżikament lokalizzata fuq tip differenti ta’ disk, HDD. Il-problema hija li LXD ma jippermettilekx toħloq Pool tal-Ħażna barra mill-indirizz /var/lib/lxd/disks/ u anke links simboliċi mhux se jaħdmu, ara r-rispons tal-iżviluppatur. Nistgħu naqbdu din il-limitazzjoni waqt l-inizjalizzazzjoni/l-ifformattjar Pool tal-Ħażna billi tispeċifika l-valur bħala apparat blokk minflok il-mogħdija għall-fajl loopback billi tispeċifika dan fiċ-ċavetta source.

Allura, qabel ma toħloq Pool tal-Ħażna għandek bżonn tiddefinixxi fajl loopback jew partizzjoni eżistenti fis-sistema tal-fajls tiegħek li se tuża. Biex tagħmel dan, aħna se noħolqu u nużaw fajl li se nillimitaw fid-daqs għal 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

Ejja nqabbdu l-fajl loopback ma' apparat loopback b'xejn:

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

/dev/loop1

Grazzi għaċ-ċavetta --show l-eżekuzzjoni tal-kmand jirritorna lill-iskrin l-isem tal-apparat li fih huwa konness il-fajl loopback tagħna. Jekk meħtieġ, nistgħu nuru lista tal-apparati kollha okkupati ta' dan it-tip biex niżguraw li l-azzjonijiet tagħna huma korretti:

losetup -l

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

Mil-lista tista 'ssib li l-apparat għandu /dev/loop1 fajl loopback inkluż /mnt/work/lxd/hddpool.img, u fl-apparat /dev/loop0 fajl loopback inkluż /var/lib/lxd/disks/ssdpool.img li jikkorrispondi għall-inadempjenza Pool tal-Ħażna.

Il-kmand li ġej joħloq wieħed ġdid Pool tal-Ħażna f'LXD ibbażat fuq il-fajl loopback li għadna kif ħejjejna. LXD se jifformattja l-fajl loopback /mnt/work/lxd/hddpool.img fl-apparat /dev/loop1 għas-sistema tal-fajls BTRFS:

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

Ejja nuru lista ta 'kollha Pool tal-Ħażna għall-iskrin:

lxc storage list

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

Żieda fid-Daqs tal-Pool tal-Ħażna ^

Wara l-ħolqien Pool tal-Ħażna, jekk meħtieġ, jista 'jiġi estiż. Għal Pool tal-Ħażna ibbażat fuq is-sistema tal-fajls BTRFS, mexxi l-kmandi li ġejjin:

sudo truncate -s +5G /mnt/work/lxd/hddpool.img
sudo losetup -c /dev/loop1
sudo btrfs filesystem resize max /var/lib/lxd/storage-pools/hddpool

Inserzjoni awtomatika ta 'fajl loopback fi slot ta' apparat loopback ^

Għandna problema żgħira waħda, meta terġa 'tibda s-sistema ospitanti, il-fajl /mnt/work/lxd/hddpool.img se "jtir" barra mill-apparat /dev/loop1 u s-servizz LXD jiġġarraf meta jgħabbi għax mhux se jarah f'dan l-apparat. Biex issolvi din il-problema għandek bżonn toħloq servizz tas-sistema li se daħħal dan il-fajl fl-apparat /dev/loop1 meta s-sistema ospitanti tibda.

Ejja noħolqu unità tip ta' fajl servizz в /etc/systemd/system/ għas-sistema ta' inizjalizzazzjoni 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

Attiva s-servizz:

sudo systemctl enable lxd-hddpool

Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.

Wara li nibdew mill-ġdid is-sistema ospitanti, aħna niċċekkjaw l-istatus tas-servizz:

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).

Mill-output nistgħu nivverifikaw li l-istat tas-servizz huwa attiva, minkejja l-fatt li l-eżekuzzjoni tal-iskript tagħna minn kmand wieħed tlestiet, l-għażla ppermettietna nagħmlu dan RemainAfterExit=true.

Sigurtà. Privileġġi tal-Kontenitur ^

Peress li l-proċessi kollha tal-kontejners fil-fatt jaħdmu b'mod iżolat fuq is-sistema ospitanti bl-użu tal-qalba tagħha, biex jipproteġu aktar l-aċċess tal-proċessi tal-kontejners għas-sistema ospitanti, LXD joffri privileġġ tal-proċess, fejn:

  • Kontenituri Privileġġjati - dawn huma kontenituri li fihom proċessi b'UID u GID jikkorrispondu għall-istess sid bħal fuq is-sistema ospitanti. Pereżempju, proċess li jaħdem f'kontenitur b'UID ta' 0 għandu l-istess drittijiet ta' aċċess bħal proċess fuq is-sistema ospitanti b'UID ta' 0. Fi kliem ieħor, l-utent root fil-kontenitur għandu d-drittijiet kollha mhux biss f' il-kontenitur, iżda wkoll fuq is-sistema ospitanti jekk jista 'jmur barra l-ispazju tal-isem iżolat tal-kontenitur.

  • Kontenituri mhux privileġġjati - dawn huma kontenituri li fihom il-proċessi jappartjenu lis-sid tal-UID u tal-GID b'numru minn 0 sa 65535, iżda għas-sistema ospitanti s-sid huwa mgħotti bl-użu tal-bits SubUID u SubGID miżjuda, rispettivament. Pereżempju, utent b'UID=0 f'kontenitur se jidher fuq is-sistema ospitanti bħala SubUID + UID. Dan jipproteġi s-sistema ospitanti għaliex jekk xi proċess fil-kontenitur ikun kapaċi jaħrab l-ispazju tal-isem iżolat tiegħu, jista 'biss jikkomunika mas-sistema ospitanti bħala proċess b'UID/GID mhux magħruf u għoli ħafna.

B'mod awtomatiku, kontenituri maħluqa ġodda għandhom status mhux privileġġjat u għalhekk irridu niddefinixxu SubUID u SubGID.

Ejja noħolqu żewġ fajls ta 'konfigurazzjoni li fihom se nissettjaw il-maskra għal SubUID u SubGID, rispettivament:

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

Biex jiġu applikati l-bidliet, is-servizz LXD għandu jerġa' jinbeda:

sudo systemctl restart lxd

Ħolqien ta 'swiċċ ta' netwerk virtwali ^

Peress li qabel inizjalizzajna n-netwerk bl-użu tal-wizard tal-inizjalizzazzjoni lxd init u ħoloq apparat tan-netwerk lxdbr0, imbagħad f'din it-taqsima aħna sempliċiment se jiffamiljarizzaw ruħhom man-netwerking f'LXD u kif toħloq swiċċ virtwali (pont) billi tuża l-kmand tal-klijent.

Id-dijagramma li ġejja turi kif swiċċ (pont) jgħaqqad il-host u l-kontenituri f'netwerk:

Karatteristiċi bażiċi ta 'LXD - sistemi ta' kontenituri Linux

Il-kontejners jistgħu jikkomunikaw permezz ta' netwerk ma' kontenituri oħra jew mal-host li fuqu jiġu moqdija dawn il-kontenituri. Biex tagħmel dan, għandek bżonn torbot il-karti tan-netwerk virtwali tal-kontenituri bi swiċċ virtwali. Aħna ser noħolqu swiċċ l-ewwel, u l-interfaces tan-netwerk tal-kontenitur se jkunu marbuta fil-kapitoli sussegwenti, wara li l-kontenitur innifsu jkun inħoloq.

Il-kmand li ġej joħloq swiċċ b'subnet 10.0.5.0/24 u l-indirizz IPv4 10.0.5.1/24, u jinkludi wkoll ipv4.nat sabiex il-kontenituri jkunu jistgħu jaċċessaw l-Internet permezz tal-host bl-użu tas-servizz NAT:

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

Iċċekkja l-lista ta' tagħmir tan-netwerk disponibbli f'LXD:

lxc network list

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

Tista 'wkoll tivverifika li jkun inħoloq apparat tan-netwerk billi tuża l-għodda standard tad-distribuzzjoni tal-Linux - ip link jew ip addr:

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxdbr0 state UP group default qlen 1000
    link/ether ca:c3:5c:1d:22:26 brd ff:ff:ff:ff:ff:ff link-netnsid 0

Profil tal-Konfigurazzjoni ^

Kull kontenitur f'LXD għandu l-konfigurazzjoni tiegħu stess u jista' jestendiha b'konfigurazzjonijiet iddikjarati globalment imsejħa profili tal-konfigurazzjoni. L-applikazzjoni ta' profili ta' konfigurazzjoni għal kontenitur għandha mudell ta' kaskata, l-eżempju li ġej juri dan:

Karatteristiċi bażiċi ta 'LXD - sistemi ta' kontenituri Linux

F'dan l-eżempju, inħolqu tliet profili fis-sistema LXD: default, hddpool и hostfs. It-tliet profili huma applikati għal kontenitur li għandu konfigurazzjoni lokali (żona griża). Profil default għandu apparat root li għandu parametru pool huwa daqs ssdpool, iżda grazzi għall-mudell ta 'applikazzjoni tal-konfigurazzjoni tal-kaskata, nistgħu napplikaw profil għall-kontenitur hddpool li għandu parametru pool se jegħleb l-istess parametru mill-profil default u l-kontenitur se jirċievi l-konfigurazzjoni tal-apparat root bil-parametru pool ugwali hddpool, u l-profil hostfs sempliċement iżid apparat ġdid mal-kontenitur.

Biex tara l-lista ta' profili ta' konfigurazzjoni disponibbli, uża l-kmand li ġej:

lxc profile list

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

Lista kompluta ta 'kmandi disponibbli biex taħdem bi profil tista' tinkiseb billi żżid iċ-ċavetta --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

Editjar tal-profil tiegħek ^

Profil tal-konfigurazzjoni default default m'għandux konfigurazzjoni tal-kard tan-netwerk għall-kontenitur u l-kontenituri kollha maħluqa ġodda m'għandhomx netwerk, għalihom huwa meħtieġ li jinħolqu tagħmir tan-netwerk lokali (dedikat) bi kmand separat, iżda nistgħu noħolqu apparat tan-netwerk globali fil-konfigurazzjoni profil li se jinqasam bejn il-kontenituri kollha li jużaw dan il-profil. Dan il-mod, immedjatament wara l-kmand biex jinħoloq kontenitur ġdid, se jkollhom netwerk b'aċċess għan-netwerk. Fl-istess ħin, m'hemm l-ebda restrizzjonijiet; aħna dejjem nistgħu noħolqu apparat tan-netwerk lokali aktar tard jekk meħtieġ.

Il-kmand li ġej se jżid l-apparat mal-profil tal-konfigurazzjoni eth0 tip nic konness man-netwerk lxdbr0:

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

Huwa importanti li wieħed jinnota li peress li fil-fatt żidna l-apparat mal-profil tal-konfigurazzjoni, jekk speċifikajna indirizz IP statiku fl-apparat, allura l-kontenituri kollha li se jużaw dan il-profil se jaqsmu l-istess indirizz IP. Jekk ikun hemm bżonn li jinħoloq kontenitur b'indirizz IP statiku allokat għall-kontenitur, allura għandek toħloq konfigurazzjoni ta 'apparat tan-netwerk fil-livell tal-kontenitur (konfigurazzjoni lokali) bil-parametru tal-indirizz IP, u mhux fil-livell tal-profil.

Ejja niċċekkjaw il-profil:

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

F'dan il-profil nistgħu naraw li għall-kontenituri kollha maħluqa ġodda se jinħolqu żewġ apparati:

  • eth0 — Tip ta' apparat nic konness ma' swiċċ (pont tan-netwerk) lxdbr0
  • root — Tip ta' apparat disk li juża pool tal-ħażna ssdpool

Ħolqien ta' profili ġodda ^

Biex tuża maħluqa qabel Pool tal-Ħażna kontenituri, toħloq profil ta 'konfigurazzjoni ssdroot li fih se nżidu apparat bħal disk bil-punt tal-muntatura / (għerq) bl-użu maħluq qabel Pool tal-Ħażna - ssdpool:

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

Bl-istess mod, noħolqu apparat simili disk, iżda f'dan il-każ bl-użu Pool tal-Ħażna - hddpool:

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

Iċċekkjar tal-profili tal-konfigurazzjoni:

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

Repożitorju tal-immaġni ^

Kontenituri huma maħluqa minn immaġini li huma distribuzzjonijiet immuntati apposta li m'għandhomx għadma Linux. Għalhekk, qabel ma tħaddem il-kontenitur, għandu jiġi skjerat minn din l-immaġni. Is-sors tal-immaġini huwa repożitorju lokali li fih l-immaġini jitniżżlu minn repożitorji esterni.

Repożitorji tal-immaġni remoti ^

B'mod awtomatiku, LXD huwa kkonfigurat biex jirċievi immaġini minn tliet sorsi remoti:

  • ubuntu: (għal stampi stabbli ta' Ubuntu)
  • ubuntu-kuljum: (għall-immaġini Ubuntu ta' kuljum)
  • immaġini: (għal mazz ta 'distros oħra)

lxc remote list

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

Per eżempju, repożitorju ubuntu: għandha l-immaġini li ġejjin:

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

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

Biex turi numru limitat ta 'kolonni użajna l-għażla -c b'parametri dasut, u llimita wkoll it-tul tal-lista bil-kmand head.

L-iffiltrar huwa disponibbli biex juri lista ta' immaġini. Il-kmand li ġej se jelenka l-arkitetturi tad-distribuzzjoni kollha disponibbli AlpineLinux:

lxc image -c ldast list images:alpine/3.11

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

Repożitorju tal-immaġni lokali ^

Biex tibda tuża l-kontenitur, trid iżżid immaġini mir-repożitorju globali għal dak lokali local:. Issa r-repożitorju lokali huwa vojt, il-kmand se jiżgura minn dan lxc image list. Jekk il-metodu list tispeċifikax repożitorju, allura r-repożitorju lokali se jintuża awtomatikament - local:

lxc image list local:

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

L-immaġini fir-repożitorju huma ġestiti bl-użu tal-metodi li ġejjin:

Team
Deskrizzjoni

immaġni lxc alias
Immaniġġja psewdonimi tal-immaġni

immaġni lxc kopja
Ikkopja immaġini bejn is-servers

immaġni lxc tħassar
Ħassar immaġini

immaġni lxc jeditjaw
Editja l-proprjetajiet tal-immaġni

immaġni lxc esportazzjoni
Esportazzjoni u tniżżel stampi

immaġni lxc importazzjoni
Importa immaġini fil-maħżen tal-immaġni

immaġni lxc info
Uri informazzjoni utli dwar immaġini

immaġni lxc lista
Lista immaġini

immaġni lxc jġedded
Aġġorna l-immaġini

immaġni lxc Uri
Uri l-proprjetajiet tal-immaġni

Ikkopja l-immaġni fir-repożitorju lokali minn dak globali images::

lxc image copy images:alpine/3.11/amd64 local: --alias=alpine3

Image copied successfully!

Ejja nuru lista tal-immaġini kollha disponibbli bħalissa fir-repożitorju lokali local::

lxc image -c lfdatsu list local:

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

Konfigurazzjoni LXD ^

Minbarra l-mod interattiv, LXD jappoġġja wkoll mod ta 'installazzjoni ta' konfigurazzjoni mhux interattiva, dan huwa meta l-konfigurazzjoni hija speċifikata fil-forma ta 'fajl YAML, format speċjali li jippermettilek tinstalla l-konfigurazzjoni kollha f'daqqa, billi tevita l-eżekuzzjoni. ta 'ħafna kmandi interattivi li ġew diskussi hawn fuq f'dan l-artikolu, inkluż il-konfigurazzjoni tan-netwerk, il-ħolqien ta' profili ta 'konfigurazzjoni, eċċ. Aħna mhux se nkopru din il-qasam hawn, tista 'tiċċekkjaha waħdek. fid-dokumentazzjoni.

Kmand interattiv li jmiss lxc config li aħna se nħarsu lejn jippermettilek li tissettja l-konfigurazzjoni. Pereżempju, biex niżguraw li l-immaġini mniżżla fir-repożitorju lokali ma jiġux aġġornati awtomatikament mir-repożitorji globali, nistgħu nippermettu din l-imġieba bil-kmand li ġej:

lxc config set images.auto_update_cached=false

Ħolqien u ġestjoni ta 'kontenitur ^

Biex toħloq kontenitur uża l-kmand lxc init li lilhom jiġu mgħoddija l-valuri репозиторий:образ u mbagħad l-ID mixtieqa għall-kontenitur. Ir-repożitorju jista' jiġi speċifikat bħala lokali local: hekk hija kwalunkwe waħda globali. Jekk ir-repożitorju ma jkunx speċifikat, allura b'mod awtomatiku r-repożitorju lokali jintuża biex tfittex l-immaġni. Jekk l-immaġni hija speċifikata mir-repożitorju globali, allura l-immaġni l-ewwel titniżżel fir-repożitorju lokali u mbagħad tintuża biex jinħoloq il-kontenitur.

Ejja nħaddmu l-kmand li ġej biex noħolqu l-ewwel kontenitur tagħna:

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

Ejja nħarsu lejn iċ-ċwievet tal-kmand li nużaw hawn fl-ordni:

  • alpine3 — Psewdonimu (alias) huwa speċifikat għall-immaġni li kienet imtella' qabel fir-repożitorju lokali. Jekk l-alias ma nħoloqx għal din l-immaġni, allura tista 'dejjem tirreferi għall-immaġni permezz tagħha Marki tas-swaba li tidher fit-tabella.
  • alp — Issettja l-identifikatur għall-kontenitur
  • --storage — Din iċ-ċavetta tindika f'liema Pool tal-Ħażna se jinħoloq kontenitur
  • --profile — Dawn iċ-ċwievet kaskata japplikaw konfigurazzjoni minn profili ta 'konfigurazzjoni maħluqa qabel għall-kontenitur

Inniedu l-kontenitur, li jibda jniedi s-sistema init tad-distribuzzjoni:

lxc start alp

Tista 'wkoll tuża l-kmand lxc launch li jippermettilek tgħaqqad timijiet lxc init и lxc start f'operazzjoni waħda.

Iċċekkja l-istat tal-kontenitur:

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

Iċċekkja l-konfigurazzjoni tal-kontenitur:

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: ""

Fit-taqsima profiles nistgħu niżguraw li dan il-kontenitur juża żewġ profili ta 'konfigurazzjoni - default и hddroot. Fit-taqsima devices nistgħu biss niskopru apparat wieħed peress li l-apparat tan-netwerk inħoloq fil-livell tal-profil default. Sabiex tara l-apparati kollha użati mill-kontenitur għandek bżonn iżżid ċavetta --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: ""

L-issettjar ta' indirizz IP statiku ^

Jekk nippruvaw nissettjaw indirizz IP għal apparat tan-netwerk eth0 tim lxc config device set alp maħsuba għall-konfigurazzjoni tal-kontenitur, allura aħna se nirċievu żball li jirrapporta li l-apparat ma jeżistix minħabba li l-apparat eth0 li huwa użat mill-kontenitur jappartjeni għall-profil default:

lxc config device set alp eth0 ipv4.address 10.0.5.5

Error: The device doesn't exist

Nistgħu ovvjament nissettjaw indirizz IP statiku għal eth0 apparati fil-profil, iżda se jkun l-istess għall-kontenituri kollha li se jużaw dan il-profil. Għalhekk, ejja nżidu apparat iddedikat għall-kontenitur:

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

Imbagħad għandek bżonn terġa 'tibda l-kontenitur:

lxc restart alp

Jekk inħarsu lejn il-konfigurazzjoni tal-kontenitur issa, m'għandniex bżonn nużaw l-għażla --expanded biex tara l-apparat tan-netwerk eth0, peress li ħloqnieha fil-livell tal-kontenitur u kaskata fuq l-istess apparat mill-profil default:

lxc config show alp

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

Tneħħi kontenitur ^

Biex tneħħi kontenitur, uża l-kmand lxc delete, iżda qabel ma tneħħi l-kontenitur, għandu jitwaqqaf bl-użu tal-kmand lxc stop:

lxc stop alp

lxc list

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

Wara li vverifikajna li l-istat tal-kontenitur sar STOPPED, jista 'jitneħħa minn Pool tal-Ħażna:

lxc delete alp

Aċċess għall-kontejners ^

Biex tesegwixxi kmandi f'kontenitur direttament, billi tevita l-konnessjonijiet tan-netwerk, uża l-kmand lxc exec li tesegwixxi kmandi fil-kontenitur mingħajr ma tniedi l-qoxra tas-sistema. Jekk għandek bżonn tesegwixxi kmand f'qoxra bl-użu ta 'mudelli ta' qoxra bħal varjabbli, direzzjoni mill-ġdid tal-fajls (pajp), eċċ., allura għandek bżonn tniedi espliċitament il-qoxra u tgħaddi l-kmand bħala ċavetta, pereżempju:

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

Il-kmand uża karattru ta 'ħarba speċjali għal karattru speċjali $ sabiex il-varjabbli $HOME ma ġiex interpretat fuq il-magna ospitanti, iżda ġie interpretat biss ġewwa l-kontenitur.

Huwa wkoll possibbli li tibda l-modalità tal-qoxra interattiva, u mbagħad ittemm is-sessjoni billi tesegwixxi hotkey CTRL+D:

lxc exec alp -- /bin/sh

Ġestjoni tar-riżorsi tal-kontejners ^

F'LXD, tista 'timmaniġġja r-riżorsi tal-kontejners billi tuża sett speċjali ta' konfigurazzjoni. Tista 'tinstab lista kompluta ta' parametri tal-konfigurazzjoni tal-kontenitur fid-dokumentazzjoni.

Limitazzjoni tar-riżorsi RAM ^

Parametru limits.memory jillimita l-ammont ta' RAM disponibbli għall-kontenitur. Il-valur huwa numru u wieħed minn suffissi disponibbli.

Ejja nissettjaw il-limitu RAM tal-kontenitur għal 256 MB:

lxc config set alp limits.memory 256MB

Ukoll, hemm parametri oħra biex jillimitaw il-memorja:

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

Team lxc config show jippermettilek turi l-konfigurazzjoni sħiħa tal-kontenitur, inkluż il-limitu tar-riżorsi applikat li ġie stabbilit:

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: ""

Limitu tar-riżorsi tas-CPU ^

Hemm diversi modi kif jiġu limitati r-riżorsi tas-CPU. tipi ta’ restrizzjonijiet:

  • limit.cpu - jorbot kontenitur ma' wieħed jew aktar CPU cores
  • limits.cpu.allowance - jimmaniġġja jew il-kwoti tal-iskedar tas-CFS meta jkun għadda l-limitu ta’ żmien, jew il-mekkaniżmu universali tal-qsim tar-riżorsi tas-CPU meta l-perċentwal ikun għadda
  • limits.cpu.priority - prijorità tal-iskedar meta istanzi multipli li jaqsmu sett ta' proċessuri jiġu assenjati l-istess perċentwal ta' proċessuri

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: ""

Limitazzjoni tal-ispazju tad-disk ^

Minbarra restrizzjonijiet bħal dawn limits.read, limits.write nistgħu wkoll nillimitaw l-ammont ta 'spazju fuq disk ikkunsmat mill-kontenitur (jaħdem biss ma' ZFS jew BTRFS):

lxc config device set alp root size=2GB

Wara l-installazzjoni, fil-parametru devices.root.size Nistgħu nivverifikaw il-limitu stabbilit:

lxc config show alp
...
devices:
  root:
    path: /
    pool: hddpool
    size: 2GB
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Biex tara l-kwoti tad-disk użati nistgħu niksbu mill-kmand 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

Minkejja l-fatt li waqqafna limitu għall-apparat għerq tal-kontenitur għal 2GB, utilitajiet tas-sistema bħal df mhux se tara din ir-restrizzjoni. Biex tagħmel dan, aħna se nagħmlu test żgħir u niskopru kif taħdem.

Ejja noħolqu 2 kontenituri identiċi ġodda fl-istess Pool tal-Ħażna (hddpool):

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

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

Ejja noħolqu fajl ta' 1GB f'wieħed mill-kontenituri:

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

Ejja niżguraw li l-fajl jinħoloq:

lxc exec alp1 -- ls -lh
total 1000M  
-rw-r--r--    1 root     root     1000.0M Mar 27 10:16 file.img

Jekk inħarsu fit-tieni kontenitur, iċċekkja l-eżistenza ta 'fajl fl-istess post, allura dan il-fajl mhux se jkun hemm, li huwa mistenni, peress li l-kontenituri huma maħluqa minnhom stess Volum tal-Ħażna fl-istess Pool tal-Ħażna:

lxc exec alp2 -- ls -lh
total 0

Imma ejja nqabblu l-valuri li tipproduċi df fuq kontenitur wieħed u ieħor:

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% /
...

Apparat /dev/loop1 immuntat kif il-partizzjoni tal-għeruq hija Pool tal-Ħażna li jużaw dawn il-kontenituri, u għalhekk jaqsmu l-volum tiegħu bejn tnejn.

Statistika tal-konsum tar-riżorsi ^

Tista' tara l-istatistika tal-konsum tar-riżorsi għal kontenitur billi tuża l-kmand:

lxc info alp

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

Ħidma ma snapshots ^

LXD għandu l-abbiltà li joħloq snapshots u jirrestawra l-istat tal-kontenitur minnhom.

Biex toħloq snapshot, mexxi l-kmand li ġej:

lxc snapshot alp snapshot1

It-tim lxc snapshot ebda ċavetta disponibbli list, għalhekk, biex tara l-lista ta 'snapshots għandek bżonn tuża l-kmand li juri informazzjoni ġenerali dwar il-kontenitur:

lxc info alp
...
...
Snapshots:
  snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)

Tista' tirrestawra kontenitur minn snapshot billi tuża l-kmand lxc restore tispeċifika l-kontenitur li għalih se jsir ir-restawr u l-psewdonomi tal-istampa:

lxc restore alp snapshot1

Il-kmand li ġej jintuża biex tħassar snapshot. Jekk jogħġbok innota li s-sintassi tal-kmand mhijiex simili għall-oħrajn kollha; hawnhekk trid tispeċifika slash wara l-isem tal-kontenitur. Jekk titħalla barra s-slash, allura l-kmand biex titħassar snapshot jiġi interpretat bħala kmand biex jitħassar kontenitur!

lxc delete alp/snapshot1

Fl-eżempju t'hawn fuq, ħares lejn l-hekk imsejħa snapshots mingħajr stat. LXD għandu wkoll tip ieħor ta 'snapshot - stateful, li jiffranka l-istat attwali tal-proċessi kollha fil-kontenitur. Hemm numru ta 'karatteristiċi interessanti u utli assoċjati ma' snapshots stateful.

X'iktar? ^

  • Modulu huwa disponibbli għall-iżviluppaturi Python PyLXD li jipprovdi API għal LXD

AĠĠORNAMENT 10.04.2020/15/00 XNUMX:XNUMX: Navigazzjoni miżjuda

Sors: www.habr.com

Żid kumment