ProHoster > Blog > Rêveberî > Taybetmendiyên bingehîn ên LXD - pergalên konteynerê Linux
Taybetmendiyên bingehîn ên LXD - pergalên konteynerê Linux
LXD gerînendeyê konteynerê pergala nifşê din e, ji ber vê yekê dibêje çavkaniyê. Ew navgînek bikarhênerek mîna makîneyên virtual pêşkêşî dike, lê li şûna wê konteynerên Linux bikar tîne.
LXD core Daemonek îmtiyaz e (karûbarek ku bi mafên root ve tê xebitandin) ku API-ya REST-ê bi riya soketek unix-ê ya herêmî, û hem jî bi navgîniya torê ve peyda dike heke veavakirina guncan were saz kirin. Xerîdar, wekî amûra rêzika fermanê ya ku bi LXD re hatî peyda kirin, bi vê REST API-yê daxwazan dikin. Ev tê vê wateyê ku hûn bigihîjin mêvandarek herêmî an mêvandarek dûr, her tişt bi heman rengî dixebite.
Di vê gotarê de em ê bi hûrgulî li ser têgehên LXD nesekinin, em ê hemî kapasîteyên berdest ên ku di belgeyê de hatine destnîşan kirin, di nav de pêkanîna vê dawiyê ya di guhertoyên herî paşîn ên LXD-ê de piştgirî ji makîneyên virtual QEMU re paralel bi konteyneran re nagirin. Di şûna wê de, em ê tenê bingehên rêveberiya konteyneran fêr bibin - sazkirina hewzên hilanînê, torê, xebitandina konteynerek, sepandina sînorên çavkaniyê, û meriv çawa wêneyan bikar tîne da ku hûn têgihîştinek bingehîn a LXD-ê bistînin û konteyneran li Linux-ê bikar bînin.
Ji bo agahdariya bêkêmasî, ji kerema xwe serî li çavkaniya fermî bidin:
Ev tê vê wateyê ku dê du pakêt bi carekê ve werin saz kirin, yek wekî pakêtek pergalê û ya din wekî pakêtek snap. Sazkirina du pakêtan li ser pergalê dibe ku hin pirsgirêkek çêbike ku heke pakêta snap ji hêla gerînendeyê pakêtê snap ve were rakirin dibe ku pakêta pergalê sêwî bimîne.
Pakêtê bibînin lxd di depoya snap de hûn dikarin fermana jêrîn bikar bînin:
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
Bi xebitandina fermanê list hûn dikarin piştrast bikin ku pakêt lxd hîn nehatiye sazkirin:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
Tevî rastiya ku LXD pakêtek snap e, divê ew bi pakêta pergalê ve were saz kirin lxd, ya ku dê di pergalê de grûpek têkildar biafirîne, karûbarên pêwîst di nav de /usr/bin û vî awayî.
sudo apt update
sudo apt install lxd
Ka em pê ewle bin ku pakêt wekî pakêtek snap hatî saz kirin:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
lxd 3.21 13474 stable/… canonical✓ -
Ji bo sazkirina pakêta LXD li ser pergalê, hûn hewce ne ku emrên jêrîn bimeşînin, ya yekem dê navnîşa pakêtên li ser pergalê ku di depoyê de peyda dibe nûve bike, ya duyemîn dê rasterast pakêtê saz bike:
sudo pacman -Syyu && sudo pacman -S lxd
Piştî sazkirina pakêtê, ji bo birêvebirina LXD ji hêla bikarhênerek birêkûpêk ve, divê ew li koma pergalê were zêdekirin lxd:
sudo usermod -a -G lxd user1
Ka em bikarhênerê piştrast bikin user1 li komê zêde kirin lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Ger kom lxd di navnîşê de nayê dîtin, wê hingê hûn hewce ne ku rûniştina bikarhêner dîsa çalak bikin. Ji bo vê yekê, hûn hewce ne ku hûn di bin heman bikarhênerê de têkevin û têkevin.
Di nav de çalak bikin systemd barkirina karûbarê LXD di destpêka pergalê de:
Berî destpêkirina destpêkirinê, pêdivî ye ku em fam bikin ka hilanînê di LXD de çawa bi mentiqî hatiye saz kirin.
Depokirin (Embarkirinî) pêk tê ji yek an bêtir Storage Pool ku yek ji pergalên pelê yên piştgirîkirî yên wekî ZFS, BTRFS, LVM an pelrêça birêkûpêk bikar tîne. Herkes Storage Pool li ser cildan tê dabeş kirin (Volume Storage) yên ku ji bo mebestên din wêne, konteynir, an dane hene.
Wêneyên - ev belavkirinên taybetî yên bêyî kernel Linux-ê hatine berhev kirin û ji çavkaniyên derveyî peyda dibin
Konser - ev belavkirinên ji wêneyan hatine bicîh kirin, ji bo karanîna amade ne
Snapshots - ev dîmenên rewşa konteyneran in ku hûn dikarin vegerin
Ji bo birêvebirina hilanînê li LXD, fermanê bikar bînin lxc storage sertîfîkayek ku hûn dikarin bi destnîşankirina mifteyê jê bistînin - lxc storage --help
Fermana jêrîn navnîşek hemî nîşan dide Storage Pool di hilanîna LXD de:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Ji bo dîtina navnîşek hemî Volume Storage di hilbijartî de Storage Pool tîmê xizmetê dike 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 |
+-----------+----------------------------------+-------------+---------+
Her weha, heke ji bo Storage Pool Dema afirandinê, pergala pelê BTRFS hate hilbijartin, paşê navnîşek bistînin Volume Storage an subcildên di şîroveya BTRFS de, hûn dikarin amûra vê pergala pelê bikar bînin:
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
Berî ku hûn konteyneran çêbikin û bikar bînin, divê hûn destpêkek LXD-ya gelemperî ku torê û hilanînê diafirîne û mîheng dike pêk bînin. Ev dikare bi destan bi karanîna fermanên xerîdar ên standard ên ku di navnîşê de hene bi bangkirina fermanê ve were kirin lxc --help an jî bi karanîna sêrbazê destpêkê lxd init bersiva çend pirsan dide.
Di dema destpêkirinê de, LXD gelek pirsan dipirse, di nav de destnîşankirina celebê pergala pelê ji bo xwerû Storage Pool. Bi xwerû, pergala pelê BTRFS ji bo wê tê hilbijartin. Dê piştî afirandinê nekaribe FS-ya din biguhezîne. Ji bo hilbijartina FS-ê tê pêşniyar kirin tabloya berhevdana taybetmendiyê:
Taybetî
Directory
Btrfs
LVM
ZFS
CEPH
Hilberîna wêneya xweşbînkirî
na
erê
erê
erê
erê
Afirandina nimûneya xweşbînkirî
na
erê
erê
erê
erê
Afirandina wêneya wêneya xweşbînkirî
na
erê
erê
erê
erê
Veguheztina wêneya xweşbînkirî
na
erê
na
erê
erê
Veguheztina nimûneya xweşbînkirî
na
erê
na
erê
erê
Li ser nivîsandinê kopî bikin
na
erê
erê
erê
erê
Block bingeha
na
na
erê
na
erê
Klonkirina tavilê
na
erê
erê
erê
erê
Ajokarê hilanînê ku di hundurê konteynerê de tê bikar anîn
erê
erê
na
na
na
Vegerandina ji dîmenên kevntir (ne herî dawî)
erê
erê
erê
na
erê
Kotayên Storage
erê(*)
erê
erê
erê
na
Destpêkirina torê û Storage Pool bi karanîna sêrbaz ^
Fermana paşîn a ku em ê lê binerin pêşniyar dike ku bi karanîna sêrbazê destpêkê ve bi bersivdana pirsên hêsan ve pêkhateyên bingehîn ên LXD saz bikin.
Fermana bimeşîne lxc init û bersivên pirsan li dû kolonê wekî ku di mînaka jêrîn de tê xuyang kirin binivîsin an jî li gorî şertên xwe wan biguherînin:
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]:
Di gava berê de me çêkir Storage Pool ku navê wê hatiye dayîn ssdpool û pelê ku di pergala min de ye /var/lib/lxd/disks/ssdpool.img. Ev navnîşana pergala pelê bi ajokera SSD ya fîzîkî ya di PC-ya min de têkildar e.
Çalakiyên jêrîn, ji bo berfirehkirina têgihîştina rola ku tê lîstin Storage Pool di depoyê de, em ê ya duyemîn biafirînin Storage Pool ku dê bi fizîkî li ser celebek dîskek cûda, HDD-ê were bicîh kirin. Pirsgirêk ev e ku LXD destûrê nade ku hûn biafirînin Storage Pool ji navnîşanê /var/lib/lxd/disks/ û tewra girêdanên sembolîk jî dê nexebitin, bersiva pêşdebiran bibînin. Em dikarin di dema destpêkkirin/formatkirinê de vê sînordariyê derbas bikin Storage Pool bi destnîşankirina nirxê wekî amûrek blokê li şûna rêça pelê paşvekêşanê bi destnîşankirina vê di mifteyê de source.
Ji ber vê yekê, berî ku çêbikin Storage Pool hûn hewce ne ku pelek loopback an dabeşek heyî ya li ser pergala pelê xwe ya ku ew ê bikar bîne destnîşan bikin. Ji bo vê yekê, em ê pelek ku em ê mezinahiya 10 GB sînordar bikin biafirînin û bikar bînin:
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
Ka em pelê loopback bi amûrek loopback belaş ve girêdin:
Bi saya mifteyê --show pêkanîna fermanê navê cîhaza ku pelê meya loopback tê de ye vedigerîne ser ekranê. Ger hewce be, em dikarin navnîşek hemî amûrên mijûl ên bi vî rengî nîşan bidin da ku pê ewle bin ku kiryarên me rast in:
Ji navnîşê hûn dikarin bibînin ku cîhaz heye /dev/loop1 pelê loopback tê de ye /mnt/work/lxd/hddpool.img, û di cîhazê de /dev/loop0 pelê loopback tê de ye /var/lib/lxd/disks/ssdpool.img ku bi standardê re têkildar e Storage Pool.
Fermana jêrîn yek nû diafirîne Storage Pool di LXD de li ser bingeha pelê loopback ku me nû amade kiriye. LXD dê pelê loopback format bike /mnt/work/lxd/hddpool.img di cîhazê de /dev/loop1 ji bo pergala pelê BTRFS:
Piştî afirandinê Storage Pool, heke pêwîst be, ew dikare were berfireh kirin. Bo Storage Pool li ser bingeha pergala pelê BTRFS, emrên jêrîn bimeşînin:
Veguheztina otomatîkî ya pelek loopback di hêlîna cîhaza loopback de ^
Pirsgirêkek me ya piçûk heye, dema ku pergala mêvandar, pelê ji nû ve dest pê dike /mnt/work/lxd/hddpool.img dê ji cîhazê "bifire". /dev/loop1 û karûbarê LXD dê dema barkirinê têk bibe ji ber ku ew ê di vê cîhazê de nebîne. Ji bo çareserkirina vê pirsgirêkê hûn hewce ne ku karûbarek pergalê biafirînin ku dê vê pelê têxe cîhazê /dev/loop1 dema ku pergala mêvandar boot dike.
Werin em biafirînin yekbûn cureyê pelê xizmetkar в /etc/systemd/system/ ji bo pergala destpêkirina 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
Xizmetê çalak bikin:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.
Piştî destpêkirina pergala mêvandar, em rewşa karûbarê kontrol dikin:
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).
Ji encam em dikarin verast bikin ku dewleta karûbarê ye jîr, tevî vê yekê ku bicîhkirina nivîsara me ji yek fermanê qediya, vebijarkê destûr da me ku em vê bikin RemainAfterExit=true.
Ji ber ku hemî pêvajoyên konteyneran bi rastî li ser pergala mêvandar bi karanîna kernelê xwe veqetandî dimeşînin, ji bo ku bêtir gihandina pêvajoyên konteynerê ji pergala mêvandar re biparêze, LXD îmtiyaza pêvajoyê pêşkêşî dike, ku:
Konteynirên îmtiyaz - ev konteynir in ku tê de pêvajoyên bi UID û GID bi heman xwedê re li ser pergala mêvandar re têkildar in. Mînakî, pêvajoyek ku di konteynirek bi UID-ya 0-yê de tê xebitandin hemî mafên gihîştinê wekî pêvajoyek li ser pergala mêvandar a bi UID-ya 0-yê heye. Bi gotinek din, bikarhênerê root di konteynerê de xwediyê hemî mafan e ne tenê di konteynir, lê di heman demê de li ser pergala mêvandar jî ger ew dikare derkeve derveyî cîhê navên veqetandî yên konteynerê.
Konteynirên bê îmtiyaz - ev konteynir in ku tê de pêvajoyên xwediyê UID û GID-ê yên bi jimareyek ji 0 heya 65535 in, lê ji bo pergala mêvandar xwedan bi rêzê bi bitsên SubUID û SubGID yên lêzêdekirî têne maske kirin. Mînakî, bikarhênerek bi UID=0 di konteynir de dê li ser pergala mêvandar wekî were dîtin SubUID + UID. Ev pergala mêvandar diparêze ji ber ku ger pêvajoyek di konteynerê de karibe ji cîhê navên xwe yên veqetandî bireve, ew tenê dikare bi pergala mêvandar re wekî pêvajoyek bi UID/GID-ya nenas, pir bilind re têkiliyê deyne.
Ji hêla xwerû ve, konteynerên ku nû hatine afirandin xwedan statûyek bêdestûr in û ji ber vê yekê divê em SubUID û SubGID diyar bikin.
Ka em du pelên veavakirinê biafirînin ku tê de em ê bi rêzê maskeya SubUID û SubGID saz bikin:
Ji ber ku me berê torê bi karanîna sêrbazê destpêkirinê vekir lxd init û amûrek torê çêkir lxdbr0, wê hingê di vê beşê de em ê bi tenê bi tora LXD-ê re û çawa bi karanîna fermana xerîdar veguhezek virtual (pirek) biafirînin nas bikin.
Diagrama jêrîn destnîşan dike ka çawa guhezek (pirek) mêvandar û konteyneran bi torê ve girêdide:
Konteyner dikarin bi riya torgilokê bi konteynerên din an mêvandarê ku ev konteynir li ser têne serve kirin re têkilî daynin. Ji bo vê yekê, hûn hewce ne ku qertên torê yên virtual yên konteyneran bi guhezek virtual ve girêdin. Em ê pêşî veguhezek biafirînin, û pêwendiya torê ya konteynerê dê di beşên paşîn de bêne girêdan, piştî ku konteynir bixwe hate afirandin.
Fermana jêrîn bi subnet veguhezek diafirîne 10.0.5.0/24 û navnîşana IPv4 10.0.5.1/24, û her weha tê de ipv4.nat da ku konteynir bi karanîna karûbarê NAT-ê bi karanîna mêvandar ve bigihîjin Înternetê:
Her konteynir di LXD de veavakirina xwe heye û dikare wê bi konfigurasyonên cîhanî yên ku jê re tê gotin dirêj bike profîlên veavakirinê. Serîlêdana profîlên vesazkirinê li konteynir modelek kaskadê heye, mînaka jêrîn vê yekê destnîşan dike:
Di vê nimûneyê de, sê profîl di pergala LXD de hatine afirandin: default, hddpool и hostfs. Her sê profîl li konteynirek ku xwedan vesaziyek herêmî ye (herêma gewr) têne sepandin. Tengal default amûrek heye root ku pîvanek heye pool wekhev e ssdpool, lê bi saya modela serîlêdana veavakirina kaskadê, em dikarin profîlek li konteynerê bicîh bikin hddpool ku pîvanek heye pool dê heman parameterê ji profîlê derxe default û konteynir dê veavakirina cîhazê bistîne root bi parametre pool wekhev hddpool, û profîla hostfs bi tenê amûrek nû li konteynerê zêde dike.
Ji bo dîtina navnîşa profîlên mîhengê yên berdest, emrê jêrîn bikar bînin:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Navnîşek bêkêmasî ya emrên berdest ên ji bo xebata bi profîlek re dikare bi lêzêdekirina mifteyê were bidestxistin --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
Profîla veavakirina xwerû default ji bo konteynerê veavakirina qerta torê tune ye û hemî konteynerên ku nû hatine afirandin toreyek wan tune ye, ji bo wan pêdivî ye ku amûrên torê yên herêmî (veqetandî) bi fermanek cihê biafirînin, lê em dikarin di veavakirinê de amûrek torê ya gerdûnî biafirînin. profîla ku dê di navbera hemî konteynerên ku vê profîlê bikar tînin de were parve kirin. Bi vî rengî, tavilê piştî fermana çêkirina konteynirek nû, ew ê xwedî torgilokek bi gihîştina torê bin. Di heman demê de, ti sînor tune; ger hewce be, em her gav dikarin paşê amûrek torê ya herêmî biafirînin.
Fermana jêrîn dê amûrê li profîla veavakirinê zêde bike eth0 cureyê nic bi torê ve girêdayî ye lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Girîng e ku bala xwe bidinê ku ji ber ku me bi rastî amûrê li profîla veavakirinê zêde kir, heke me navnîşek IP-ya statîk di cîhazê de destnîşan kir, wê hingê hemî konteynerên ku dê vê profîlê bikar bînin dê heman navnîşana IP-yê parve bikin. Ger hewce ye ku konteynirek bi navnîşana IP-ya statîk a ku ji bo konteynerê hatî veqetandin were afirandin, wê hingê divê hûn di asta konteynerê de (veavakirina herêmî) bi parametreya navnîşana IP-yê, û ne di asta profîlê de veavakirina cîhaza torê biafirînin.
Ka em profîlê kontrol bikin:
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: []
Di vê profîlê de em dikarin bibînin ku ji bo hemî konteynerên nû hatine afirandin dê du cîhaz werin afirandin:
eth0 - Cureyê cîhazê nic bi guhêrbar ve girêdayî ye (pira torê) lxdbr0
root - Cureyê cîhazê disk ku hewza hilanînê bikar tîne ssdpool
Ji bo ku berê hatî afirandin bikar bînin Storage Pool konteynir, profîlek veavakirinê biafirînin ssdroot ku tê de em ê amûrek mîna lê zêde bikin disk bi xala çiyê / (root) ya ku berê hatî afirandin bikar tîne Storage Pool - ssdpool:
Konteyner ji wêneyên ku bi taybetî belavokên ku xwedan kernelek Linux-ê nîn in têne çêkirin. Ji ber vê yekê, berî ku konteynerê bimeşîne, divê ew ji vê wêneyê were bicîh kirin. Çavkaniya wêneyan depoyek herêmî ye ku tê de wêne ji depoyên derveyî têne dakêşandin.
Ji bo nîşandana hejmareke sînorkirî ya stûnan me vebijark bikar anî -c bi parametre dasut, û her weha dirêjahiya navnîşê bi fermanê re sînordar kir head.
Parzûnkirin heye ku navnîşek wêneyan nîşan bide. Fermana jêrîn dê hemî mîmarên belavkirinê yên berdest navnîş bike AlpineLinux:
Ji bo ku hûn dest bi karanîna konteynerê bikin, hûn hewce ne ku wêneyek ji depoya gerdûnî li ya herêmî zêde bikin local:. Naha depoya herêmî vala ye, ferman dê vê yekê piştrast bike lxc image list. Heke rêbaz list depoyek diyar neke, wê hingê depoya herêmî dê ji hêla xwerû ve were bikar anîn - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Wêneyên di depoyê de bi rêbazên jêrîn têne rêve kirin:
tîma
description
wêneyê lxc navê alê
Navnavên wêneyan birêve bibin
wêneyê lxc kopî
Wêneyên di navbera serveran de kopî bikin
Ji bilî moda înteraktîf, LXD di heman demê de moda sazkirinê ya ne-înteraktîf piştgirî dike, ev gava ku veavakirin di forma pelê YAML de tête diyar kirin, formatek taybetî ya ku dihêle hûn hemî veavakirinê bi yekcarî saz bikin, ji darvekirinê derbas bikin. ji gelek fermanên înteraktîf ên ku li jor di vê gotarê de hatine nîqaş kirin, di nav de veavakirina torê, afirandina profîlên vesazkirinê, hwd. Em ê vê deverê li vir veneşêrin, hûn dikarin wê bi serê xwe kontrol bikin. di belgeyê de.
Emrê înteraktîf Next lxc config ya ku em ê lê binerin destûrê dide we ku hûn veavakirinê saz bikin. Mînakî, ji bo ku pê ewle bibin ku wêneyên dakêşandî yên li depoya herêmî bixweber ji depoyên gerdûnî nayên nûve kirin, em dikarin vê tevgerê bi fermana jêrîn çalak bikin:
Ji bo afirandina konteynerek fermanê bikar bînin lxc init ku nirx têne derbas kirin репозиторий:образ û dûv re jî nasnameya xwestî ya ji bo konteynerê. Depo dikare wekî herêmî were destnîşan kirin local: her gerdûnî jî wisa ye. Ger depo ne diyar be, wê hingê ji hêla xwerû depoya herêmî ji bo lêgerîna wêneyê tê bikar anîn. Ger wêne ji depoya gerdûnî were destnîşan kirin, wê hingê wêne dê pêşî li depoya herêmî were dakêşandin û dûv re ji bo çêkirina konteynerê were bikar anîn.
Ka em emrê jêrîn bimeşînin da ku konteynera xweya yekem biafirînin:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Ka em bi rêzê li bişkokên fermanê yên ku em li vir bikar tînin binêrin:
alpine3 - Ji bo wêneyê ku berê li depoya herêmî hatî barkirin, navekî (navdêr) tê destnîşankirin. Ger navnav ji bo vê wêneyê nehatibe afirandin, wê hingê hûn dikarin her gav bi wêneyê wê vebêjin Şopa tilî ku di tabloyê de tê nîşandan.
alp - Nasnameyê ji bo konteynerê destnîşan dike
--storage - Ev kilît di kîjanê de nîşan dide Storage Pool konteynir dê bê çêkirin
--profile - Van bişkokan vesazkirinê ji profîlên mîhengê yên berê hatine afirandin li konteynerê bicîh dikin
Em konteynerê dest pê dikin, ku dest bi destpêkirina pergala destpêkê ya belavkirinê dike:
lxc start alp
Her weha hûn dikarin fermanê bikar bînin lxc launch ku destûrê dide te ku hûn tîmên hev bikin lxc init и lxc start di yek operasyonê de.
Kontrolkirina rewşa konteynerê:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
Di beşa profiles em dikarin piştrast bikin ku ev konteynir du profîlên veavakirinê bikar tîne - default и hddroot. Di beşa devices ji ber ku cîhaza torê di asta profîlê de hate afirandin, em tenê dikarin yek amûrek tespît bikin default. Ji bo ku hûn hemî amûrên ku ji hêla konteynerê ve têne bikar anîn bibînin, hûn hewce ne ku mifteyek lê zêde bikin --expanded:
Ger em hewl bidin ku navnîşek IP-ê ji bo amûrek torê saz bikin eth0 kom lxc config device set alp ji bo veavakirina konteynerê hatî armanc kirin, wê hingê em ê xeletiyek werbigirin ku dê rapor bike ku cîhaz tune ye ji ber ku cîhaz eth0 ku ji hêla konteynerê ve tê bikar anîn girêdayî profîlê ye default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Bê guman em dikarin ji bo navnîşanek IP-ya statîk saz bikin eth0 cîhazên di profîlê de, lê ew ê ji bo hemî konteynerên ku dê vê profîlê bikar bînin yek be. Ji ber vê yekê, bila em amûrek ku ji konteynerê re hatî veqetandin zêde bikin:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Dûv re hûn hewce ne ku konteynerê ji nû ve bidin destpêkirin:
lxc restart alp
Ger em niha li veavakirina konteynerê binêrin, ne hewce ye ku em vebijarkê bikar bînin --expanded ji bo dîtina amûrê torê eth0, ji ber ku me ew di asta konteynerê de afirand û ew li ser heman cîhazê ji profîlê veqetiya default:
Ji bo ku emrên di konteynerek rasterast de bicîh bikin, girêdanên torê derbas bikin, fermanê bikar bînin lxc exec ku fermanan di konteynerê de bêyî destpêkirina şêlê pergalê pêk tîne. Heke hûn hewce ne ku fermanek di şêlê de bi karanîna qalibên şêlê yên wekî guhêrbar, beralîkirina pelan (boriyek) hwd pêk bînin, wê hingê hûn hewce ne ku şêlê bi eşkere dest pê bikin û fermanê wekî mifteyê derbas bikin, mînakî:
lxc exec alp -- /bin/sh -c "echo $HOME"
Ferman karakterek revê ya taybetî bikar anî ji bo karaktera taybetî $ da ku guherbar $HOME li ser makîneya mêvandar nehat şîrove kirin, lê tenê di hundurê konteynerê de hate şîrove kirin.
Di heman demê de gengaz e ku meriv moda şêlê înteraktîf bide dest pê kirin, û dûv re bi darvekirina bişkojka germê danişînê bi dawî bike CTRL+D:
Di LXD de, hûn dikarin çavkaniyên konteynerê bi karanîna komek mîhengek taybetî birêve bibin. Navnîşek bêkêmasî ya parametreyên veavakirina konteynerê dikare were dîtin di belgeyê de.
limit.cpu - konteynirek bi yek an jî zêdetir core CPU ve girêdide
limits.cpu.allowance - Gava ku dem derbas bû, an kotayên plansazkerê CFS-ê, an dema ku ji sedî derbas bû mekanîzmaya parvekirina çavkaniya CPU-ya gerdûnî birêve dibe
limits.cpu.priority - Pêşengiya plansazker dema ku gelek mînakên ku komek pêvajoyan parve dikin ji sedî heman pêvajoyê têne destnîşankirin
Ji bilî qedexeyên weha limits.read, limits.write Di heman demê de em dikarin mîqdara cîhê dîskê ku ji hêla konteynerê ve tê vexwarin jî sînordar bikin (tenê bi ZFS an BTRFS re dixebite):
lxc config device set alp root size=2GB
Piştî sazkirinê, di parametreyê de devices.root.size Em dikarin sînorê destnîşankirî verast bikin:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Ji bo dîtina kotayên dîska hatî bikar anîn em dikarin ji fermanê bistînin 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
Tevî vê rastiyê ku me ji bo cîhaza root ya konteynerê 2 GB sînorek daniye jî, karûbarên pergalê yên wekî df dê vê sînordarkirinê nebînin. Ji bo vê yekê, em ê ceribandinek piçûk bikin û fêr bibin ka ew çawa dixebite.
Werin em di heman de 2 konteynerên nû yên wekhev biafirînin Storage Pool (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Ger em li konteynera duyemîn mêze bikin, hebûna pelek li heman cîhî kontrol bikin, wê hingê ev pel dê ne li wir be, ya ku tê hêvî kirin, ji ber ku konteynir bi xwe têne afirandin. Volume Storage di heman Storage Pool:
lxc exec alp2 -- ls -lh
total 0
Lê bila em nirxên ku ew hilberîne bidin ber hev df li ser yek û konteynerê din:
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% /
...
Alav /dev/loop1 wekî dabeşkirina root-ê hatî çêkirin Storage Pool ku van konteyneran bikar tînin, ji ber vê yekê ew qebareya wê di navbera du kesan de parve dikin.
LXD xwedan şiyana çêkirina wêneyan û sererastkirina rewşa konteynerê ji wan e.
Ji bo afirandina wêneyek, emrê jêrîn bicîh bikin:
lxc snapshot alp snapshot1
Tîma lxc snapshot kilît tune list, ji ber vê yekê, ji bo dîtina navnîşa wêneyan hûn hewce ne ku emrê ku agahdariya gelemperî li ser konteynerê nîşan dide bikar bînin:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Hûn dikarin bi karanîna fermanê konteynerek ji wêneyek nûve bikin lxc restore diyarkirina konteynera ku dê ji bo restorasyonê were kirin û navnavê wêneya wêneyê:
lxc restore alp snapshot1
Fermana jêrîn ji bo jêbirina wêneyek tê bikar anîn. Ji kerema xwe zanibin ku hevoksaziya fermanê ne mîna hemî yên din e; li vir hûn hewce ne ku li dû navê konteynerê xêzek pêşde diyar bikin. Ger xêz ji holê were rakirin, wê hingê fermana jêbirina wêneyek wekî fermanek jêbirina konteynir tê şîrove kirin!
lxc delete alp/snapshot1
Di mînaka li jor de, me li dîmenên bi navê bêdewlet mêze kir. LXD xwedan celebek wêneyek din e - dewletdar, ku rewşa heyî ya hemî pêvajoyên di konteynerê de xilas dike. Gelek taybetmendiyên balkêş û bikêr hene ku bi dîmenên dewletparêz ve girêdayî ne.