
LXD — bu, növbəti nəsil konteyner meneceri sistemidir . O, virtual maşınları xatırladan bir istifadəçi interfeysi təqdim edir, lakin bunun əvəzinə Linux konteynerləri istifadə edir.
LXD nüvəsi — bu, yerli unix soketi vasitəsilə və müvafiq konfiqurasiya qurulsa, şəbəkə vasitəsilə REST API təqdim edən bir icazəli dəmordur (root hüquqları ilə işləyən xidmət). LXD ilə təmin edilən komandalar alətləri bu REST API vasitəsilə sorğu göndərir. Bu, yerli ev sahibi ilə və ya uzaqda əlaqə qurursunuzsa, hər şeyin eyni şəkildə işlədiyini göstərir.
Bu məqalədə biz LXD-nin konsepsiyalarına dərindən toxunmayacağıq, sənədlərdə əksini tapmış bütün imkanları, daxil olmaqla son versiyalarda QEMU virtual maşınlarının konteynerlərlə paralel dəstəklənməsini müzakirə etməyəcəyik. Bunun əvəzinə, yalnız konteynerlərin idarə olunması ilə bağlı əsas imkanları öyrənəcəyik — anbar yığınları quracağıq, şəbəkələr yaradacağıq, konteyneri işə salacağıq, resurs limitlərini tətbiq edəcəyik və konteynerləri Linux-da istifadə etməyinizi asanlaşdırmaq üçün snapshotlardan necə istifadə edəcəyimizi araşdıracağıq.
Tam məlumat üçün rəsmi mənbəyə müraciət edin:
Navigasiya
LXD quraşdırılması
Ubuntu paylamalarında LXD quraşdırılması
Ubuntu 19.10 paylamasında paket lxd bununla :
apt search lxd
lxd/eoan 1:0.7 all
Transitional package - lxd -> snap (lxd)Bu, eyni anda iki paket quraşdırılacaq deməkdir, biri sistem paketi, digəri isə snap-paketdir. Sistemdə iki paket quraşdırılması, sistem paketi snap-paket meneceri tərəfindən silindiyi zaman orfoz hala gələ bilər.
Paket tapmaq lxd snap-anbarında aşağıdakı əmrlə tapıla bilər:
snap tap lxd
Ad Versiya Qısa məlumat
lxd 3.21 Sistem konteyner meneceri və API
lxd-demo-server 0+git.6d54658 LXD istifadə edərək onlayn proqram demosu seansları
nova ocata OpenStack Hesablama Xidməti (nova)
nova-hypervisor ocata OpenStack Hesablama Xidməti - KVM Hypervisor (nova)
distrobuilder 1.0 LXC və LXD üçün görüntü yaratma aləti
fabrica 0.1 Veb formasına yönəldərək sadəcə snəplar qurun...
satellite 0.1.2 İrəliləyən miqyaslana bilən açıq mənbəli intellekt platformasıKomandayı işə salmaqla list paketin lxd hələ quraşdırılmadığını təsdiqləyə bilərik:
snap list
Ad Versiya Rev İzləmə Nəşr edən Qeydlər
core 16-2.43.3 8689 stabil canonical✓ coreLXD snəplə paket olsa da, onu sistem paketi vasitəsilə quraşdırmaq lazımdır lxd, bununla sistemdə uyğun bir qrup yaradılacaq, lazım olan utilitlər ilə /usr/bin və s.
sudo apt update
sudo apt install lxdSnəp-paket kimi quraşdırıldığını təsdiqləyək:
snap list
Ad Versiya Rev İzləmə Nəşr edən Qeydlər
core 16-2.43.3 8689 stabil canonical✓ core
lxd 3.21 13474 stabil/… canonical✓ -Arch Linux paylamalarında LXD quraşdırılması
Sistemdə LXD paketini quraşdırmaq üçün aşağıdakı komandaları yerinə yetirmək lazımdır, birincisi — repozitoriyalarda mövcud olan paketlərin siyahısını yeniləyir, ikincisi — paketi birbaşa quraşdırır:
sudo pacman -Syyu && sudo pacman -S lxdPaketi quraşdırdıqdan sonra, LXD-ni adi istifadəçi ilə idarə etmək üçün onu sistem qrupuna daxil etmək lazımdır lxd:
sudo usermod -a -G lxd user1İstifadəçini user1 qruplara daxil edildiyini təsdiqləyək lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxdƏgər qrup siyahıda görünmürsə, o zaman istifadəçi sessiyasını yenidən aktivləşdirmək lazım olacaq. Bunun üçün bu eyni istifadəçi ilə sistemdən çıxıb yenidən daxil olun. lxd LXD servisini sistem başladığında yüklenmək üçün aktivləşdirək:
sudo systemctl enable lxd systemd sudo systemctl start lxd
Servisin vəziyyətini yoxlayaq:Xidməti işə salırıq:
sudo systemctl status lxdİnitializasyondan əvvəl, LXD-də depolamanın necə qurulduğuna başa düşmək lazım olacaq.
Depolama (LXD Anbarı (Storage)
Storage
bir və ya bir neçədepolama) bir neçəsini istifadə edərək birini dəstəklənən fayl sistemləri kimi ZFS, BTRFS, LVM və ya adi direktoriyalar. Hər Saxlama İçi hissəsi cildlərə ( Saxlama İçi Storage Volume) bölünür ki, bunlar görüntüləri, konteynerləri və ya digər məqsədlər üçün məlumatları saxlayır.— Linux nüvəsi olmayan xüsusi toplanmış distribyutlardır və xarici mənbələrdən mövcuddur
- Şəkillər — işləməyə hazır görüntülərdən yerləşdirilmiş distribyutlardır
- Konteynerlər Snapshotlar
- — geri dönə biləcəyiniz konteynerlərin vəziyyət şəkilləridir. Depolamanı LXD-da idarə etmək üçün

