Bazaj trajtoj de LXD - Linuksaj ujsistemoj

Bazaj trajtoj de LXD - Linuksaj ujsistemoj

LXD estas la venontgeneracia sistema ujmanaĝero, tiel ĝi diras fonto. Ĝi ofertas uzantinterfacon similan al virtualaj maŝinoj, sed uzas Linuksajn ujojn anstataŭe.

LXD-kerno estas privilegiita demono (servo funkcianta kun radikrajtoj) kiu disponigas REST-API per loka uniksa ingo, same kiel per la reto se la taŭga agordo estas instalita. Klientoj, kiel la komandlinia ilo provizita per LXD, faras petojn per ĉi tiu REST-API. Ĉi tio signifas, ke ĉu vi aliras lokan gastiganton aŭ malproksiman gastiganton, ĉio funkcias same.

En ĉi tiu artikolo ni ne detale detale pri la konceptoj de LXD, ni ne konsideros ĉiujn disponeblajn kapablojn skizitaj en la dokumentaro, inkluzive de la lastatempa efektivigo en la plej novaj versioj de LXD de subteno por virtualaj maŝinoj QEMU paralele kun ujoj. Anstataŭe, ni lernos nur la bazojn de kontenera administrado - agordi stokejojn, interkonektadon, ruli ujon, aplikante rimedlimojn, kaj kiel uzi momentfotojn por ke vi povu akiri bazan komprenon pri LXD kaj uzi ujojn en Linukso.

Por kompleta informo, bonvolu raporti al la oficiala fonto:

Навигация

Instalado LXD ^

Instalante LXD sur Ubuntu-distribuoj ^

En la distribua pako Ubuntu 19.10 lxd havas elsendon klaki pakon:

apt search lxd

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

Ĉi tio signifas, ke du pakaĵoj estos instalitaj samtempe, unu kiel sistempakaĵo kaj la alia kiel rapida pako. Instali du pakaĵojn en sistemo povas krei iun problemon kie la sistempakaĵo povas iĝi orfigita se la klakpakaĵo estas forigita de la klaka pakaĵmanaĝero.

Trovu pakon lxd en la klaka deponejo vi povas uzi la jenan komandon:

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

Rugante la komandon list vi povas certigi ke la pako lxd ankoraŭ ne instalita:

snap list

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

Malgraŭ la fakto, ke LXD estas rapida pako, ĝi devas esti instalita per la sistema pako lxd, kiu kreos la respondan grupon en la sistemo, la necesajn utilecojn en /usr/bin kaj tiel plu.

sudo apt update
sudo apt install lxd

Ni certigu, ke la pakaĵo estas instalita kiel rapida pako:

snap list

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

Instalante LXD sur Arch Linux-distribuoj ^

Por instali la LXD-pakaĵon en la sistemo, vi devas ruli la jenajn komandojn, la unua ĝisdatigos la liston de pakaĵoj en la sistemo disponebla en la deponejo, la dua rekte instalos la pakaĵon:

sudo pacman -Syyu && sudo pacman -S lxd

Post instalo de la pakaĵo, por administri LXD de kutima uzanto, ĝi devas esti aldonita al la sistema grupo lxd:

sudo usermod -a -G lxd user1

Ni certigu, ke la uzanto user1 aldonita al grupo lxd:

id -Gn user1

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

Se la grupo lxd ne videblas en la listo, tiam vi devas aktivigi la uzantan sesion denove. Por fari tion, vi devas elsaluti kaj ensaluti sub la sama uzanto.

Aktivigu en systemd ŝarĝante la LXD-servon ĉe la ekfunkciigo de la sistemo:

sudo systemctl enable lxd

Ni komencas la servon:

sudo systemctl start lxd

Kontrolante la servostaton:

sudo systemctl status lxd

Stokado LXD (stokado) ^

Antaŭ ol komencado komenciĝas, ni devas kompreni kiel la stokado en LXD estas logike aranĝita.

