ProHoster > Blog > İdarə > LXD-nin əsas xüsusiyyətləri - Linux konteyner sistemləri
LXD-nin əsas xüsusiyyətləri - Linux konteyner sistemləri
LXD yeni nəsil sistem konteyner meneceridir, belə deyir mənbə. O, virtual maşınlara bənzər bir istifadəçi interfeysi təklif edir, lakin bunun əvəzinə Linux konteynerlərindən istifadə edir.
LXD nüvəsi yerli unix yuvası vasitəsilə, həmçinin müvafiq konfiqurasiya quraşdırılıbsa şəbəkə vasitəsilə REST API təmin edən imtiyazlı demondur (kök hüquqları ilə işləyən xidmət). LXD ilə təmin edilən komanda xətti aləti kimi müştərilər bu REST API vasitəsilə sorğular edir. Bu o deməkdir ki, yerli host və ya uzaq hosta daxil olmağınızdan asılı olmayaraq, hər şey eyni işləyir.
Bu yazıda biz LXD anlayışları üzərində ətraflı dayanmayacağıq, sənədlərdə göstərilən bütün mövcud imkanları, o cümlədən konteynerlərlə paralel olaraq QEMU virtual maşınlarına dəstəyin LXD-nin son versiyalarında tətbiqini nəzərdən keçirməyəcəyik. Bunun əvəzinə biz konteyner idarəçiliyinin əsaslarını öyrənəcəyik - saxlama hovuzlarının qurulması, şəbəkələrin qurulması, konteynerin idarə edilməsi, resurs məhdudiyyətlərinin tətbiqi və LXD haqqında əsas anlayış əldə etmək və Linux-da konteynerlərdən istifadə etmək üçün anlıq görüntülərdən necə istifadə etmək.
Bu o deməkdir ki, bir anda iki paket quraşdırılacaq, biri sistem paketi, digəri isə snap paketi kimi. Sistemdə iki paketin quraşdırılması bəzi problemlər yarada bilər ki, əgər snap paketi snap paket meneceri tərəfindən silinərsə, sistem paketi yetimləşə bilər.
Paketi tapın lxd snap deposunda aşağıdakı əmrdən istifadə edə bilərsiniz:
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
Komandanı işlətməklə list paketi olduğundan əmin ola bilərsiniz lxd hələ quraşdırılmayıb:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
LXD-nin snap paketi olmasına baxmayaraq, o, sistem paketi vasitəsilə quraşdırılmalıdır lxd, sistemdə müvafiq qrup yaradacaq, lazımi kommunal xidmətlər /usr/bin və s.
sudo apt update
sudo apt install lxd
Paketin snap paketi kimi quraşdırıldığına əmin olaq:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
lxd 3.21 13474 stable/… canonical✓ -
LXD paketini sistemə quraşdırmaq üçün aşağıdakı əmrləri yerinə yetirməlisiniz, birincisi depoda mövcud olan sistemdəki paketlərin siyahısını yeniləyəcək, ikincisi paketi birbaşa quraşdıracaq:
sudo pacman -Syyu && sudo pacman -S lxd
Paketi quraşdırdıqdan sonra LXD-ni adi istifadəçi tərəfindən idarə etmək üçün o, sistem qrupuna əlavə edilməlidir lxd:
sudo usermod -a -G lxd user1
Gəlin istifadəçiyə əmin olaq user1 qrupa əlavə edildi lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Əgər qrup lxd siyahıda görünmür, onda siz istifadəçi sessiyasını yenidən aktivləşdirməlisiniz. Bunun üçün sistemdən çıxmalı və eyni istifadəçi adı altında daxil olmalısınız.
Aktivləşdirin systemd sistemin başlanğıcında LXD xidmətinin yüklənməsi:
Başlamağa başlamazdan əvvəl LXD-də yaddaşın məntiqi olaraq necə qurulduğunu başa düşməliyik.
Yaddaş (saxlama) ibarətdir bir və ya daha çox Saxlama Hovuzu ZFS, BTRFS, LVM və ya adi qovluqlar kimi dəstəklənən fayl sistemlərindən birini istifadə edən. Hər Saxlama Hovuzu cildlərə bölünür (Yaddaş həcmi) başqa məqsədlər üçün şəkilləri, konteynerləri və ya məlumatları ehtiva edən.
Şəkillər - bunlar Linux nüvəsi olmayan və xarici mənbələrdən əldə edilə bilən xüsusi yığılmış paylamalardır
Konteynerlər - bunlar istifadəyə hazır olan şəkillərdən yerləşdirilən paylamalardır
Ani görüntülər - bunlar geri qayıda biləcəyiniz konteynerlərin vəziyyətinin anlıq görüntüləridir
LXD-də yaddaşı idarə etmək üçün əmrdən istifadə edin lxc storage açarı göstərərək əldə edə biləcəyiniz sertifikat - lxc storage --help
Aşağıdakı əmr hamısının siyahısını göstərir Saxlama Hovuzu LXD yaddaşında:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Hamısının siyahısını görmək üçün Yaddaş həcmi seçilmişdə Saxlama Hovuzu komandaya xidmət edir 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 |
+-----------+----------------------------------+-------------+---------+
Həmçinin, əgər üçün Saxlama Hovuzu Yaradarkən BTRFS fayl sistemi seçildi, sonra siyahı əldə edin Yaddaş həcmi və ya alt cildlər BTRFS şərhində bu fayl sisteminin alət dəstindən istifadə edə bilərsiniz:
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
Konteynerlər yaratmadan və istifadə etməzdən əvvəl siz şəbəkə və yaddaşı yaradan və konfiqurasiya edən ümumi LXD başlanğıcını yerinə yetirməlisiniz. Bu, əmrə zəng etməklə siyahıda mövcud olan standart müştəri əmrlərindən istifadə etməklə əl ilə edilə bilər lxc --help və ya başlatma sehrbazından istifadə edin lxd init bir neçə suala cavab verir.
Başlama zamanı LXD bir neçə sual verir, o cümlədən defolt üçün fayl sisteminin növünü təyin etmək Saxlama Hovuzu. Varsayılan olaraq, bunun üçün BTRFS fayl sistemi seçilir. Yaradılandan sonra başqa FS-ə keçmək mümkün olmayacaq. FS seçmək tövsiyə olunur xüsusiyyətlərin müqayisə cədvəli:
Optimallaşdırılmış nümunə ötürülməsi
No.
bəli
No.
bəli
bəli
Yazmaq üçün kopyalayın
No.
bəli
bəli
bəli
bəli
Blok əsaslıdır
No.
No.
bəli
No.
bəli
Dərhal klonlama
No.
bəli
bəli
bəli
bəli
Saxlama sürücüsü konteyner içərisində istifadə edilə bilər
bəli
bəli
No.
No.
No.
Köhnə snapshotlardan bərpa edin (ən son deyil)
bəli
bəli
bəli
No.
bəli
Saxlama kvotaları
bəli(*)
bəli
bəli
bəli
No.
Sehrbazdan istifadə edərək şəbəkə və Saxlama Hövzəsinin işə salınması ^
Baxacağımız növbəti əmr başlatma sihirbazından istifadə edərək sadə suallara cavab verməklə LXD-nin əsas komponentlərinin qurulmasını təklif edir.
Çalıştır əmri lxc init və sualların cavablarını iki nöqtədən sonra aşağıdakı nümunədə göstərildiyi kimi daxil edin və ya şərtlərinizə uyğun olaraq dəyişdirin:
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]:
Əvvəlki addımda biz yaratdıq Saxlama Hovuzu adı verilmişdir ssdpool və faylı sistemimdə yerləşir /var/lib/lxd/disks/ssdpool.img. Bu fayl sistemi ünvanı mənim kompüterimdəki fiziki SSD sürücüsünə uyğundur.
Aşağıdakı hərəkətlər, oynadığı rolun anlayışını genişləndirmək üçün Saxlama Hovuzu depoda ikincisini yaradacağıq Saxlama Hovuzu fiziki olaraq fərqli bir disk növü olan HDD-də yerləşəcək. Problem ondadır ki, LXD sizə yaratmağa imkan vermir Saxlama Hovuzu ünvandan kənar /var/lib/lxd/disks/ və hətta simvolik bağlantılar işləməyəcək, tərtibatçının cavabına baxın. Biz başlatma/formatlaşdırma zamanı bu məhdudiyyəti keçə bilərik Saxlama Hovuzu açarda bunu göstərərək, geri dönmə faylına gedən yol əvəzinə dəyəri blok cihazı kimi göstərərək source.
Beləliklə, yaratmadan əvvəl Saxlama Hovuzu geri dönmə faylını və ya fayl sisteminizdə istifadə edəcəyi mövcud bölməni təyin etməlisiniz. Bunu etmək üçün ölçüsünü 10 GB-a qədər məhdudlaşdıracağımız bir fayl yaradıb istifadə edəcəyik:
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
Geri dönmə faylını pulsuz geri dönmə cihazına bağlayaq:
Açar sayəsində --show əmrin yerinə yetirilməsi geri dönmə faylımızın qoşulduğu cihazın adını ekrana qaytarır. Lazım gələrsə, hərəkətlərimizin düzgün olduğundan əmin olmaq üçün bu tip bütün məşğul cihazların siyahısını göstərə bilərik:
Siyahıdan cihazın olduğunu tapa bilərsiniz /dev/loop1 geri dönmə faylı daxildir /mnt/work/lxd/hddpool.img, və cihazda /dev/loop0 geri dönmə faylı daxildir /var/lib/lxd/disks/ssdpool.img bu standarta uyğundur Saxlama Hovuzu.
Aşağıdakı əmr yenisini yaradır Saxlama Hovuzu indicə hazırladığımız geri dönmə faylı əsasında LXD-də. LXD geri dönmə faylını formatlayacaq /mnt/work/lxd/hddpool.img cihazda /dev/loop1 BTRFS fayl sistemi üçün:
Yaradıldıqdan sonra Saxlama Hovuzu, lazım gələrsə, genişləndirilə bilər. üçün Saxlama Hovuzu BTRFS fayl sisteminə əsaslanaraq, aşağıdakı əmrləri yerinə yetirin:
Geri dönmə faylının geri dönmə cihazı yuvasına avtomatik daxil edilməsi ^
Host sistemini, faylı yenidən yükləyərkən kiçik bir problemimiz var /mnt/work/lxd/hddpool.img cihazdan "uçacaq" /dev/loop1 və LXD xidməti yüklənərkən sıradan çıxacaq, çünki onu bu cihazda görməyəcək. Bu problemi həll etmək üçün bu faylı cihaza daxil edəcək sistem xidməti yaratmalısınız /dev/loop1 host sistemi işə salındıqda.
Yaradaq vahid fayl növü xidmət в /etc/systemd/system/ SystemD başlatma sistemi üçün:
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
Xidməti aktivləşdirin:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.
Host sistemini yenidən başlatdıqdan sonra xidmətin vəziyyətini yoxlayırıq:
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).
Çıxışdan biz xidmət vəziyyətinin olduğunu yoxlaya bilərik aktiv, skriptimizin bir komandadan icrasının tamamlanmasına baxmayaraq, seçim bunu etməyə imkan verdi RemainAfterExit=true.
Bütün konteyner prosesləri əslində öz nüvəsindən istifadə edərək host sistemində təcrid olunmuş şəkildə işlədiyindən, konteyner proseslərinin host sisteminə çıxışını daha da qorumaq üçün LXD proses imtiyazı təklif edir, burada:
İmtiyazlı Konteynerlər - bunlar UID və GID ilə proseslərin host sistemindəki eyni sahibə uyğun olduğu konteynerlərdir. Məsələn, UID-i 0 olan konteynerdə işləyən proses, UID-i 0 olan host sistemindəki proseslə eyni giriş hüquqlarına malikdir. Başqa sözlə, konteynerdəki kök istifadəçi yalnız bütün hüquqlara malikdir: konteyner, həm də konteynerin təcrid olunmuş ad məkanından kənara çıxa bilsə, host sistemində.
İmtiyazsız konteynerlər - bunlar proseslərin 0-dan 65535-ə qədər olan UID və GID sahibinə aid olduğu konteynerlərdir, lakin host sistemi üçün sahibi müvafiq olaraq əlavə edilmiş SubUID və SubGID bitlərindən istifadə edərək maskalanır. Məsələn, konteynerdə UID=0 olan istifadəçi host sistemində belə görünəcək SubUID + UID. Bu, host sistemini qoruyur, çünki konteynerdəki hər hansı bir proses onun təcrid olunmuş ad məkanından qaça bilirsə, o, yalnız naməlum, çox yüksək UID/GID-ə malik proses kimi host sistemi ilə əlaqə saxlaya bilər.
Varsayılan olaraq, yeni yaradılmış konteynerlər imtiyazsız statusa malikdir və buna görə də biz SubUID və SubGID təyin etməliyik.
Gəlin, müvafiq olaraq SubUID və SubGID üçün maska təyin edəcəyimiz iki konfiqurasiya faylı yaradaq:
Biz əvvəllər başlatma sehrbazından istifadə edərək şəbəkəni işə saldığımız üçün lxd init və şəbəkə cihazı yaratdı lxdbr0, onda biz bu bölmədə sadəcə LXD-də şəbəkələşmə və müştəri əmrindən istifadə edərək virtual keçid (körpü) yaratmaqla tanış olacağıq.
Aşağıdakı diaqram keçidin (körpünün) hostu və konteynerləri şəbəkəyə necə birləşdirdiyini nümayiş etdirir:
Konteynerlər şəbəkə vasitəsilə digər konteynerlər və ya bu konteynerlərin xidmət göstərdiyi host ilə əlaqə saxlaya bilər. Bunun üçün konteynerlərin virtual şəbəkə kartlarını virtual keçidlə əlaqələndirməlisiniz. Əvvəlcə keçid yaradacağıq və konteynerin özü yaradıldıqdan sonra konteynerin şəbəkə interfeysləri sonrakı fəsillərdə əlaqələndiriləcək.
Aşağıdakı əmr alt şəbəkə ilə keçid yaradır 10.0.5.0/24 və IPv4 ünvanı 10.0.5.1/24, həmçinin daxildir ipv4.nat konteynerlərin NAT xidmətindən istifadə edərək host vasitəsilə İnternetə daxil ola bilməsi üçün:
LXD-dəki hər bir konteynerin öz konfiqurasiyası var və onu qlobal olaraq elan edilmiş konfiqurasiyalarla genişləndirə bilər. konfiqurasiya profilləri. Konteynerə konfiqurasiya profillərinin tətbiqi kaskad modelinə malikdir, aşağıdakı nümunə bunu nümayiş etdirir:
Bu nümunədə LXD sistemində üç profil yaradılmışdır: default, hddpool и hostfs. Hər üç profil yerli konfiqurasiyaya (boz sahə) malik konteynerə tətbiq edilir. Profil default aparatı var root parametri olan pool bərabərdir ssdpool, lakin kaskad konfiqurasiya tətbiqi modeli sayəsində konteynerə profil tətbiq edə bilərik hddpool parametri olan pool profildən eyni parametri ləğv edəcək default və konteyner cihaz konfiqurasiyasını alacaq root parametri ilə pool bərabərdir hddpool, və profil hostfs sadəcə konteynerə yeni bir cihaz əlavə edir.
Mövcud konfiqurasiya profillərinin siyahısını görmək üçün aşağıdakı əmrdən istifadə edin:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Profillə işləmək üçün mövcud əmrlərin tam siyahısı açar əlavə etməklə əldə edilə bilər --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
Defolt konfiqurasiya profili default konteyner üçün şəbəkə kartı konfiqurasiyası yoxdur və bütün yeni yaradılmış konteynerlərin şəbəkəsi yoxdur, onlar üçün ayrıca komanda ilə lokal (təxsi) şəbəkə qurğuları yaratmaq lazımdır, lakin biz konfiqurasiyada qlobal şəbəkə cihazı yarada bilərik. bu profildən istifadə edən bütün konteynerlər arasında paylaşılacaq profil. Beləliklə, yeni konteyner yaratmaq əmrindən dərhal sonra onlar şəbəkəyə çıxışı olan bir şəbəkəyə sahib olacaqlar. Eyni zamanda, heç bir məhdudiyyət yoxdur, lazım gələrsə, biz həmişə yerli şəbəkə cihazı yarada bilərik.
Aşağıdakı əmr cihazı konfiqurasiya profilinə əlavə edəcəkdir eth0 növü nic şəbəkəyə qoşulub lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Qeyd etmək vacibdir ki, cihazı həqiqətən konfiqurasiya profilinə əlavə etdiyimiz üçün cihazda statik bir IP ünvanı göstərmişiksə, bu profildən istifadə edəcək bütün konteynerlər eyni IP ünvanını paylaşacaq. Konteyner üçün ayrılmış statik IP ünvanı olan konteyner yaratmağa ehtiyac varsa, o zaman profil səviyyəsində deyil, IP ünvanı parametri ilə konteyner səviyyəsində (yerli konfiqurasiya) şəbəkə cihazı konfiqurasiyası yaratmalısınız.
Profili 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ə görə bilərik ki, bütün yeni yaradılmış konteynerlər üçün iki cihaz yaradılacaq:
eth0 - Cihaz növü nic keçidə qoşulmuşdur (şəbəkə körpüsü) lxdbr0
root - Cihaz növü disk saxlama hovuzundan istifadə edir ssdpool
Əvvəllər yaradılmış istifadə etmək üçün Saxlama Hovuzu konteynerlər, konfiqurasiya profili yaradın ssdroot kimi bir cihaz əlavə edəcəyik disk montaj nöqtəsi ilə / (kök) əvvəllər yaradılmış istifadə edərək Saxlama Hovuzu - ssdpool:
Konteynerlər Linux nüvəsi olmayan xüsusi yığılmış paylamalar olan şəkillərdən yaradılmışdır. Buna görə də, konteyneri işə salmazdan əvvəl, bu şəkildən yerləşdirilməlidir. Şəkillərin mənbəyi xarici repozitoriyalardan şəkillərin yükləndiyi yerli depodur.
Məhdud sayda sütunları göstərmək üçün seçimdən istifadə etdik -c parametrləri ilə dasut, və həmçinin əmri ilə siyahının uzunluğunu məhdudlaşdırdı head.
Şəkillərin siyahısını göstərmək üçün filtrləmə mövcuddur. Aşağıdakı əmr bütün mövcud paylama arxitekturalarının siyahısını verəcəkdir AlpineLinux:
Konteynerdən istifadə etməyə başlamaq üçün qlobal depodan yerli birinə şəkil əlavə etməlisiniz local:. İndi yerli depo boşdur, komanda buna əmin olacaq lxc image list. Əgər üsul list repozitoriya təyin etməyin, onda yerli repozitoriya standart olaraq istifadə olunacaq - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Anbardakı şəkillər aşağıdakı üsullarla idarə olunur:
Komanda
Təsvir
lxc şəkli ləqəb
Şəkil ləqəblərini idarə edin
lxc şəkli köçürmək
Serverlər arasında şəkilləri kopyalayın
lxc şəkli silmək
Şəkillər silin
lxc şəkli redaktə etmək
Şəkil xüsusiyyətlərini redaktə edin
İnteraktiv rejimə əlavə olaraq, LXD qeyri-interaktiv konfiqurasiya quraşdırma rejimini də dəstəkləyir, bu, konfiqurasiya YAML faylı şəklində göstərildiyi zaman, icradan yan keçərək bütün konfiqurasiyanı bir anda quraşdırmağa imkan verən xüsusi bir formatdır. Bu məqalədə yuxarıda müzakirə edilən bir çox interaktiv əmrlərdən, o cümlədən şəbəkə konfiqurasiyası, konfiqurasiya profillərinin yaradılması və s. Biz bu sahəni burada əhatə etməyəcəyik, siz özünüz yoxlaya bilərsiniz. sənədlərdə.
Növbəti interaktiv əmr lxc config baxacağımız konfiqurasiyanı təyin etməyə imkan verir. Məsələn, yerli depoya endirilmiş şəkillərin qlobal depolardan avtomatik olaraq yenilənməməsini təmin etmək üçün bu davranışı aşağıdakı əmrlə aktivləşdirə bilərik:
Konteyner yaratmaq üçün əmrdən istifadə edin lxc init hansı dəyərlərə keçilir репозиторий:образ və sonra konteyner üçün istədiyiniz ID. Repozitor yerli olaraq təyin edilə bilər local: hər hansı bir qlobal da belədir. Əgər repozitoriya göstərilməyibsə, defolt olaraq şəkili axtarmaq üçün yerli repozitoriyadan istifadə edilir. Şəkil qlobal depodan göstərilibsə, o zaman şəkil əvvəlcə yerli depoya yüklənəcək və sonra konteyneri yaratmaq üçün istifadə olunacaq.
İlk konteynerimizi yaratmaq üçün aşağıdakı əmri yerinə yetirək:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Burada istifadə etdiyimiz əmr düymələrinə sıra ilə baxaq:
alpine3 — Əvvəllər yerli depoya yüklənmiş şəkil üçün ləqəb (ləqəb) təyin edilib. Əgər ləqəb bu şəkil üçün yaradılmayıbsa, onda siz həmişə onun şəklinə istinad edə bilərsiniz Parmak izi olan cədvəldə göstərilir.
alp — Konteyner üçün identifikator təyin edir
--storage — Bu açar hansının olduğunu göstərir Saxlama Hovuzu konteyner yaradılacaq
--profile — Bu düymələr konfiqurasiyanı əvvəllər yaradılmış konfiqurasiya profillərindən konteynerə tətbiq edir
Biz paylamanın başlanğıc sistemini işə salmağa başlayan konteyneri işə salırıq:
lxc start alp
Siz həmçinin əmrdən istifadə edə bilərsiniz lxc launch komandaları birləşdirməyə imkan verir lxc init и lxc start bir əməliyyatda.
Konteynerin vəziyyətinin yoxlanılması:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
Bölmədə profiles bu konteynerin iki konfiqurasiya profilindən istifadə etdiyinə əmin ola bilərik - default и hddroot. Bölmədə devices şəbəkə cihazı profil səviyyəsində yaradıldığı üçün biz yalnız bir cihazı aşkar edə bilərik default. Konteynerin istifadə etdiyi bütün cihazları görmək üçün açar əlavə etməlisiniz --expanded:
Şəbəkə cihazı üçün bir IP ünvanı təyin etməyə çalışsaq eth0 komanda lxc config device set alp konteyner konfiqurasiyası üçün nəzərdə tutulmuşdur, onda biz cihazın mövcud olmadığını bildirəcək xəta alacağıq, çü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 exist
Biz əlbəttə ki, statik IP ünvanı təyin edə bilərik eth0 profildəki cihazlar, lakin bu profildən istifadə edəcək bütün konteynerlər üçün eyni olacaq. Buna görə konteynerə həsr olunmuş bir cihaz əlavə edək:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Sonra konteyneri yenidən işə salmalısınız:
lxc restart alp
İndi konteyner konfiqurasiyasına baxsaq, seçimdən istifadə etməyimiz lazım deyil --expanded şəbəkə cihazını görmək üçün eth0, çünki biz onu konteyner səviyyəsində yaratmışıq və o, profildən eyni cihazın üzərindən keçib default:
Şəbəkə bağlantılarını keçərək birbaşa konteynerdəki əmrləri yerinə yetirmək üçün əmrdən istifadə edin lxc exec sistem qabığını işə salmadan konteynerdəki əmrləri yerinə yetirən. Dəyişənlər, fayl yönləndirmələri (boru) və s. kimi qabıq nümunələrindən istifadə edərək qabıqda əmr yerinə yetirmək lazımdırsa, o zaman qabığı açıq şəkildə işə salmalı və əmri açar kimi ötürməlisiniz, məsələn:
lxc exec alp -- /bin/sh -c "echo $HOME"
Komanda xüsusi bir qaçış simvolundan istifadə etdi xüsusi xarakter üçün $ belə ki, dəyişən $HOME ana maşında şərh edilmədi, ancaq konteynerin içərisində şərh edildi.
Həmçinin interaktiv qabıq rejiminə başlamaq, sonra isə isti düyməni yerinə yetirməklə sessiyanı bitirmək mümkündür CTRL+D:
LXD-də siz xüsusi konfiqurasiya dəstindən istifadə edərək konteyner resurslarını idarə edə bilərsiniz. Konteyner konfiqurasiya parametrlərinin tam siyahısını tapa bilərsiniz sənədlərdə.
limit.cpu - konteyneri bir və ya bir neçə CPU nüvəsinə bağlayır
limits.cpu.allowance - vaxt limiti keçdikdə ya CFS planlaşdırıcı kvotalarını, ya da faiz keçdikdə universal CPU resurs mübadiləsi mexanizmini idarə edir
limits.cpu.priority - bir sıra prosessorları paylaşan birdən çox nüsxə prosessorların eyni faizi təyin edildikdə planlaşdırıcı prioriteti
Belə məhdudiyyətlərə əlavə olaraq limits.read, limits.write biz həmçinin konteyner tərəfindən istehlak edilən disk sahəsinin miqdarı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
Quraşdırıldıqdan sonra parametrdə devices.root.size Biz müəyyən edilmiş limiti yoxlaya bilərik:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
İstifadə olunan disk kvotalarına baxmaq üçün əmrdən əldə edə bilərik 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
Konteynerin kök cihazı üçün 2 GB-a limit qoymağımıza baxmayaraq, sistem utilitləri, məsələn, df bu məhdudiyyəti görməyəcək. Bunu etmək üçün kiçik bir test keçirəcəyik və bunun necə işlədiyini öyrənəcəyik.
Gəlin eyni qabda 2 yeni eyni konteyner yaradaq Saxlama Hovuzu (hddpool):
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-olmadığını yoxlayın, onda bu fayl orada olmayacaq, çünki konteynerlər özlərində yaradılır. Yaddaş həcmi eyni ilə Saxlama Hovuzu:
lxc exec alp2 -- ls -lh
total 0
Ancaq onun yaratdığı dəyərləri müqayisə edək df bir və digər konteynerdə:
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% /
...
Qurğu /dev/loop1 kök bölmə olduğu kimi quraşdırılmışdır Saxlama Hovuzu bu qabların istifadə etdiyi, ona görə də həcmini iki arasında bölüşdürürlər.
LXD snapshotlar yaratmaq və onlardan konteyner vəziyyətini bərpa etmək imkanına malikdir.
Snapshot yaratmaq üçün aşağıdakı əmri yerinə yetirin:
lxc snapshot alp snapshot1
Komanda lxc snapshot açar yoxdur list, buna görə də, anlıq görüntülərin siyahısına baxmaq üçün konteyner haqqında ümumi məlumatı göstərən əmrdən istifadə etməlisiniz:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Komandadan istifadə edərək konteyneri snapshotdan bərpa edə bilərsiniz lxc restore bərpanın aparılacağı konteyneri və snapshot ləqəbini göstərərək:
lxc restore alp snapshot1
Snapshot silmək üçün aşağıdakı əmrdən istifadə olunur. Nəzərə alın ki, komanda sintaksisi bütün digərlərinə bənzəmir, burada konteyner adından sonra slash işarəsi göstərməlisiniz. Əgər kəsik işarəsi buraxılıbsa, o zaman snapshot silmək əmri konteyneri silmək əmri kimi şərh olunur!
lxc delete alp/snapshot1
Yuxarıdakı nümunədə biz vətəndaşlığı olmayan anlıq görüntülərə baxdıq. LXD-də başqa bir növ snapshot var - statuslu, konteynerdəki bütün proseslərin cari vəziyyətini saxlayır. Vəziyyəti göstərən anlıq görüntülərlə əlaqəli bir sıra maraqlı və faydalı xüsusiyyətlər var.