lxc storage komandası var, ona kömək üçün soruşa bilərsiniz: lxc storage --help Aşağıdakı komanda, LXD depolamasındakı bütün
siyahısını ekranda göstərir: Saxlama İçi lxc storage list+---------+-------------+--------+--------------------------------+---------+ | AD | TƏSVİR | İDARƏÇİ | MƏNBƏ | İSTİFADƏ EDİLİR | +---------+-------------+--------+--------------------------------+---------+ | hddpool | | btrfs | /dev/loop1 | 2 | +---------+-------------+--------+--------------------------------+---------+ | ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 | +---------+-------------+--------+--------------------------------+---------+
Seçilmişüçün bütün ) bölünür ki, bunlar görüntüləri, konteynerləri və ya digər məqsədlər üçün məlumatları saxlayır. siyahısını görün Saxlama İçi lxc storage volume list lxc saxlama həcmi siyahısı:
lxc saxlama həcmi siyahısı hddpool
+-------+----------------------------------+-------------+---------+
| TIP | AD | TƏSVİR | İSTİFADƏ EDİLİR |
+-------+----------------------------------+-------------+---------+
| image | ebd565585223487526ddb3607f515... | | 1 |
+-------+----------------------------------+-------------+---------+lxc saxlama həcmi siyahısı ssdpool
+-----------+----------------------------------+-------------+---------+
| TIP | AD | TƏSVİR | İSTİFADƏ EDİLİR |
+-----------+----------------------------------+-------------+---------+
| konteyner | alp3 | | 1 |
+-----------+----------------------------------+-------------+---------+
| konteyner | jupyter | | 1 |
+-----------+----------------------------------+-------------+---------+
| image | ebd565585223487526ddb3607f515... | | 1 |
+-----------+----------------------------------+-------------+---------+Həmçinin, əgər Saxlama İçi yaradılarkən BTRFS fayl sisteminin seçilməsi halında, siyahını əldə etmək üçün ) bölünür ki, bunlar görüntüləri, konteynerləri və ya digər məqsədlər üçün məlumatları saxlayır. və subvolumes BTRFS'in anlayışında bu fayl sisteminin alətləri vasitəsilə əldə edilə bilər:
sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/hddpool
ID 257 gen 818 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3sudo 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/alp3LXD-ni başlayan
Konteynerlər yaradılmadan və istifadədən əvvəl LXD-nin ümumi ilkinizasiyası həyata keçirilməlidir, bu şəbəkəni və eyni zamanda saxlama yerini yaradıb konfiqurasiya edir. Bu, standart müştəri komandaları vasitəsilə əl ilə edilə bilər, bunlar komanda çağırışı ilə mövcuddur lxc --help və ya ilkinizasiya ustası vasitəsilə lxd init bir neçə suala cavab verərək.
Anbar yığını üçün fayl sisteminin seçilməsi
LXD ilkinizasiyası zamanı bir neçə sual verilir, bunlar arasında defolt üçün fayl sisteminin tipi müəyyən edilməlidir. Saxlama İçiDefolt olaraq BTRFS fayl sistemi seçilir. Yaradıldıqdan sonra başqasına keçmək mümkün olmayacaq. Fayl sistemini seçmək üçün :
Xüsusiyyət
Kataloq
Btrfs
LVM
diskin qalan sahəsinə bölmə əlavə edirik
CEPH
Optimallaşdırılmış görüntü saxlama
no
yes
yes
yes
yes
Optimallaşdırılmış nümunə yaradılması
no
yes
yes
yes
yes
Optimallaşdırılmış snapshot yaradılması
no
yes
yes
yes
yes
Optimallaşdırılmış görüntü köçürməsi
no
yes
no
yes
yes
Optimallaşdırılmış nümunənin köçürülməsi
no
yes
no
yes
yes
Yazılış zamanı kopyala
no
yes
yes
yes
yes
Blok əsaslı
no
no
yes
no
yes
Ani klonlama
no
yes
yes
yes
yes
Konteynerin içində istifadə edilə bilən saxlama sürücüsü
yes
yes
no
no
no
Köhnə snapshot-lardan geri qayıtma (ən son deyil)
yes
yes
yes
no
yes
Saxlama kvotaları
bəli(*)
yes
yes
yes
no
Maqistar vasitəsilə şəbəkə və Anbar yığını başlama
Növbəti müzakirə edəcəyimiz komanda, sadə suallara cavab verməklə LXD-nin əsas komponentlərini konfiqurasiya etməyə imkan tanıyır.
Aşağıdakı komandanı yerinə yetirin lxc init və suallara cavabları iki nöqtədən sonra aşağıda göstərildiyi kimi daxil edin və ya onların şərtlərinizə uyğunlaşdırın:
lxd init
LXD klasterlaşdırmasını istifadə etmək istəyirsiniz? (bəli/xeyr) [default=xeyr]:
Yeni saxlama hovuzu konfiqurasiya etmək istəyirsiniz? (bəli/xeyr) [default=bəli]:
Yeni saxlama hovuzunun adı [default=default]: ssdpool
İstifadə olunacaq saxlama arxitekturasının adı (lvm, btrfs, dir) [default=btrfs]:
Yeni BTRFS hovuzu yaratmaq istəyirsiniz? (bəli/xeyr) [default=bəli]:
Mövcud blok cihazına qoşulmaq istəyirsiniz? (bəli/xeyr) [default=xeyr]:
Yeni döngə cihazının ölçüsü (minimum 1GB) [default=15GB]: 10GB
MAAS serverinə qoşulmaq istəyirsiniz? (bəli/xeyr) [default=xeyr]:
Yeni yerli şəbəkə körpüsü yaratmaq istəyirsiniz? (bəli/xeyr) [default=bəli]:
Yeni körpüyə nə ad vermək lazımdır? [default=lxdbr0]:
Hansı IPv4 ünvanı istifadə olunmalıdır? (CIDR subnet notası, “auto” və ya “none”) [default=auto]: 10.0.5.1/24
LXD-nin körpüdə IPv4 trafikini NAT-ediyini istəyirsiniz? [default=bəli]:
Hansı IPv6 ünvanı istifadə olunmalıdır? (CIDR subnet notası, “auto” və ya “none”) [default=auto]: none
LXD-nin şəbəkə üzərindən əlçatan olmasını istəyirsiniz? (bəli/xeyr) [default=xeyr]:
Keçmişdəki keçirilmiş şəkillərin avtomatik yenilənməsini istəyirsiniz? (bəli/xeyr) [default=bəli]: xeyr
“lxd init” öncədən konfiqurasiya edilmiş YAML-ın çıxarılmasını istəyirsiniz? (bəli/xeyr) [default=xeyr]: Əlavə Anbar yığını yaratmaq
Keçmiş mərhələdə biz yaratdıq Saxlama İçi adı verilmiş ssdpool və fayl mənim sistemimdə /var/lib/lxd/disks/ssdpool.imgünvanında yerləşir. Bu fayl sistemi ünvanı mənim PC-də fiziki SSD diskinə uyğundur.
Növbəti addımlar, Saxlama İçi depo içindəki rolunu anlamaq üçün, biz ikinci Saxlama İçi kreat olacaq, bu dəfə HDD-də fiziki olaraq yerləşəcək. Problemi odur ki, LXD Saxlama İçi ünvanın xaricində yaradılmasına imkan vermir /var/lib/lxd/disks/ və hətta simvolik bağlantılar da işləməyəcək, . Bu məhdudiyyəti aşmağa, biz Saxlama İçi yeni bir loopback faylı yaratdıqda ya da formatdığımızda, bu dəyəri blok cihazı kimi təyin edərək, mənbə.
belə bir qiymət verərək. Beləliklə, Saxlama İçi bir loopback faylı ya da mövcud bölməni təyin etmədən, hansı ki, istifadə ediləcək, lazım olacaq. Bunun üçün, biz 10GB ölçüsünü məhdudlaşdıracağıq:
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) kopyalandı, 38,4414 s, 260 MB/sLoopback faylını boş loopback cihazında qoşaq:
sudo losetup --find --show /mnt/work/lxd/hddpool.img
/dev/loop1Komanda, istifadə etdiyimiz loopback-faylının adı göstərilən bir girişlə dönür. Gerekirse, doğru sürüşdürmə üçün bütün işğal olunmuş cihazlar siyahısını göstərə bilərik: losetup -lNAME 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 Siyahıdan görünür ki, cihazda
loopback-faylı qoşulmuşdur, lakin cihazda /dev/loop1 bu, defolt olaraq uyğundur /mnt/work/lxd/hddpool.imgSonrakı komanda, yeni yaradılmış bir /dev/loop0 bu, defolt olaraq uyğundur /var/lib/lxd/disks/ssdpool.img loopback-faylı ilə LXD-də yaradılır. LXD bu loopback faylını Saxlama İçi.
BTRFS fayl sistemi ilə formatlayacaq: Saxlama İçi lxc storage create hddpool btrfs size=10GB source=/dev/loop1 /mnt/work/lxd/hddpool.img Bütün /dev/loop1 siyahısını ekranda göstərəcəyik:
lxc saxlama yaradın hddpool btrfs ölçü=10GB mənbə=\/dev\/loop1Bütünlərin siyahısını Saxlama İçi ekrana çıxardaq:
lxc saxlama siyahısı
+---------+-------------+--------+--------------------------------+---------+
| ADI | TƏSVİR | SÜRÜCÜ | MƏNBƏ | İSTİFADƏ EDİLİB |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 0 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 0 |
+---------+-------------+--------+--------------------------------+---------+Anbar yığının ölçüsünü artırmaq
Yaradıldıqdan sonra Saxlama İçi, lazım gələrsə, onu artırmaq mümkündür. Bunun üçün Saxlama İçi BTRFS fayl sisteminə əsaslanaraq aşağıdakı əmrləri yerinə yetirin:
sudo truncate -s +5G /mnt/work/lxd/hddpool.img
sudo losetup -c /dev/loop1
sudo btrfs filesystem resize max /var/lib/lxd/storage-pools/hddpoolLoopback cihazı slotuna loopback-faylının avtoplazması
Bizim bir kiçik problemimiz var, ev sahibi sistem yenidən başladıqda, fayl /mnt/work/lxd/hddpool.img "çıxacaq" cihazdan /dev/loop1 və LXD xidməti, onu bu cihazda görmədiyi üçün yükləmə zamanı dayanacaq. Bu problemi həll etmək üçün, sistemin yüklənməsi zamanı bu faylı cihaza yerləşdirəcək bir sistem xidməti yaratmaq lazımdır. /dev/loop1 ev sahibi sistem yüklənərkən.
Şimdi bir unit fayl tipi service daxilindədir. /etc/systemd/system/ SystemD üçün ilkin sistem:
cat << EOF | sudo tee -a /etc/systemd/system/lxd-hddpool.service
[Unit]
Description=LXD Saxlama Yığını üçün Losetup (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
EOFXidməti aktiv edirik:
sudo systemctl enable lxd-hddpool
Yaradıldı symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.Ev sahibi sistem yenidən başladıqdan sonra xidmətin statusunu yoxlayırıq:
systemctl status lxd-hddpool.service
● lxd-hddpool.service - LXD Saxlama Yığını üçün Losetup (hddpool)
Yüklənmiş: yüklənmiş (/etc/systemd/system/lxd-hddpool.service; aktiv; tədarükçü təyinatı: deaktiv)
Aktiv: aktiv (çıxmış) 2020-04-08 03:43:53 MSK tarixindən bəri; 1 dəq 37 s əvvəl
Proses: 711 ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img (kod=çıxmış, status=0/UĞUR)
Əsas PID: 711 (kod=çıxmış, status=0/UĞUR)
apr 08 03:43:52 manjaro systemd[1]: LXD Saxlama Yığını (hddpool) başlamaqda...
apr 08 03:43:53 manjaro systemd[1]: LXD Saxlama Yığını (hddpool) tamamlandı.Çıxışdan biz xidmətin statusunun aktiv olduğunu təsdiq edə bilirik, bizim skriptimizin bir komanda ilə yerinə yetirilməsi başa çatmasına baxmayaraq, bu bizə imkan verdi RemainAfterExit=true seçimi.
Təhlükəsizlik. Konteynerlərin imtiyazları
Çünki bütün konteyner prosesləri faktiki olaraq ev sahibi sistemdə onun nüvəsini istifadə edərək izolyasiyada yerinə yetirilir, konteyner proseslərinin ev sahibi sistemə girişini əlavə qorumaq üçün LXD proseslərin imtiyazını təqdim edir, burada:
İmtizaqlı konteynerlər — ev sahibi sistemlə eyni sahib olan UID və GID-yə malik proseslərin olduğu konteynerlərdir. Məsələn, UID 0 olan bir konteynerdə işləyən proses ev sahibi sistemdə UID 0 olan bir proseslə eyni hüquqlara malikdir. Başqa sözlə, konteynerdəki root istifadəçisi yalnız konteynerdə deyil, eyni zamanda ev sahibi sistemdə də bütün hüquqlara sahibdir əgər o, konteynerin izolyasiya olunmuş ad məkanından kənara çıxa bilsə.
İmtizaqsız konteynerlər — bu, UID və GID 0-dan 65535-ə qədər olan sahibinə aid olan proseslərin yerləşdiyi konteynerlərdir, lakin ev sahibi sistemdə sahiblənmə, müvafiq olaraq, əlavə olunan SubUID və SubGID bitləri ilə maskalanır. Məsələn, UID=0 olan istifadəçi konteynerdə ev sahibi sistemdə
SubUID + UID. Bu, ev sahibi sistemi qoruyur, çünki konteynerdə olan hər hansı bir proses izolyasiya olunmuş ad məkanından çıxa bilsə, yalnız tanınmamış, çox yüksək UID/GID ilə ev sahibi sistemlə qarşılıqlı əlaqə qura bilər.
Standart olaraq, yeni yaradılan konteynerlərin imtiyazsız statusu olduğu üçün, SubUID və SubGID-ni müəyyən etməliyik.
SubUID və SubGID üçün uyğun maskanı təyin edəcəyimiz iki konfiqurasiya faylı yaradaq:
sudo touch /etc{/subuid,/subgid}
sudo usermod --add-subuids 1000000-1065535 root
sudo usermod --add-subgids 1000000-1065535 rootDəyişikliklərin tətbiq edilməsi üçün LXD xidməti yenidən başladılmalıdır:
sudo systemctl restart lxdVirtual şəbəkə açarı yaratmaq
Daha əvvəl şəbəkəni başlatma ustası ilə başladığımız üçün lxd init və şəbəkə cihazı yaratdığımız üçün lxdbr0, bu hissədə LXD-nin şəbəkəsi ilə tanış olacağıq və müştəri komandası vasitəsilə virtual keçid (şəbəkə körpüsü) necə yaradılacağını öyrənəcəyik.
Aşağıdakı sxem, keçidin (şəbəkə körpüsü) ev sahibini və konteynerləri şəbəkəyə birləşdirdiyini göstərir:

Konteynerlər, xidmət göstərilən ev sahibi ilə digər konteynerlər arasında şəbəkə vasitəsilə qarşılıqlı əlaqə qura bilərlər. Bunun üçün konteynerlərin virtual şəbəkə kartlarını virtual keçidlə birləşdirmək lazımdır. Əvvəlcə keçidi yaradaq, konteynerin şəbəkə interfeysləri daha sonra yaradıldıqdan sonra birləşdiriləcək.
Aşağıdakı komanda, alt şəbəkə ilə bir keçid yaradır 10.0.5.0/24 və IPv4 ünvanı 10.0.5.1/24, həmçinin ipv4.nat aktiv edir ki, konteynerlər NAT xidməti vasitəsilə ev sahibindən internet əldə edə bilsinlər:
lxc network create lxdbr0 ipv4.address=10.0.5.1/24 ipv4.nat=true ipv6.address=noneLXD-yə mövcud şəbəkə cihazlarının siyahısını yoxlayırıq:
lxc network list
+--------+----------+---------+-------------+---------+
| NAME | TYPE | MANAGED | DESCRIPTION | USED BY |
+--------+----------+---------+-------------+---------+
| eno1 | physical | NO | | 0 |
+--------+----------+---------+-------------+---------+
| lxdbr0 | bridge | YES | | 0 |
+--------+----------+---------+-------------+---------+Həmçinin, şəbəkə cihazının yaradıldığını yoxlamaq üçün Linux distrosunun standart alətindən istifadə edə bilərsiniz — ip link və ip addr:
ip addr
1: lo: 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: 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: 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: 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 0Konfiqurasiya profili
Hər bir konteyner LXD-də özünəməxsus konfiqurasiyaya malikdir və onu qlobal elan edilmiş konfiqurasiyalarla genişləndirmək mümkündür ki, bunlara da konfiqurasiya profillərideyilir. Konfiqurasiya profillərinin konteynerə tətbiqi kaskad modelinə malikdir, aşağıdakı nümunə bunu göstərir:

Bu nümunədə, LXD sistemində üç profil yaradılıb: default, hddpool və hostfs. Bütün üç profil konteynerə tətbiq edilib, burada lokal konfiqurasiya var (boz zona). Profil default bir cihazı root məlumatına malikdir ki, burada parametr pool bərabərdir ssdpool, lakin konfiqurasiyanın kaskad modelinə görə biz konteynerə profil təyin edə bilərik hddpool məlumatına malikdir ki, burada parametr pool bu eyni parametri profilin default üstələsin və konteyner cihazın konfiqurasiyasını root -ni pool bərabər olsa hddpool, profil yalnız konteynerə yeni bir cihaz əlavə edir. hostfs Mövcud konfiqurasiya profillərinin siyahısını görmək üçün aşağıdakı əmr istifadə olunur:
lxc profile list+---------+---------+ | NAME | USED BY | +---------+---------+ | default | 1 | +---------+---------+ | hddroot | 0 | +---------+---------+ | ssdroot | 1 | +---------+---------+
Profil ilə işləmək üçün bütün əmr siyahısını əldə etmək üçünaçarı əlavə edin --help:
lxc profile --help
Təsvir:
Profilləri idarə et
İstifadə:
lxc profile [command]
Mövcud Əmr Kategoriyaları:
add Instansiyalara profillər əlavə et
assign Instansiyalara profil dəstləri təyin et
copy Profilləri kopyala
create Profilləri yarat
delete Profilləri sil
device Instansiya cihazlarını idarə et
edit Profil konfiqurasiyalarını YAML formatında redaktə et
get Profil konfiqurasiya açarları üçün dəyərləri əldə et
list Profilləri siyahıya al
remove Instansiyalardan profilləri sil
rename Profilləri yenidən adlandır
set Profil konfiqurasiya açarlarını təyin et
show Profil konfiqurasiyalarını göstər
unset Profil konfiqurasiya açarlarını ləğv etProfilin redaktə edilməsi
Standart konfiqurasiya profili default konteyner üçün şəbəkə kartı konfiqurasiyası yoxdur və yeni yaradılan konteynerlərin heç biri şəbəkəyə sahib deyil, onların üçün ayrıca yerli (ikinci) şəbəkə cihazları yaratmaq lazımdır, lakin biz konfiqurasiya profilində bütün konteynerlər arasında bölüşməyə imkan verən qlobal şəbəkə cihazı yarada bilərik. Beləliklə, yeni konteyner yaradılması komandasından dərhal sonra onların şəbəkəyə çıxışı olacaq. Bununla belə, hər zaman ehtiyac olarsa, qeyri-məhdud olmağımızla bizim yerli şəbəkə cihazı yaratmağımız mümkündür.
Növbəti komanda konfiqurasiya profilinə cihaz əlavə edəcək eth0 növü nic şəbəkəyə qoşulan lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0Qeyd etmək lazımdır ki, biz faktiki olaraq cihazı konfiqurasiya profilinə əlavə etdiyimiz üçün, əgər cihazda statik IP ünvanı göstərsək, bu profili tətbiq edəcək bütün konteynerlər eyni IP ünvanını paylaşacaq. Əgər konteyner üçün ayrılmış statik IP ünvanı yaratmaq lazımdırsa, o zaman IP ünvanı parametrini istifadə edərək konteyner səviyyəsində (yerli konfiqurasiya) şəbəkə cihazı yaratmalıyıq, profil səviyyəsində deyil.
Profilimizi yoxlayaq:
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: []Bu profildə yeni yaradılan bütün konteynerlər üçün iki cihazın (devices) yaradılacağını görə bilərik:
eth0— Növünicdəstək commutatoru (şəbəkə körpüsü) ilə birləşdirilmişlxdbr0root— Növüpathbu, saxlama hovuzunu istifadə edir.ssdpool
Yeni profillərin yaradılması
Öncə yaradılmış Saxlama İçi konteynerlər üçün konfiqurasiya profili yaradacağıq ssdroot və onunla cihaz növünü əlavə edəcəyik path yalnızca montaj nöqtəsi / (root) daha öncə yaradılmış Saxlama İçi — ssdpool:
lxc profile create ssdroot
lxc profile device add ssdroot root disk path=\ pool=ssdpoolEynilə, biz növü yaradırıq path, lakin bu halda istifadə edir Saxlama İçi — hddpool:
lxc profile create hddroot
lxc profile device add hddroot root disk path=\ pool=hddpoolKonfiqurasiya profillərini yoxlayaq:
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: []Şəkil anbarı
Konteynerlər, Linux nüvəsi olmayan xüsusi hazırlanmış distirbütivlər olan şəkillərdən yaradılır. Beləliklə, konteyneri işə salmadan əvvəl onu bu şəkildən açılmaq lazımdır. Şəkil mənbəyi, xarici repozitoriyalardan şəkillərin yükləndiyi yerli repozitoriyadır.
Uzaq şəkil anbarları
Default olaraq LXD üç uzaq mənbədən şəkil almaq üçün konfiqurasiya olunmuşdur:
- ubuntu: (sabit Ubuntu şəkilləri üçün)
- ubuntu-daily: (gündəlik Ubuntu şəkilləri üçün)
- images: (digər distros üçün bir çox)
lxc remote list
+-----------------+------------------------------------------+--------+--------+
| AD | URL | PUBLIC | STATIC |
+-----------------+------------------------------------------+--------+--------+
| images | https://images.linuxcontainers.org | BƏLİ | XAHİŞ ETMİR |
+-----------------+------------------------------------------+--------+--------+
| yerli (default) | unix:// | XAHİŞ ETMİR | BƏLİ |
+-----------------+------------------------------------------+--------+--------+
| ubuntu | https://cloud-images.ubuntu.com/releases | BƏLİ | BƏLİ |
+-----------------+------------------------------------------+--------+--------+
| ubuntu-daily | https://cloud-images.ubuntu.com/daily | BƏLİ | BƏLİ |
+-----------------+------------------------------------------+--------+--------+Məsələn, depo ubuntu: aşağıdakı imicləri saxlayır:
lxc image -c dasut list ubuntu: | head -n 11
+----------------------------------------------+--------------+----------+------------+
| TƏSVİR | MEMARİ | BOYUT | TİP |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150728) | x86_64 | 153.72MB | KONTEYNER |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150819) | x86_64 | 152.91MB | KONTEYNER |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150906) | x86_64 | 154.69MB | KONTEYNER |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150930) | x86_64 | 153.86MB | KONTEYNER |
+----------------------------------------------+--------------+----------+------------+Məhdud sayda sütun göstərmək üçün biz -c opsiyaları istifadə etdik dasut, həmçinin siyahının uzunluğunu head.
təqdim etdik. Mövcud arxitekturaların siyahısını göstərmək üçün aşağıdakı əmrdən istifadə olunur :
lxc image -c ldast list images:alpine/3.11
+------------------------------+--------------------------------------+--------------+
| ALIAS | TƏSVİR | MEMARİ |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11 (3 daha) | Alpine 3.11 amd64 (20200220_13:00) | x86_64 |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/arm64 (1 daha) | Alpine 3.11 arm64 (20200220_13:00) | aarch64 |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/armhf (1 daha) | Alpine 3.11 armhf (20200220_13:00) | armv7l |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/i386 (1 daha) | Alpine 3.11 i386 (20200220_13:01) | i686 |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/ppc64el (1 daha) | Alpine 3.11 ppc64el (20200220_13:00) | ppc64le |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/s390x (1 daha) | Alpine 3.11 s390x (20200220_13:00) | s390x |
+------------------------------+--------------------------------------+--------------+Yerli şəkil anbarı
Konteyneri istifadə etməyə başlamaq üçün qlobal depodan yerli depoya şəkil əlavə etmək lazımdır yerli:. Hal-hazırda yerli depo boşdur, bunu lxc image listəmri ilə yoxlaya bilərik. Əgər metodun list depo göstərilməzsə, standart olaraq yerli depo istifadə ediləcək — yerli:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | TƏSVİR | MEMARİ | TİP | BOYUT |
+-------+-------------+--------+-------------+--------------+------+------+Depodakı imicləri idarə etmək üçün aşağıdakı metodlardan istifadə olunur:
Əmr
Təsvir
lxc image alias
Şəkil aliaslarını idarə et
lxc image copy
Serverlər arasında imicləri kopyala
lxc image delete
Şəkilləri sil
lxc image redaktə et
Şəkil xüsusiyyətlərini redaktə et
lxc image ixrac et
Şəkilləri ixrac et və yüklə
lxc image idxal
Şəkilləri şəkil anbarına idxal et
lxc image — lazım olan bölmə.
Şəkillər haqqında faydalı məlumat göstərin
lxc image list
Şəkilləri siyahıya alın
lxc image yenilə
Şəkilləri yenilə
lxc image göstər
Şəkil xüsusiyyətlərini göstərin
Məlumat deposuna qlobaldan lokal depozitə şəkil kopyalayıram images::
lxc image copy images:alpine/3.11/amd64 local: --alias=alpine3
Şəkil uğurla kopyalandı!Hazırda lokal depoda mövcud olan bütün şəkillərin siyahısını verək yerli::
lxc image -c lfdatsu list local:
+---------+--------------+------------------------------------+--------------+
| ALIAS | FINGERPRINT | DESCRIPTION | ARCHITECTURE |
+---------+--------------+------------------------------------+--------------+
| alpine3 | 73a3093d4a5c | Alpine 3.11 amd64 (20200220_13:00) | x86_64 |
+---------+--------------+------------------------------------+--------------+LXD konfiqurasiyası
İnteraktiv rejimdən əlavə, LXD konfiqurasiyanı YAML-faylı formasında verərək qeyri-interaktiv rejimdə də dəstəkləyir. Bu, konfiqurasiyanın birdən çox interaktiv komandaların icrasını keçərək bir anda qurulmasını təmin edən xüsusi bir formattır, o cümlədən şəbəkə konfiqurasiyası, konfiqurasiya profillərinin yaradılması və s. Burada bu sahəni müzakirə etməyəcəyik, siz bu barədə özünüz məlumat əldə edə bilərsiniz. .
Növbəti interaktiv komanda lxc config hansı ki, konfiqurasiyanı qurmağa imkan tanıyır. Məsələn, lokalda yüklənmiş şəkillərin qlobal depozitlərdən avtomatik olaraq yenilənməməsi üçün biz bu davranışı növbəti komanda ilə aktivləşdirmək olar:
lxc config set images.auto_update_cached=falseKonteyner yaratma və idarəetmə
Konteyner yaratmaq üçün istifadə olunan komandadır lxc init bu komandanın parametrlərini qəbul edir depo:şəkil və daha sonra konteyner üçün istədiyiniz identifikator. Depo lokal olaraq yerli: və ya istənilən qlobal olaraq göstərilə bilər. Depo göstərilməsə, standart olaraq şəkilin axtarılması lokal depodan həyata keçirilir. Şəkil qlobal depodan qeyd olunursa, əvvəlcə şəkil lokal depoya yüklənəcək, daha sonra konteyner yaratmaq üçün istifadə ediləcək.
İlk konteynerimizi yaratmaq üçün növbəti komandaları icra edək:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddrootBurada istifadə etdiyimiz komanda açarlarını bir-bir araşdıraq:
alpine3— Depoda daha əvvəl yüklənmiş olan şəkil üçün bir alias (lazım) göstərilir. Eğer bu şəkil üçün alias yaradılmamışsa, onu həmişə Fingerprint çıxan cədvəldə göstərilənalp— Konteyner üçün identifikator təyin olunur--storage— Bu açar konteynerin hansı Saxlama İçi yaradılacağını göstərir--profile— Bu açarlar, daha əvvəl yaradılan profil konfiqurasiyalarını konteynerə kaskad şəkildə tətbiq edir
Konteynerimizi işə salırıq ki, o da dağıtımın init sistemini başlatmağa başlayır:
lxc start alpHəmçinin, lxc launch komandasından istifadə edə bilərsiniz lxc init və lxc start bir əməliyyatda birləşdirmək imkanı verir.
Konteynerin vəziyyətini yoxlayırıq:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+Konteynerin konfiqurasiyasını yoxlayırıq:
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: ""clients.conf profillər biz iki konfiqurasiya profilinin istifadə edildiyini təsdiq edə bilərik — default və hddroot. Bölmədə cihazlar biz yalnız bir cihaz aşkar edə bilərik, çünki şəbəkə cihazı profil səviyyəsində yaradılıb default. Konteynerin istifadə etdiyi bütün cihazları görmək üçün açarı əlavə etmək lazımdır --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: ""Statik IP ünvanı təyin etmək
Əgər şəbəkə cihazı üçün IP ünvanı təyin etməyə çalışsaq eth0 əmri ilə lxc config device set alp konteyner konfiqurasiyası üçün nəzərdə tutulmuşdur, biz xəta alacağıq ki, cihaz yoxdur, çünki cihaz eth0 konteynerin istifadə etdiyi profilə aiddir default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't existTəqdim olunan statik IP ünvanını yerləşdirə bilərik eth0 profil daxilində, lakin bu, həmin profili istifadə edən bütün konteynerlər üçün eyni olacaq. Buna görə, konteynerlər üçün ayrılmış bir cihaz əlavə edək:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5Sonra konteyneri yenidən başlatmalıyıq:
lxc restart alpİndi konteynerin konfiqurasiyasına baxsaq, şəbəkə cihazını görmək üçün əlavə açarı tətbiq etməyə ehtiyacımız olmayacaq --expanded bunu görmək üçün eth0, çünki biz onu konteyner səviyyəsində yaratdıq və bu, eyni vəziyyəti profilin içindən üstünü örtmüşdür. 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: ""Konteyneri silmək
Konteyneri silmək üçün komanda lxc delete, amma konteyneri silmədən əvvəl onu dayandırmaq lazımdır, bunun üçün: lxc stop:
lxc stop alplxc list
+------+---------+-------------------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+-------------------+------+-----------+-----------+
| alp | STOPPED | 10.0.5.10 (eth0) | | KONTEYNER | 0 |
+------+---------+-------------------+------+-----------+-----------+Konteynerin vəziyyətini DAYANAN, artdıqdan sonra onu silmək olar Saxlama İçi:
lxc delete alpKonteynere giriş
Konteynerdə birbaşa əmrləri yerinə yetirmək üçün, şəbəkə bağlantılarından keçmədən istifadə olunan komanda lxc exec komanda konteyner içərisində komanda yerinə yetirir, sistem terminalını açmadan. Əgər siz terminalda dəyişənlər, fayl yönləndirmələri (pipe) kimi shell nümunələrini istifadə etməlisinizsə, onda terminalı açmalı və komandanı açar kimi təqdim etməlisiniz, məsələn:
lxc exec alp -- \/bin\/sh -c "echo $HOME"Komanda daxilində xüsusi simvolun qaçırılması istifadə olunmuşdur xüsusi simvol üçün $ dəyişənin $HOME host maşınında şərh olunmaması üçün, yalnız konteyner daxilində şərh olunması üçün.
Həmçinin, interaktiv terminal rejimini başlada bilərsiniz, sonra seansı tamamlayıb hotkey icrası ilə lxc config device add:
lxc exec alp -- \/bin\/shKonteyner resurslarının idarə edilməsi
LXD-də konteynerin qaynaqlarını xüsusi konfiqurasiya dəsti vasitəsilə idarə edə bilərsiniz. Konteyner üçün bütün konfiqurasiya parametrlərinin tam siyahısını tapa bilərsiniz .
RAM (Yaddaş) resurslarının məhdudlaşdırılması
Parametr limits.memory konteyner üçün mövcud RAM həcmini məhdudlaşdırır. Dəyər olaraq bir ədəd və onlardan biri .
Konteynerin RAM həcminin 256 MB olması üçün məhdudiyyət təyin edək:
lxc config set alp limits.memory 256MBEyni zamanda, yaddaşı məhdudlaşdırmaq üçün digər parametrlər də vardır:
limits.memory.enforcelimits.memory.hugepageslimits.memory.swaplimits.memory.swap.priority
Əmr lxc config show konteynerin bütün konfiqurasiyasını, daxil olmaqla tətbiq olunan resurs məhdudiyyətini ekrana çıxarmaq üçün istifadə edilir:
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 (Prosessor) resurslarının məhdudlaşdırılması
CPU resurslarını məhdudlaşdırmaq üçün bir neçə :
limit.cpu— konteyneri bir və ya bir neçə CPU nüvəsinə bağlayırlimits.cpu.allowance— ya CFS planlayıcısının kvotalarını idarə edir, vaxt məhdudiyyətindən keçdikdə, ya da CPU resurslarının ümumi bölüşdürülməsi mexanizmini, faizlik dəyəri keçdikdəlimits.cpu.priority— eyni processor dəstini paylaşan bir neçə nüsxə üçün planlayıcı prioriteti
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: ""Disk sahəsinin məhdudlaşdırılması
limits.read, limits.write kimi məhdudiyyətlərin yanında biz həmçinin konteynerin disk məkanını istehlakını məhdudlaşdıra bilərik (yalnız ZFS və ya BTRFS ilə işləyir):, lxc config device set alp root size=2GB Təyin etdikdən sonra,
devices.root.sizeparametrində müəyyən edilmiş məhdudiyyəti görə bilərik: lxc config show alp ... devices: root: path: \/ pool: hddpool size: 2GB type: disk ephemeral: false profiles: - default - hddroot stateful: false description: "" Diskdə istifadə olunan kvotaları görmək üçün biz aşağıdakı əmri icra edə bilərik
lxc infolxc info alp ... Resurslar: İşləmlər: 5 Disk istifadası: root: 1.05GB CPU istifadası: CPU istifadəsi (saniyədə): 1 Yaddaş istifadası: Yaddaş (cari): 5.46MB Şəbəkə istifadası: eth0: Alınan baytlar: 802B Göndərilən baytlar: 1.59kB Alınan paketlər: 4 Göndərilən paketlər: 14 lo: Alınan baytlar: 0B Göndərilən baytlar: 0B Alınan paketlər: 0 Göndərilən paketlər: 0 Konteynerin kök cihazı üçün 2GB məhdudiyyət tətbiq etdiyimizə baxmayaraq, sistem utilitələri bu məhdudiyyəti görməyəcək. Bunun üçün bir kiçik test edərək bunun necə işlədiyini öyrənəcəyik.:
Eynimüəssisənin (hddpool) daxilində iki eyni konteyner yaradacağıq: df 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) | | KONTEYNER | 0 | +------+---------+------------------+------+-----------+-----------+ | alp2 | RUNNING | 10.0.5.30 (eth0) | | KONTEYNER | 0 | +------+---------+------------------+------+-----------+-----------+ Saxlama İçi Konteynerlərdən birində 1GB ölçüsündə fayl yaradacağıq:
lxc exec alp1 -- dd if=\/dev\/urandom of=file.img bs=1M count=1000lxc siyahısı
+------+---------+------------------+------+-----------+-----------+
| AD | VAZİYYƏT | IPV4 | IPV6 | NÖV | SNAPSHOTLAR |
+------+---------+------------------+------+-----------+-----------+
| alp1 | İŞLƏYİR | 10.0.5.46 (eth0) | | KONTAYNER | 0 |
+------+---------+------------------+------+-----------+-----------+
| alp2 | İŞLƏYİR | 10.0.5.30 (eth0) | | KONTAYNER | 0 |
+------+---------+------------------+------+-----------+-----------+Konteynerlərdən birində 1GB ölçüsündə fayl yaradaq:
lxc exec alp1 -- dd if=\/dev\/urandom of=file.img bs=1M count=1000Gəlin faylın yaradıldığını təsdiq edək:
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.imgİkinci konteynerə baxsaq, eyni yerdə faylın olub-olmamasını yoxlayaq, bu fayl orada olmayacaq, bu gözləniləndir, çünki konteynerlər özlərinin ) bölünür ki, bunlar görüntüləri, konteynerləri və ya digər məqsədlər üçün məlumatları saxlayır. öz mühitlərində yaradılır. Saxlama İçi:
lxc exec alp2 -- ls -lh
total 0Amma gəlin qiymətləri müqayisə edək ki, df hər iki konteynerdə belədir:
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%
/
...Cihaz /dev/loop1 mənbə kimi kök bölməsi olaraq montajlanır Saxlama İçi bütün bu konteynerlərin istifadə etdiyi üçün, onu ikisi arasında bölüşür.
Resurs istehlakının statistikası
Konteyner üçün resurs istifadə statistikalarını görmək üçün aşağıdakı komandadan istifadə edə bilərsiniz:
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: 0Snapshotlarla işləmək
LXD-də konteynerin vəziyyətinin müharizəsi və bərpası üçün snapshotlar yaratmaq imkanı var.
Snapshot yaratmaq üçün aşağıdakı komandayı icra edin:
lxc snapshot alp snapshot1Komandada lxc snapshot açar yoxdur list, buna görə snapshotların siyahısını görmək üçün konteynerin ümumi məlumatını verən komandanı istifadə etmək lazımdır:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)Snapshotdan konteyneri bərpa etmək üçün lxc restore bərpa ediləcək konteyneri və snapshotun adını göstərərək icra edilməlidir:
lxc restore alp snapshot1Aşağıdakı komanda snapshot'ı silmək üçün istifadə olunur. Diqqət edin ki, komandanın sintaksisi digər bütün komandalarla oxşar deyil, konteynerin adından sonra birbaşa slash göstərilməlidir. Əgər slash buraxılsa, snapshot silmə komandası konteyneri silmə komandası kimi başa düşüləcək!
lxc delete alp/snapshot1Yuxarıda göstərilən nümunədə
Başqa nə?
- Python proqramçıları üçün mövcud modul LXD-yə API təqdim edir.
GÜNCƏLƏNİB 10.04.2020 15:00: Naviqasiyanı əlavə etdim.
Mənbə: habr.com