Stokado (stokado) konsistas de unu aŭ pli Stokado Naĝejo kiu uzas unu el la subtenataj dosiersistemoj kiel ZFS, BTRFS, LVM aŭ regulajn dosierujojn. Ĉiu Stokado Naĝejo estas dividita en volumojn (Stokada Volumo) kiuj enhavas bildojn, ujojn aŭ datumojn por aliaj celoj.

  • Bildoj - ĉi tiuj estas speciale kunmetitaj distribuaĵoj sen la Linukso-kerno kaj haveblaj de eksteraj fontoj
  • Ujoj - ĉi tiuj estas deplojitaj distribuaĵoj el bildoj, pretaj por uzo
  • Momentfotoj - ĉi tiuj estas momentfotoj de la stato de ujoj al kiuj vi povas reveni

Bazaj trajtoj de LXD - Linuksaj ujsistemoj

Por administri stokadon en LXD, uzu la komandon lxc storage atestilo por kiu vi povas akiri specifante la ŝlosilon - lxc storage --help

La sekva komando montras liston de ĉiuj Stokado Naĝejo en LXD-stokado:

lxc storage list

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

Por vidi liston de ĉiuj Stokada Volumo en la elektita Stokado Naĝejo servas la teamon 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       |
+-----------+----------------------------------+-------------+---------+

Ankaŭ, se por Stokado Naĝejo Dum kreado, la dosiersistemo BTRFS estis elektita, tiam ricevu liston Stokada Volumosubvolumoj en la BTRFS-interpreto, vi povas uzi la ilaron de ĉi tiu dosiersistemo:

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

Komencante LXD ^

Antaŭ krei kaj uzi ujojn, vi devas plenumi ĝeneralan LXD-komencigon, kiu kreas kaj agordas la reton kaj stokadon. Ĉi tio povas esti farita mane uzante normajn klientkomandojn kiuj estas haveblaj en la listo per vokado de la komando lxc --help aŭ uzante la komencan sorĉiston lxd init respondante kelkajn demandojn.

Elektante dosiersistemon por Stokado ^

Dum pravalorigo, LXD demandas plurajn demandojn, inkluzive determini la dosiersisteman tipon por la defaŭlta Stokado Naĝejo. Defaŭlte, la dosiersistemo BTRFS estas elektita por ĝi. Estos neeble ŝanĝi al alia FS post kreado. Por elekti FS ĝi estas sugestita trajto kompara tablo:

trajto
Gvidlibro
Btrfs
LVM
ZFS
CEPH

Optimumigita bildstokado
ne
jes
jes
jes
jes

Optimumigita kreado de petskriboj
ne
jes
jes
jes
jes

Optimumigita kreado de momentfoto
ne
jes
jes
jes
jes

Optimumigita transdono de bildoj
ne
jes
ne
jes
jes

Optimumigita kazo-translokigo
ne
jes
ne
jes
jes

Kopiu sur skribu
ne
jes
jes
jes
jes

Bloko bazita
ne
ne
jes
ne
jes

Tuja klonado
ne
jes
jes
jes
jes

Stoka ŝoforo uzebla ene de ujo
jes
jes
ne
ne
ne

Restarigi de pli malnovaj momentfotoj (ne plej novaj)
jes
jes
jes
ne
jes

Stokaj kvotoj
jes (*)
jes
jes
jes
ne

Komencante la reton kaj Stokadon uzante la sorĉiston ^

La sekva komando, kiun ni rigardos, sugestas agordi la ĉefajn komponantojn de LXD respondante simplajn demandojn per la komenca sorĉisto.

Rulu komandon lxc init kaj enigu la respondojn al la demandoj post la dupunkto kiel montrite en la suba ekzemplo aŭ ŝanĝu ilin laŭ viaj kondiĉoj:

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

Kreante plian Stokan Poolon ^

