ProHoster > blog > Utawala > Vipengele vya msingi vya LXD - mifumo ya vyombo vya Linux
Vipengele vya msingi vya LXD - mifumo ya vyombo vya Linux
Lxd ndiye meneja wa chombo cha kizazi kijacho, kwa hivyo inasema chanzo. Inatoa kiolesura cha mtumiaji sawa na mashine pepe, lakini hutumia vyombo vya Linux badala yake.
Msingi wa LXD ni daemon iliyobahatika (huduma inayoendeshwa na haki za mizizi) ambayo hutoa REST API kupitia soketi ya ndani ya unix, na pia kupitia mtandao ikiwa usanidi unaofaa umesakinishwa. Wateja, kama vile zana ya mstari wa amri iliyotolewa na LXD, hufanya maombi kupitia API hii ya REST. Hii inamaanisha kuwa iwe unafikia mpangishi wa karibu au mwenyeji wa mbali, kila kitu hufanya kazi sawa.
Katika nakala hii, hatutakaa kwa undani juu ya dhana za LXD; hatutazingatia uwezo wote unaopatikana ulioainishwa kwenye nyaraka, pamoja na utekelezaji wa hivi karibuni katika matoleo ya hivi karibuni ya LXD ya msaada wa mashine za mtandaoni za QEMU sambamba na vyombo. Badala yake, tutajifunza misingi tu ya usimamizi wa kontena - kusanidi hifadhi, kuweka mtandao, kuendesha kontena, kutumia vikomo vya rasilimali, na jinsi ya kutumia vijipicha ili upate ufahamu wa kimsingi wa LXD na kutumia vyombo kwenye Linux.
Kwa habari kamili, tafadhali rejelea chanzo rasmi:
Hii inamaanisha kuwa vifurushi viwili vitasakinishwa mara moja, kimoja kama kifurushi cha mfumo na kingine kama kifurushi cha haraka. Kusakinisha vifurushi viwili kwenye mfumo kunaweza kusababisha tatizo ambapo kifurushi cha mfumo kinaweza kuwa yatima ikiwa kifurushi cha snap kitaondolewa na msimamizi wa kifurushi cha snap.
Tafuta kifurushi lxd kwenye hazina ya snap unaweza kutumia amri ifuatayo:
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
Kwa kuendesha amri list unaweza kuhakikisha kwamba mfuko lxd bado haijasakinishwa:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalβ core
Licha ya ukweli kwamba LXD ni kifurushi cha snap, lazima iwekwe kupitia kifurushi cha mfumo lxd, ambayo itaunda kikundi kinacholingana kwenye mfumo, huduma muhimu ndani /usr/bin nk
sudo apt update
sudo apt install lxd
Wacha tuhakikishe kuwa kifurushi kimewekwa kama kifurushi cha snap:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalβ core
lxd 3.21 13474 stable/β¦ canonicalβ -
Ili kusanikisha kifurushi cha LXD kwenye mfumo, unahitaji kuendesha amri zifuatazo, ya kwanza itasasisha orodha ya vifurushi kwenye mfumo unaopatikana kwenye ghala, ya pili itasanikisha kifurushi moja kwa moja:
sudo pacman -Syyu && sudo pacman -S lxd
Baada ya kufunga kifurushi, ili kudhibiti LXD na mtumiaji wa kawaida, lazima iongezwe kwenye kikundi cha mfumo lxd:
sudo usermod -a -G lxd user1
Hebu tuhakikishe mtumiaji user1 imeongezwa kwa kikundi lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Ikiwa kikundi lxd haionekani kwenye orodha, basi unahitaji kuamilisha kipindi cha mtumiaji tena. Ili kufanya hivyo, unahitaji kuondoka na kuingia chini ya mtumiaji sawa.
Washa ndani systemd kupakia huduma ya LXD wakati wa kuanzisha mfumo:
Kabla ya uanzishaji kuanza, tunahitaji kuelewa jinsi hifadhi katika LXD inavyopangwa kimantiki.
Hifadhi (kuhifadhi) lina kutoka kwa moja au zaidi Dimbwi la Kuhifadhi ambayo hutumia mojawapo ya mifumo ya faili inayotumika kama vile ZFS, BTRFS, LVM au saraka za kawaida. Kila Dimbwi la Kuhifadhi imegawanywa katika juzuu (Kiasi cha Uhifadhi) ambayo ina picha, vyombo, au data kwa madhumuni mengine.
Picha - hizi ni usambazaji uliokusanywa maalum bila kinu cha Linux na zinapatikana kutoka kwa vyanzo vya nje
Vyombo - hizi ni usambazaji uliowekwa kutoka kwa picha, tayari kwa matumizi
Vijipicha - hizi ni snapshots za hali ya vyombo ambavyo unaweza kurudi
Ili kudhibiti uhifadhi katika LXD, tumia amri lxc storage cheti ambacho unaweza kupata kwa kutaja ufunguo - lxc storage --help
Amri ifuatayo inaonyesha orodha ya yote Dimbwi la Kuhifadhi katika hifadhi ya LXD:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Ili kutazama orodha ya yote Kiasi cha Uhifadhi katika waliochaguliwa Dimbwi la Kuhifadhi hutumikia timu 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 |
+-----------+----------------------------------+-------------+---------+
Pia, ikiwa kwa Dimbwi la Kuhifadhi Wakati wa kuunda, mfumo wa faili wa BTRFS ulichaguliwa, kisha pata orodha Kiasi cha Uhifadhi au ndogo katika tafsiri ya BTRFS, unaweza kutumia zana ya mfumo huu wa faili:
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
Kabla ya kuunda na kutumia vyombo, lazima ufanye uanzishaji wa jumla wa LXD ambao huunda na kusanidi mtandao na hifadhi. Hii inaweza kufanywa kwa mikono kwa kutumia amri za mteja za kawaida ambazo zinapatikana kwenye orodha kwa kupiga amri lxc --help au kutumia kichawi cha uanzishaji lxd init kujibu maswali machache.
Wakati wa uanzishaji, LXD huuliza maswali kadhaa, ikiwa ni pamoja na kuamua aina ya mfumo wa faili kwa chaguo-msingi Dimbwi la Kuhifadhi. Kwa chaguo-msingi, mfumo wa faili wa BTRFS huchaguliwa kwa ajili yake. Haitawezekana kubadili FS nyingine baada ya uumbaji. Ili kuchagua FS inapendekezwa Jedwali la kulinganisha la kipengele:
Feature
Saraka
Btrfs
LVM
ZFS
CEPH
Uhifadhi wa picha ulioboreshwa
hapana
ndiyo
ndiyo
ndiyo
ndiyo
Uundaji wa mfano ulioboreshwa
hapana
ndiyo
ndiyo
ndiyo
ndiyo
Uundaji wa muhtasari ulioboreshwa
hapana
ndiyo
ndiyo
ndiyo
ndiyo
Uhamishaji wa picha ulioboreshwa
hapana
ndiyo
hapana
ndiyo
ndiyo
Uhamisho wa mfano ulioboreshwa
hapana
ndiyo
hapana
ndiyo
ndiyo
Nakili kwa kuandika
hapana
ndiyo
ndiyo
ndiyo
ndiyo
Msingi wa kuzuia
hapana
hapana
ndiyo
hapana
ndiyo
Uundaji wa papo hapo
hapana
ndiyo
ndiyo
ndiyo
ndiyo
Dereva wa hifadhi inayoweza kutumika ndani ya kontena
ndiyo
ndiyo
hapana
hapana
hapana
Rejesha kutoka kwa vijipicha vya zamani (sio hivi karibuni)
ndiyo
ndiyo
ndiyo
hapana
ndiyo
Viwango vya kuhifadhi
ndiyo(*)
ndiyo
ndiyo
ndiyo
hapana
Kuanzisha mtandao na Dimbwi la Hifadhi kwa kutumia mchawi ^
Amri inayofuata tutakayoangalia inapendekeza kusanidi vipengee kuu vya LXD kwa kujibu maswali rahisi kwa kutumia mchawi wa uanzishaji.
Amri ya kukimbia lxc init na ingiza majibu ya maswali baada ya koloni kama inavyoonyeshwa kwenye mfano hapa chini au ubadilishe kulingana na hali yako:
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]:
Katika hatua ya awali tuliumba Dimbwi la Kuhifadhi ambayo ilipewa jina ssdpool na faili ambayo iko kwenye mfumo wangu kwa /var/lib/lxd/disks/ssdpool.img. Anwani hii ya mfumo wa faili inalingana na kiendeshi cha SSD kwenye Kompyuta yangu.
Hatua zifuatazo, kupanua uelewa wa jukumu lililochezwa na Dimbwi la Kuhifadhi kwenye hazina, tutaunda ya pili Dimbwi la Kuhifadhi ambayo itakuwa kimwili iko kwenye aina tofauti ya disk, HDD. Shida ni kwamba LXD haikuruhusu kuunda Dimbwi la Kuhifadhi nje ya anwani /var/lib/lxd/disks/ na hata viungo vya mfano havitafanya kazi, tazama majibu ya msanidi programu. Tunaweza kukwepa kizuizi hiki wakati wa uanzishaji/umbizo Dimbwi la Kuhifadhi kwa kubainisha thamani kama kifaa cha kuzuia badala ya njia ya faili ya loopback kwa kubainisha hii katika ufunguo source.
Kwa hivyo, kabla ya kuunda Dimbwi la Kuhifadhi unahitaji kufafanua faili ya loopback au kizigeu kilichopo kwenye mfumo wako wa faili ambayo itatumia. Ili kufanya hivyo, tutaunda na kutumia faili ambayo tutaweka kikomo kwa ukubwa hadi 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
Wacha tuunganishe faili ya loopback kwa kifaa cha bure cha kurudi nyuma:
Shukrani kwa ufunguo --show kutekeleza amri inarudi kwenye skrini jina la kifaa ambacho faili yetu ya loopback imeunganishwa. Ikihitajika, tunaweza kuonyesha orodha ya vifaa vyote vyenye shughuli nyingi za aina hii ili kuhakikisha kuwa vitendo vyetu ni sahihi:
Kutoka kwenye orodha unaweza kupata kwamba kifaa kina /dev/loop1 loopback faili pamoja /mnt/work/lxd/hddpool.img, na kwenye kifaa /dev/loop0 loopback faili pamoja /var/lib/lxd/disks/ssdpool.img ambayo inalingana na chaguo-msingi Dimbwi la Kuhifadhi.
Amri ifuatayo inaunda mpya Dimbwi la Kuhifadhi katika LXD kulingana na faili ya kitanzi ambayo tumetayarisha hivi punde. LXD itaunda faili ya kitanzi /mnt/work/lxd/hddpool.img katika kifaa /dev/loop1 kwa mfumo wa faili wa BTRFS:
Baada ya uumbaji Dimbwi la Kuhifadhi, ikiwa ni lazima, inaweza kupanuliwa. Kwa Dimbwi la Kuhifadhi kulingana na mfumo wa faili wa BTRFS, endesha amri zifuatazo:
Uingizaji kiotomatiki wa faili ya kitanzi kwenye sehemu ya kifaa cha kurudi nyuma ^
Tuna shida moja ndogo, wakati wa kuanzisha upya mfumo wa mwenyeji, faili /mnt/work/lxd/hddpool.img "itaruka" nje ya kifaa /dev/loop1 na huduma ya LXD itaanguka wakati wa kupakia kwa sababu haitaiona kwenye kifaa hiki. Ili kutatua tatizo hili unahitaji kuunda huduma ya mfumo ambayo itaingiza faili hii kwenye kifaa /dev/loop1 wakati mfumo wa mwenyeji unapoanza.
Hebu tuunde kitengo aina ya faili huduma Π² /etc/systemd/system/ kwa mfumo wa uanzishaji wa 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
Washa huduma:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service β /etc/systemd/system/lxd-hddpool.service.
Baada ya kuanzisha upya mfumo wa mwenyeji, tunaangalia hali ya huduma:
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).
Kutoka kwa pato tunaweza kuthibitisha kuwa hali ya huduma iko kazi, licha ya ukweli kwamba utekelezaji wa hati yetu kutoka kwa amri moja ulikamilishwa, chaguo lilituruhusu kufanya hivi. RemainAfterExit=true.
Kwa kuwa michakato yote ya kontena huendeshwa kwa kutengwa kwenye mfumo wa mwenyeji kwa kutumia kernel yake, ili kulinda zaidi ufikiaji wa michakato ya kontena kwa mfumo wa mwenyeji, LXD inatoa fursa ya mchakato, ambapo:
Vyombo vya upendeleo - haya ni vyombo ambavyo michakato ya UID na GID inalingana na mmiliki sawa na kwenye mfumo wa mwenyeji. Kwa mfano, mchakato unaoendeshwa katika chombo chenye UID ya 0 una haki zote za ufikiaji sawa na mchakato kwenye mfumo wa seva pangishi na UID ya 0. Kwa maneno mengine, mtumiaji wa mizizi kwenye kontena ana haki zote sio tu katika chombo, lakini pia kwenye mfumo wa mwenyeji ikiwa anaweza kwenda nje ya nafasi ya majina ya kontena.
Vyombo visivyo na upendeleo - haya ni vyombo ambamo michakato ni ya mmiliki wa UID na GID yenye nambari kutoka 0 hadi 65535, lakini kwa mfumo wa seva pangishi mmiliki amefunikwa kwa kutumia sehemu zilizoongezwa za SubUID na SubGID, mtawalia. Kwa mfano, mtumiaji aliye na UID=0 kwenye kontena ataonekana kwenye mfumo wa mwenyeji kama SubUID + UID. Hii inalinda mfumo wa seva pangishi kwa sababu ikiwa mchakato wowote katika kontena unaweza kuepuka nafasi yake ya jina iliyotengwa, inaweza tu kuwasiliana na mfumo wa seva pangishi kama mchakato wa UID/GID isiyojulikana, ya juu sana.
Kwa chaguomsingi, vyombo vipya vilivyoundwa vina hadhi isiyo ya haki na kwa hivyo ni lazima tufafanue SubUID na SubGID.
Wacha tuunde faili mbili za usanidi ambazo tutaweka kinyago cha SubUID na SubGID, mtawaliwa:
Kwa kuwa tulianzisha mtandao hapo awali kwa kutumia mchawi wa uanzishaji lxd init na kuunda kifaa cha mtandao lxdbr0, basi katika sehemu hii tutafahamiana tu na mitandao katika LXD na jinsi ya kuunda swichi ya kawaida (daraja) kwa kutumia amri ya mteja.
Mchoro ufuatao unaonyesha jinsi swichi (daraja) inavyounganisha seva pangishi na vyombo kwenye mtandao:
Vyombo vinaweza kuwasiliana kupitia mtandao na vyombo vingine au mwenyeji ambamo vyombo hivi vinahudumiwa. Ili kufanya hivyo, unahitaji kuunganisha kadi za mtandao za vyombo na swichi ya kawaida. Tutaunda swichi kwanza, na violesura vya mtandao vya chombo vitaunganishwa katika sura zinazofuata, baada ya chombo chenyewe kuundwa.
Amri ifuatayo inaunda swichi na subnet 10.0.5.0/24 na anwani ya IPv4 10.0.5.1/24, na pia inajumuisha ipv4.nat ili vyombo viweze kupata Mtandao kupitia mwenyeji kwa kutumia huduma ya NAT:
Kila kontena katika LXD ina usanidi wake na inaweza kuipanua kwa usanidi uliotangazwa kimataifa unaoitwa wasifu wa usanidi. Utumiaji wa wasifu wa usanidi kwenye kontena una modeli ya kuteleza, mfano ufuatao unaonyesha hii:
Katika mfano huu, profaili tatu zimeundwa katika mfumo wa LXD: default, hddpool ΠΈ hostfs. Profaili zote tatu zinatumika kwenye chombo ambacho kina usanidi wa ndani (eneo la kijivu). Wasifu default ina kifaa root ambayo ina parameta pool ni sawa na ssdpool, lakini kutokana na muundo wa usanidi wa kuteleza, tunaweza kutumia wasifu kwenye chombo hddpool ambayo ina parameta pool itabatilisha parameta sawa kutoka kwa wasifu default na chombo kitapokea usanidi wa kifaa root na parameter pool sawa hddpool, na wasifu hostfs huongeza tu kifaa kipya kwenye kontena.
Ili kuona orodha ya wasifu unaopatikana wa usanidi, tumia amri ifuatayo:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Orodha kamili ya amri zinazopatikana za kufanya kazi na wasifu zinaweza kupatikana kwa kuongeza ufunguo --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
Wasifu wa usanidi chaguo-msingi default haina usanidi wa kadi ya mtandao kwa chombo na vyombo vyote vilivyoundwa hivi karibuni havina mtandao, kwao ni muhimu kuunda vifaa vya mtandao vya ndani (vya kujitolea) na amri tofauti, lakini tunaweza kuunda kifaa cha mtandao wa kimataifa katika usanidi. wasifu ambao utashirikiwa kati ya vyombo vyote kwa kutumia wasifu huu. Kwa njia hii, mara baada ya amri ya kuunda chombo kipya, watakuwa na mtandao na upatikanaji wa mtandao. Wakati huo huo, hakuna vikwazo, tunaweza kuunda kifaa cha mtandao wa ndani baadaye ikiwa ni lazima.
Amri ifuatayo itaongeza kifaa kwenye wasifu wa usanidi eth0 aina nic imeunganishwa kwenye mtandao lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Ni muhimu kutambua kwamba kwa kuwa kwa kweli tuliongeza kifaa kwenye wasifu wa usanidi, ikiwa tulibainisha anwani ya IP tuli kwenye kifaa, basi vyombo vyote ambavyo vitatumia wasifu huu vitashiriki anwani sawa ya IP. Ikiwa kuna haja ya kuunda chombo na anwani ya IP ya tuli iliyotengwa kwa chombo, basi unapaswa kuunda usanidi wa kifaa cha mtandao kwenye ngazi ya chombo (usanidi wa ndani) na parameter ya anwani ya IP, na si kwa kiwango cha wasifu.
Wacha tuangalie wasifu:
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: []
Katika wasifu huu tunaweza kuona kwamba kwa vyombo vyote vilivyoundwa hivi karibuni vifaa viwili vitaundwa:
eth0 - Aina ya kifaa nic iliyounganishwa na swichi (daraja la mtandao) lxdbr0
root - Aina ya kifaa disk ambayo hutumia bwawa la kuhifadhia ssdpool
Ili kutumia iliyoundwa hapo awali Dimbwi la Kuhifadhi vyombo, tengeneza wasifu wa usanidi ssdroot ambayo tutaongeza kifaa kama disk na sehemu ya mlima / (mizizi) kwa kutumia iliyoundwa hapo awali Dimbwi la Kuhifadhi - ssdpool:
Vyombo huundwa kutoka kwa picha ambazo ni usambazaji maalum uliokusanywa ambao hauna kernel ya Linux. Kwa hiyo, kabla ya kuendesha chombo, ni lazima kupelekwa kutoka kwa picha hii. Chanzo cha picha ni hifadhi ya ndani ambamo picha hupakuliwa kutoka hazina za nje.
Ili kuanza kutumia kontena, unahitaji kuongeza picha kutoka hazina ya kimataifa hadi ya ndani local:. Sasa hazina ya ndani haina tupu, amri itahakikisha hii lxc image list. Ikiwa mbinu list usibainishe hazina, basi hazina ya ndani itatumika kwa chaguo-msingi - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Picha kwenye hazina inadhibitiwa kwa kutumia njia zifuatazo:
Timu
Description
picha ya lxc pak
Dhibiti lakabu za picha
picha ya lxc nakala
Nakili picha kati ya seva
picha ya lxc kufuta
Futa picha
picha ya lxc hariri
Badilisha sifa za picha
picha ya lxc kuuza nje
Hamisha na kupakua picha
picha ya lxc kuagiza
Ingiza picha kwenye duka la picha
picha ya lxc info
Onyesha habari muhimu kuhusu picha
picha ya lxc orodha
Orodhesha picha
picha ya lxc kunawirisha
Onyesha upya picha
picha ya lxc Onyesha
Onyesha sifa za picha
Nakili picha kwenye hazina ya ndani kutoka kwa ile ya kimataifa images::
Kwa kuongezea hali ya maingiliano, LXD pia inasaidia hali ya usanidi isiyoingiliana, hii ndio wakati usanidi umeainishwa katika mfumo wa faili ya YAML, umbizo maalum ambalo hukuruhusu kusakinisha usanidi mzima mara moja, kupita utekelezaji. ya amri nyingi za maingiliano ambazo zilijadiliwa hapo juu katika makala hii, ikiwa ni pamoja na usanidi wa mtandao, uundaji wa wasifu wa usanidi, nk. Hatutashughulikia eneo hili hapa, unaweza kuliangalia peke yako. katika nyaraka.
Amri ya mwingiliano inayofuata lxc config ambayo tutaangalia inakuwezesha kuweka usanidi. Kwa mfano, ili kuhakikisha kuwa picha zilizopakuliwa kwenye hazina ya ndani hazisasishwi kiotomatiki kutoka kwa hazina za kimataifa, tunaweza kuwezesha tabia hii kwa amri ifuatayo:
Ili kuunda chombo tumia amri lxc init ambayo maadili hupitishwa ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:ΠΎΠ±ΡΠ°Π· na kisha kitambulisho kinachohitajika cha chombo. Hifadhi inaweza kubainishwa kama ya ndani local: ndivyo ilivyo yoyote ya kimataifa. Ikiwa hazina haijabainishwa, basi kwa chaguo-msingi hazina ya ndani inatumiwa kutafuta picha. Ikiwa picha imebainishwa kutoka kwa hazina ya kimataifa, basi picha hiyo itapakuliwa kwanza kwenye hazina ya ndani na kisha kutumika kuunda kontena.
Wacha tuendeshe amri ifuatayo kuunda chombo chetu cha kwanza:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Wacha tuangalie funguo za amri tunazotumia hapa kwa mpangilio:
alpine3 - Lakabu (lakabu) imebainishwa kwa picha ambayo ilipakiwa hapo awali kwenye hazina ya ndani. Ikiwa lakabu haikuundwa kwa picha hii, basi unaweza kurejelea picha hiyo kila wakati Fingerprint ambayo inaonyeshwa kwenye jedwali.
alp - Inaweka kitambulisho cha kontena
--storage - Ufunguo huu unaonyesha ni wapi Dimbwi la Kuhifadhi chombo kitaundwa
--profile β Vifunguo hivi hutiririsha usanidi kutoka kwa wasifu zilizoundwa hapo awali hadi kwenye kontena
Tunazindua chombo, ambacho huanza kuzindua mfumo wa init wa usambazaji:
lxc start alp
Unaweza pia kutumia amri lxc launch ambayo hukuruhusu kuchanganya timu lxc init ΠΈ lxc start katika operesheni moja.
Kuangalia hali ya chombo:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
Katika sehemu profiles tunaweza kuhakikisha kuwa chombo hiki kinatumia wasifu mbili za usanidi - default ΠΈ hddroot. Katika sehemu devices tunaweza tu kugundua kifaa kimoja kwa sababu kifaa cha mtandao kiliundwa katika kiwango cha wasifu default. Ili kuona vifaa vyote vinavyotumiwa na chombo unahitaji kuongeza ufunguo --expanded:
Ikiwa tutajaribu kuweka anwani ya IP kwa kifaa cha mtandao eth0 timu lxc config device set alp iliyokusudiwa kwa usanidi wa kontena, basi tutapokea hitilafu ambayo itaripoti kwamba kifaa hakipo kwa sababu kifaa eth0 ambayo hutumiwa na chombo ni ya wasifu default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Bila shaka tunaweza kuweka anwani ya IP tuli eth0 vifaa katika wasifu, lakini itakuwa sawa kwa vyombo vyote ambavyo vitatumia wasifu huu. Kwa hivyo, wacha tuongeze kifaa kilichowekwa kwenye chombo:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Kisha unahitaji kuanzisha tena chombo:
lxc restart alp
Ikiwa tutaangalia usanidi wa chombo sasa, hatuhitaji kutumia chaguo --expanded kuona kifaa cha mtandao eth0, kwa kuwa tuliiumba kwa kiwango cha chombo na ilishuka juu ya kifaa sawa kutoka kwa wasifu default:
Ili kutekeleza amri kwenye chombo moja kwa moja, kupitisha miunganisho ya mtandao, tumia amri lxc exec ambayo hutekeleza amri kwenye chombo bila kuzindua ganda la mfumo. Ikiwa unahitaji kutekeleza amri kwenye ganda kwa kutumia mifumo ya ganda kama vile viwezo, uelekezaji wa faili (bomba), n.k., basi unahitaji kuzindua ganda waziwazi na kupitisha amri kama ufunguo, kwa mfano:
lxc exec alp -- /bin/sh -c "echo $HOME"
Amri ilitumia herufi maalum ya kutoroka kwa mhusika maalum $ ili kutofautiana $HOME haikufasiriwa kwenye mashine ya mwenyeji, lakini ilitafsiriwa tu ndani ya kontena.
Inawezekana pia kuanza hali ya ganda inayoingiliana, na kisha kumaliza kikao kwa kutekeleza hotkey CTRL+D:
Katika LXD, unaweza kudhibiti rasilimali za kontena kwa kutumia seti maalum ya usanidi. Orodha kamili ya vigezo vya usanidi wa kontena inaweza kupatikana katika nyaraka.
Kuna njia kadhaa za kupunguza rasilimali za CPU. aina ya vikwazo:
limit.cpu - hufunga kontena kwa cores moja au zaidi za CPU
limits.cpu.allowance - inasimamia upendeleo wa kipanga ratiba cha CFS wakati kikomo cha muda kimepita, au utaratibu wa kugawana rasilimali wa CPU kwa jumla wakati asilimia imepita
limits.cpu.priority - kipaumbele cha kiratibu wakati matukio mengi ya kushiriki seti ya vichakataji hupewa asilimia sawa ya vichakataji
Mbali na vikwazo vile limits.read, limits.write tunaweza pia kuweka kikomo cha nafasi ya diski inayotumiwa na kontena (inafanya kazi tu na ZFS au BTRFS):
lxc config device set alp root size=2GB
Baada ya ufungaji, katika parameter devices.root.size Tunaweza kuthibitisha kikomo kilichowekwa:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Kuangalia upendeleo wa diski iliyotumiwa tunaweza kupata kutoka kwa amri 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
Licha ya ukweli kwamba tumeweka kikomo kwa kifaa cha mizizi ya chombo hadi 2GB, huduma za mfumo kama vile df hataona kizuizi hiki. Ili kufanya hivyo, tutafanya mtihani mdogo na kujua jinsi inavyofanya kazi.
Wacha tuunde kontena 2 mpya zinazofanana Dimbwi la Kuhifadhi (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Ikiwa tunatazama kwenye chombo cha pili, angalia uwepo wa faili katika eneo moja, basi faili hii haitakuwapo, ambayo inatarajiwa, kwani vyombo vinaundwa peke yao. Kiasi cha Uhifadhi katika huo huo Dimbwi la Kuhifadhi:
lxc exec alp2 -- ls -lh
total 0
Lakini wacha tulinganishe maadili ambayo hutoa df kwenye chombo kimoja na kingine:
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% /
...
Kifaa /dev/loop1 imewekwa kama kizigeu cha mizizi Dimbwi la Kuhifadhi ambayo vyombo hivi hutumia, kwa hivyo hugawana ujazo wake kati ya mbili.
LXD ina uwezo wa kuunda vijipicha na kurejesha hali ya kontena kutoka kwao.
Ili kuunda snapshot, endesha amri ifuatayo:
lxc snapshot alp snapshot1
Timu lxc snapshot hakuna ufunguo unaopatikana list, kwa hivyo, ili kutazama orodha ya vijipicha unahitaji kutumia amri inayoonyesha habari ya jumla kuhusu kontena:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Unaweza kurejesha chombo kutoka kwa picha kwa kutumia amri lxc restore kubainisha chombo ambacho urejesho utafanywa na lakabu ya muhtasari:
lxc restore alp snapshot1
Amri ifuatayo inatumika kufuta picha ndogo. Tafadhali kumbuka kuwa sintaksia ya amri haifanani na zingine zote; hapa unahitaji kubainisha mkwaju wa mbele baada ya jina la kontena. Ikiwa kufyeka kumeachwa, basi amri ya kufuta picha inatafsiriwa kama amri ya kufuta kontena!
lxc delete alp/snapshot1
Katika mfano hapo juu, tuliangalia kile kinachoitwa snapshots zisizo na uraia. LXD ina aina nyingine ya snapshots - stateful, ambayo huokoa hali ya sasa ya michakato yote katika chombo. Kuna idadi ya vipengele vya kuvutia na muhimu vinavyohusishwa na vijipicha vya hali ya juu.