En la antaŭa paŝo ni kreis Stokado Naĝejo kiu ricevis la nomon ssdpool kaj kies dosiero troviĝas en mia sistemo ĉe /var/lib/lxd/disks/ssdpool.img. Ĉi tiu dosiersistema adreso respondas al la fizika SSD-disko en mia komputilo.

La sekvaj agoj, por pligrandigi komprenon de la rolo ludita de Stokado Naĝejo en la deponejo, ni kreos duan Stokado Naĝejo kiu estos fizike lokita sur malsama speco de disko, HDD. La problemo estas, ke LXD ne permesas vin krei Stokado Naĝejo ekster adreso /var/lib/lxd/disks/ kaj eĉ simbolaj ligiloj ne funkcios, vidu la respondon de la programisto. Ni povas preteriri ĉi tiun limigon dum inicialigo/formatado Stokado Naĝejo specifigante la valoron kiel blokan aparaton anstataŭ la vojon al la loopback dosiero specifante ĉi tion en la ŝlosilo source.

Do, antaŭ krei Stokado Naĝejo vi devas difini loopback-dosieron aŭ ekzistantan subdiskon en via dosiersistemo, kiun ĝi uzos. Por fari tion, ni kreos kaj uzos dosieron, kiun ni limigos en grandeco 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

Ni konektu la loopback dosieron al senpaga loopback aparato:

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

/dev/loop1

Dankon al la ŝlosilo --show plenumante la komandon revenas al la ekrano la nomon de la aparato, en kiu nia loopback-dosiero estas konektita. Se necese, ni povas montri liston de ĉiuj okupataj aparatoj de ĉi tiu tipo por certigi, ke niaj agoj estas ĝustaj:

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

El la listo vi povas trovi ke la aparato havas /dev/loop1 loopback dosiero inkluzivita /mnt/work/lxd/hddpool.img, kaj en la aparato /dev/loop0 loopback dosiero inkluzivita /var/lib/lxd/disks/ssdpool.img kiu respondas al la defaŭlta Stokado Naĝejo.

La sekva komando kreas novan Stokado Naĝejo en LXD bazita sur la loopback dosiero kiun ni ĵus preparis. LXD formatos la loopback dosieron /mnt/work/lxd/hddpool.img en la aparato /dev/loop1 por la BTRFS-dosiersistemo:

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

Ni montru liston de ĉiuj Stokado Naĝejo ekrani:

lxc storage list

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

Pliigante la Grandecon de Stokado ^

Post kreado Stokado Naĝejo, se necese, ĝi povas esti vastigita. Por Stokado Naĝejo surbaze de la dosiersistemo BTRFS, rulu la jenajn komandojn:

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

Aŭtomata enmeto de loopback dosiero en loopback aparato fendo ^

Ni havas unu malgrandan problemon, kiam oni rekomencas la gastigan sistemon, la dosieron /mnt/work/lxd/hddpool.img "flugos" el la aparato /dev/loop1 kaj la LXD-servo kraŝos dum ŝarĝo ĉar ĝi ne vidos ĝin en ĉi tiu aparato. Por solvi ĉi tiun problemon, vi devas krei sisteman servon, kiu enigos ĉi tiun dosieron en la aparaton /dev/loop1 kiam la gastiga sistemo ekfunkciigas.

Ni kreu unuo dosiertipo servo в /etc/systemd/system/ por la inicialigsistemo 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

Aktivigu la servon:

sudo systemctl enable lxd-hddpool

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

Post rekomenco de la gastiga sistemo, ni kontrolas la servostaton:

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

De la eligo ni povas kontroli ke la servo stato estas aktiva, malgraŭ la fakto, ke la ekzekuto de nia skripto de unu komando estis finita, la opcio permesis al ni fari ĉi tion RemainAfterExit=true.

Sekureco. Privilegioj de ujo ^

Ĉar ĉiuj ujprocezoj efektive funkcias izole sur la gastiga sistemo uzante ĝian kernon, por plue protekti la aliron de ujprocezoj al la gastiga sistemo, LXD ofertas procezprivilegion, kie:

  • Privilegiaj Ujoj - ĉi tiuj estas ujoj en kiuj procezoj kun UID kaj GID respondas al la sama posedanto kiel en la gastiga sistemo. Ekzemple, procezo kuranta en ujo kun UID de 0 havas ĉiujn samajn alirrajtojn kiel procezo sur la gastiga sistemo kun UID de 0. Alivorte, la radika uzanto en la ujo havas ĉiujn rajtojn ne nur en la ujo, sed ankaŭ sur la gastiga sistemo se li povas iri ekster la izolita nomspaco de la ujo.

  • Senprivilegiaj ujoj - ĉi tiuj estas ujoj en kiuj procezoj apartenas al la posedanto de la UID kaj GID kun nombro de 0 ĝis 65535, sed por la gastiga sistemo la posedanto estas maskita uzante la aldonitajn SubUID kaj SubGID-bitojn, respektive. Ekzemple, uzanto kun UID=0 en ujo estos vidita sur la gastiga sistemo kiel SubUID + UID. Tio protektas la gastigan sistemon ĉar se iu procezo en la ujo povas eviti sian izolitan nomspacon, ĝi povas nur komuniki kun la gastiga sistemo kiel procezo kun nekonata, tre alta UID/GID.

Defaŭlte, lastatempe kreitaj ujoj havas neprivilegian statuson kaj tial ni devas difini SubUID kaj SubGID.

Ni kreu du agordajn dosierojn en kiuj ni starigos la maskon por SubUID kaj SubGID, respektive:

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

Por apliki la ŝanĝojn, la servo LXD devas esti rekomencita:

sudo systemctl restart lxd

Kreante virtualan retan ŝaltilon ^

Ĉar ni antaŭe pravigis la reton per la komenca sorĉisto lxd init kaj kreis retan aparaton lxdbr0, tiam en ĉi tiu sekcio ni simple konatiĝos kun retoj en LXD kaj kiel krei virtualan ŝaltilon (ponton) per la klienta komando.

La sekva diagramo montras kiel ŝaltilo (ponto) ligas la gastiganton kaj ujojn en reton:

Bazaj trajtoj de LXD - Linuksaj ujsistemoj

Ujoj povas komuniki per reto kun aliaj ujoj aŭ la gastiganto sur kiu tiuj ujoj estas servataj. Por fari tion, vi devas ligi la virtualajn retajn kartojn de la ujoj per virtuala ŝaltilo. Ni unue kreos ŝaltilon, kaj la retaj interfacoj de la ujo estos ligitaj en postaj ĉapitroj, post kiam la ujo mem estas kreita.

La sekva komando kreas ŝaltilon kun subreto 10.0.5.0/24 kaj IPv4-adreso 10.0.5.1/24, kaj ankaŭ inkluzivas ipv4.nat por ke ujoj povu aliri la Interreton per la gastiganto uzante la NAT-servon:

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

Kontrolante la liston de retaj aparatoj disponeblaj en LXD:

lxc network list

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

Vi ankaŭ povas kontroli, ke reto-aparato estas kreita per la norma ilo de la Linuksa distribuo - ip linkip 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

Agorda Profilo ^

Ĉiu ujo en LXD havas sian propran agordon kaj povas etendi ĝin per tutmonde deklaritaj agordoj nomitaj agordaj profiloj. Apliki agordajn profilojn al ujo havas kaskadan modelon, la sekva ekzemplo montras tion:

Bazaj trajtoj de LXD - Linuksaj ujsistemoj

En ĉi tiu ekzemplo, tri profiloj estis kreitaj en la LXD-sistemo: default, hddpool и hostfs. Ĉiuj tri profiloj estas aplikataj al ujo, kiu havas lokan agordon (griza areo). Profilo default havas aparaton root kiu havas parametron pool estas egala ssdpool, sed danke al la kaskada agorda aplika modelo, ni povas apliki profilon al la ujo hddpool kiu havas parametron pool superregos la saman parametron de la profilo default kaj la ujo ricevos la aparatan agordon root kun parametro pool egala hddpool, kaj la profilon hostfs simple aldonas novan aparaton al la ujo.

Por vidi la liston de disponeblaj agordaj profiloj, uzu la jenan komandon:

lxc profile list

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

Kompleta listo de disponeblaj komandoj por labori kun profilo povas esti akirita aldonante la ŝlosilon --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

Redaktante vian profilon ^

Defaŭlta agorda profilo default ne havas retkartan agordon por la ujo kaj ĉiuj nove kreitaj ujoj ne havas reton, por ili necesas krei lokajn (dediĉitajn) retajn aparatojn per aparta komando, sed ni povas krei tutmondan retan aparaton en la agordo. profilon kiu estos dividita inter ĉiuj ujoj uzante ĉi tiun profilon. Tiel, tuj post la komando krei novan ujon, ili havos reton kun retaliro. Samtempe, ne ekzistas limigoj; ni ĉiam povas krei lokan retan aparaton poste se necese.

La sekva komando aldonos la aparaton al la agorda profilo eth0 tipo nic konektita al la reto lxdbr0:

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

Gravas noti, ke ĉar ni efektive aldonis la aparaton al la agorda profilo, se ni specifis statikan IP-adreson en la aparato, tiam ĉiuj ujoj, kiuj uzos ĉi tiun profilon, dividos la saman IP-adreson. Se necesas krei ujon kun statika IP-adreso asignita por la ujo, tiam vi devus krei retan aparaton agordon ĉe la ujnivelo (loka agordo) kun la IP-adresa parametro, kaj ne ĉe la profilnivelo.

Ni kontrolu la profilon:

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

En ĉi tiu profilo ni povas vidi, ke por ĉiuj nove kreitaj ujoj estos kreitaj du aparatoj:

  • eth0 — Tipo de aparato nic konektita al ŝaltilo (retoponto) lxdbr0
  • root — Tipo de aparato disk kiu uzas stokejon ssdpool

Kreante novajn profilojn ^

Por uzi antaŭe kreitan Stokado Naĝejo ujoj, kreu agordan profilon ssdroot en kiu ni aldonos aparaton kiel disk kun montopunkto / (radiko) uzante la antaŭe kreitan Stokado Naĝejo - ssdpool:

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

Simile, ni kreas aparaton kiel disk, sed ĉi-kaze uzante Stokado Naĝejo - hddpool:

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

Kontrolante agordajn profilojn:

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

Bilddeponejo ^

Ujoj estas kreitaj el bildoj kiuj estas speciale kunmetitaj distribuaĵoj kiuj ne havas Linuksan kernon. Tial, antaŭ ol ruli la ujon, ĝi devas esti deplojita de ĉi tiu bildo. La fonto de bildoj estas loka deponejo en kiu bildoj estas elŝutitaj de eksteraj deponejoj.

Foraj bildaj deponejoj ^

Defaŭlte, LXD estas agordita por ricevi bildojn de tri foraj fontoj:

  • ubuntu: (por stabilaj Ubuntu-bildoj)
  • ubuntu-ĉiutaga: (por ĉiutagaj Ubuntu-bildoj)
  • bildoj: (por aro da aliaj distribuaĵoj)

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    |
+-----------------+------------------------------------------+--------+--------+

Ekzemple, deponejo ubuntu: havas la sekvajn bildojn:

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  |
+----------------------------------------------+--------------+----------+------------+

Por montri limigitan nombron da kolumnoj ni uzis la opcion -c kun parametroj dasut, kaj ankaŭ limigis la longecon de la listo per la komando head.

Filtrilo disponeblas por montri liston de bildoj. La sekva komando listigos ĉiujn disponeblajn distribuajn arkitekturojn 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        |
+------------------------------+--------------------------------------+--------------+

Loka bilddeponejo ^

Por komenci uzi la ujon, vi devas aldoni bildon de la tutmonda deponejo al la loka local:. Nun la loka deponejo estas malplena, la komando certigos pri tio lxc image list. Se la metodo list ne specifu deponejon, tiam la loka deponejo estos uzata defaŭlte - local:

lxc image list local:

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

Bildoj en la deponejo estas administritaj per la sekvaj metodoj:

teamo
Priskribo

lxc bildo alias
Administri bildajn kaŝnomojn

lxc bildo kopii
Kopiu bildojn inter serviloj

lxc bildo forviŝi
Forigi bildojn

lxc bildo redakti
Redaktu bildopropraĵojn

lxc bildo eksportado
Eksportu kaj elŝutu bildojn

lxc bildo importado
Importu bildojn en la bildbutikon

lxc bildo info
Montru utilajn informojn pri bildoj

lxc bildo listo
Listo de bildoj

lxc bildo refreŝigi
Refreŝigi bildojn

lxc bildo spektaklo
Montru bildajn proprietojn

Kopiu la bildon al la loka deponejo de la tutmonda images::

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

Image copied successfully!

Ni montru liston de ĉiuj bildoj nuntempe disponeblaj en la loka deponejo local::

lxc image -c lfdatsu list local:

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

LXD-agordo ^

Krom la interaga reĝimo, LXD ankaŭ subtenas ne-interaga agorda instala reĝimo, jen kiam la agordo estas specifita en formo de YAML-dosiero, speciala formato, kiu ebligas instali la tutan agordon samtempe, preterirante la ekzekuton. de multaj interagaj komandoj, kiuj estis diskutitaj supre en ĉi tiu artikolo, inkluzive de reta agordo, kreado de agordaj profiloj, ktp. Ni ne kovros ĉi tiun areon ĉi tie, vi povas kontroli ĝin memstare. en dokumentado.

Sekva interaga komando lxc config kiun ni rigardos permesas al vi agordi la agordon. Ekzemple, por certigi, ke elŝutitaj bildoj al la loka deponejo ne estas aŭtomate ĝisdatigitaj de la tutmondaj deponejoj, ni povas ebligi ĉi tiun konduton per la sekva komando:

lxc config set images.auto_update_cached=false

Krei kaj administri ujon ^

Por krei ujon uzu la komandon lxc init al kiu valoroj estas transdonitaj репозиторий:образ kaj tiam la deziratan identigilon por la ujo. La deponejo povas esti specifita kiel loka local: same estas iu ajn tutmonda. Se la deponejo ne estas specifita, tiam defaŭlte la loka deponejo estas uzata por serĉi la bildon. Se la bildo estas specifita el la tutmonda deponejo, tiam la bildo unue estos elŝutita al la loka deponejo kaj poste uzata por krei la ujon.

Ni rulu la sekvan komandon por krei nian unuan ujon:

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

Ni rigardu la komandklavojn, kiujn ni uzas ĉi tie en ordo:

  • alpine3 — Kaŝnomo (kaŝnomo) estas specifita por la bildo, kiu antaŭe estis alŝutita al la loka deponejo. Se la kaŝnomo ne estis kreita por ĉi tiu bildo, tiam vi ĉiam povas rilati al la bildo per ĝia Fingerprint kiu estas montrata en la tabelo.
  • alp — Agordas la identigilon por la ujo
  • --storage — Ĉi tiu klavo indikas en kiu Stokado Naĝejo ujo estos kreita
  • --profile — Ĉi tiuj klavoj kaskadas aplikas agordon de antaŭe kreitaj agordaj profiloj al la ujo

Ni lanĉas la ujon, kiu komencas lanĉi la init-sistemon de la distribuo:

lxc start alp

Vi ankaŭ povas uzi la komandon lxc launch kiu permesas vin kombini teamojn lxc init и lxc start en unu operacio.

Kontrolante la staton de la ujo:

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

Kontrolante la ujan agordon:

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

En la sekcio profiles ni povas certigi, ke ĉi tiu ujo uzas du agordajn profilojn − default и hddroot. En sekcio devices ni povas nur detekti unu aparaton ĉar la reto-aparato estis kreita ĉe la profilnivelo default. Por vidi ĉiujn aparatojn uzatajn de la ujo, vi devas aldoni ŝlosilon --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: ""

Agordi statikan IP-adreson ^

Se ni provas agordi IP-adreson por reta aparato eth0 teamo lxc config device set alp destinita por la ujo-agordo, tiam ni ricevos eraron, kiu informos, ke la aparato ne ekzistas ĉar la aparato eth0 kiu estas uzata de la ujo apartenas al la profilo default:

lxc config device set alp eth0 ipv4.address 10.0.5.5

Error: The device doesn't exist

Ni povas kompreneble agordi statikan IP-adreson por eth0 aparatoj en la profilo, sed estos la sama por ĉiuj ujoj, kiuj uzos ĉi tiun profilon. Tial, ni aldonu aparaton dediĉitan al la ujo:

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

Tiam vi devas rekomenci la ujon:

lxc restart alp

Se ni rigardas la ujan agordon nun, ni ne bezonas uzi la opcion --expanded por vidi la retan aparaton eth0, ĉar ni kreis ĝin ĉe la ujo-nivelo kaj ĝi kaskadis super la sama aparato de la profilo 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: ""

Forigante ujon ^

Por forigi ujon, uzu la komandon lxc delete, sed antaŭ ol forigi la ujon, ĝi devas esti ĉesigita per la komando lxc stop:

lxc stop alp

lxc list

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

Post kiam ni kontrolis, ke la stato de la ujo fariĝis STOPPED, ĝi povas esti forigita de Stokado Naĝejo:

lxc delete alp

Aliro al ujo ^

Por ekzekuti komandojn en ujo rekte, preterirante retajn konektojn, uzu la komandon lxc exec kiu efektivigas komandojn en la ujo sen lanĉi la sisteman ŝelon. Se vi bezonas ekzekuti komandon en ŝelo uzante ŝemajn ŝablonojn kiel variablojn, dosierajn alidirektojn (pipo), ktp., tiam vi devas eksplicite lanĉi la ŝelon kaj pasi la komandon kiel ŝlosilon, ekzemple:

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

La komando uzis specialan eskapan signon por speciala karaktero $ tiel ke la variablo $HOME ne estis interpretita sur la gastiga maŝino, sed estis interpretita nur ene de la ujo.

Eblas ankaŭ komenci la interagan ŝelreĝimon, kaj poste fini la sesion per ekzekuto de klavoklavo CTRL+D:

lxc exec alp -- /bin/sh

Administrado de uja rimedo ^

En LXD, vi povas administri ujajn rimedojn uzante specialan aron de agordo. Kompleta listo de uj-agordaj parametroj troveblas en dokumentado.

RAM-rimeda limigo ^

Parametro limits.memory limigas la kvanton de RAM disponebla al la ujo. La valoro estas nombro kaj unu el disponeblaj sufiksoj.

Ni agordu la RAM-limon de la ujo al 256 MB:

lxc config set alp limits.memory 256MB

Ankaŭ ekzistas aliaj parametroj por limigi memoron:

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

teamo lxc config show permesas al vi montri la tutan ujan agordon, inkluzive de la aplikata rimeda limo, kiu estis agordita:

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

CPU-rimeda limo ^

Estas pluraj manieroj limigi CPU-resursojn. specoj de limigoj:

  • limit.cpu - ligas ujon al unu aŭ pluraj CPU-kernoj
  • limits.cpu.allowance - administras aŭ CFS-horarkvotojn kiam la tempolimo pasis, aŭ la universalan CPU-remecan dividan mekanismon kiam la procento pasis
  • limits.cpu.priority - prioritato pri horaro kiam pluraj okazoj kundividantaj aron da procesoroj ricevas la saman procenton de procesoroj

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

Limigo de diskspaco ^

Krom limigoj tiaj limits.read, limits.write ni ankaŭ povas limigi la kvanton da diskospaco konsumita de la ujo (nur funkcias kun ZFS aŭ BTRFS):

lxc config device set alp root size=2GB

Post instalado, en la parametro devices.root.size Ni povas kontroli la fiksitan limon:

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

Por vidi la uzatajn diskokvotojn ni povas ricevi de la komando 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

Malgraŭ tio, ke ni starigis limon por la radika aparato de la ujo al 2GB, sistemaj utilecoj kiel ekzemple df ne vidos ĉi tiun limigon. Por fari tion, ni faros malgrandan provon kaj ekscios kiel ĝi funkcias.

Ni kreu 2 novajn identajn ujojn en la sama Stokado Naĝejo (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         |
+------+---------+------------------+------+-----------+-----------+

Ni kreu 1GB-dosieron en unu el la ujoj:

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

Ni certigu, ke la dosiero estas kreita:

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

Se ni rigardas en la dua ujo, kontrolu la ekziston de dosiero en la sama loko, tiam ĉi tiu dosiero ne estos tie, kio estas atendita, ĉar ujoj estas kreitaj en sia propra Stokada Volumo en la sama Stokado Naĝejo:

lxc exec alp2 -- ls -lh
total 0

Sed ni komparu la valorojn, kiujn ĝi produktas df sur unu kaj la alia ujo:

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

Aparato /dev/loop1 muntita kiel la radikdisko estas Stokado Naĝejo kiun ĉi tiuj ujoj uzas, do ili dividas ĝian volumenon inter du.

Statistiko pri konsumo de rimedoj ^

Vi povas vidi statistikojn pri konsumo de rimedoj por ujo uzante la komandon:

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

Laborante kun momentfotoj ^

LXD havas la kapablon krei momentfotojn kaj restarigi la ujan staton de ili.

Por krei momentfoton, rulu la jenan komandon:

lxc snapshot alp snapshot1

La teamo lxc snapshot neniu ŝlosilo disponebla list, do, por vidi la liston de momentfotoj vi devas uzi la komandon kiu montras ĝeneralajn informojn pri la ujo:

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

Vi povas restarigi ujon de momentfoto uzante la komandon lxc restore precizigante la ujon por kiu la restarigo estos farita kaj la momentfoto-kaŝnomo:

lxc restore alp snapshot1

La sekva komando estas uzata por forigi momentfoton. Bonvolu noti, ke la komanda sintakso ne similas al ĉiuj aliaj; ĉi tie vi devas specifi antaŭan oblikvon post la ujo-nomo. Se la oblikvo estas preterlasita, tiam la komando por forigi momentfoton estas interpretita kiel komando por forigi ujon!

lxc delete alp/snapshot1

En la supra ekzemplo, ni rigardis tiel nomatajn sennaciajn momentfotojn. LXD havas alian specon de momentfotoj - stateful, kiu savas la nunan staton de ĉiuj procezoj en la ujo. Estas kelkaj interesaj kaj utilaj funkcioj asociitaj kun ŝtataj momentfotoj.

Kio alia? ^

  • Modulo disponeblas por programistoj de Python PyLXD kiu disponigas API al LXD

ĜISDATIGO 10.04.2020/15/00 XNUMX:XNUMX: Aldonita navigado

fonto: www.habr.com

Aldoni komenton