LXD - Linux konteyner tizimlarining asosiy xususiyatlari
LXD keyingi avlod tizim konteyner menejeri, shuning uchun aytiladi manba. U virtual mashinalarga o'xshash foydalanuvchi interfeysini taklif qiladi, lekin uning o'rniga Linux konteynerlaridan foydalanadi.
LXD yadrosi mahalliy unix soketi orqali, shuningdek, agar tegishli konfiguratsiya o'rnatilgan bo'lsa, tarmoq orqali REST API ni ta'minlovchi imtiyozli demon (ildiz huquqlari bilan ishlaydigan xizmat). LXD bilan ta'minlangan buyruq qatori vositasi kabi mijozlar ushbu REST API orqali so'rovlar yuboradilar. Bu shuni anglatadiki, siz mahalliy xostga yoki masofaviy xostga kiryapsizmi, barchasi bir xil ishlaydi.
Ushbu maqolada biz LXD tushunchalari haqida batafsil to'xtalib o'tmaymiz, biz hujjatlarda ko'rsatilgan barcha mavjud imkoniyatlarni, shu jumladan LXD ning so'nggi versiyalarida QEMU virtual mashinalarini konteynerlar bilan parallel ravishda qo'llab-quvvatlashni ko'rib chiqmaymiz. Buning o‘rniga biz konteynerlarni boshqarish asoslarini o‘rganamiz – saqlash havzalarini sozlash, tarmoqqa ulanish, konteynerni ishga tushirish, resurs cheklovlarini qo‘llash va LXD haqida asosiy tushunchaga ega bo‘lishingiz va Linuxda konteynerlardan foydalanish uchun oniy tasvirlardan qanday foydalanishni o‘rganamiz.
To'liq ma'lumot uchun rasmiy manbaga murojaat qiling:
Bu shuni anglatadiki, ikkita paket bir vaqtning o'zida o'rnatiladi, biri tizim paketi, ikkinchisi esa tezkor paket sifatida. Tizimga ikkita paketni o'rnatish, agar snap paket menejeri tomonidan o'chirilgan bo'lsa, tizim paketi etim bo'lib qolishi mumkin bo'lgan ba'zi muammolarni keltirib chiqarishi mumkin.
Paketni toping lxd snap omborida siz quyidagi buyruqdan foydalanishingiz mumkin:
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
Buyruqni ishga tushirish orqali list paketga ishonch hosil qilishingiz mumkin lxd hali o'rnatilmagan:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
LXD tezkor paket bo'lishiga qaramay, u tizim paketi orqali o'rnatilishi kerak lxd, bu tizimda tegishli guruhni, kerakli yordamchi dasturlarni yaratadi /usr/bin va hokazo.
sudo apt update
sudo apt install lxd
Keling, paketning tezkor paket sifatida o'rnatilganligiga ishonch hosil qilaylik:
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 tizimga o'rnatish uchun siz quyidagi buyruqlarni bajarishingiz kerak, birinchisi omborda mavjud bo'lgan tizimdagi paketlar ro'yxatini yangilaydi, ikkinchisi to'g'ridan-to'g'ri paketni o'rnatadi:
sudo pacman -Syyu && sudo pacman -S lxd
Paketni o'rnatgandan so'ng, oddiy foydalanuvchi tomonidan LXD ni boshqarish uchun uni tizim guruhiga qo'shish kerak lxd:
sudo usermod -a -G lxd user1
Keling, foydalanuvchiga ishonch hosil qilaylik user1 guruhga qo'shildi lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Agar guruh lxd ro'yxatda ko'rinmasa, foydalanuvchi seansini yana faollashtirishingiz kerak. Buning uchun siz tizimdan chiqishingiz va bir xil foydalanuvchi ostida tizimga kirishingiz kerak.
Faollashtirish systemd tizim ishga tushganda LXD xizmatini yuklash:
Ishga tushirishni boshlashdan oldin, LXD-da saqlash mantiqiy ravishda qanday tartibga solinganligini tushunishimiz kerak.
Saqlash (saqlash) tashkil topgan bir yoki bir nechtadan Saqlash havzasi ZFS, BTRFS, LVM yoki oddiy kataloglar kabi qo'llab-quvvatlanadigan fayl tizimlaridan birini ishlatadi. Har Saqlash havzasi jildlarga bo'linadi (Saqlash hajmi) boshqa maqsadlar uchun tasvirlar, konteynerlar yoki ma'lumotlarni o'z ichiga olgan.
Rasmlar - bu Linux yadrosisiz maxsus yig'ilgan distributivlar va tashqi manbalardan foydalanish mumkin
Konteynerlar - bular foydalanishga tayyor tasvirlardan tarqatilgan tarqatmalar
Suratlar - bular siz qaytishingiz mumkin bo'lgan konteynerlar holatining suratlari
LXD-da saqlashni boshqarish uchun buyruqdan foydalaning lxc storage kalitni ko'rsatish orqali olishingiz mumkin bo'lgan sertifikat - lxc storage --help
Quyidagi buyruq hammasi ro'yxatini ko'rsatadi Saqlash havzasi LXD xotirasida:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Hammasi ro'yxatini ko'rish uchun Saqlash hajmi tanlanganda Saqlash havzasi jamoaga xizmat qiladi 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 |
+-----------+----------------------------------+-------------+---------+
Bundan tashqari, agar uchun Saqlash havzasi Yaratishda BTRFS fayl tizimi tanlandi, keyin ro'yxatni oling Saqlash hajmi yoki kichik hajmlar BTRFS talqinida siz ushbu fayl tizimining asboblar to'plamidan foydalanishingiz mumkin:
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
Konteynerlarni yaratish va ishlatishdan oldin siz tarmoq va saqlashni yaratadigan va sozlaydigan umumiy LXD ishga tushirishni amalga oshirishingiz kerak. Bu buyruqni chaqirish orqali ro'yxatda mavjud bo'lgan standart mijoz buyruqlari yordamida qo'lda amalga oshirilishi mumkin lxc --help yoki ishga tushirish ustasidan foydalaning lxd init bir nechta savollarga javob beradi.
Ishga tushirish vaqtida LXD bir nechta savollarni, jumladan, sukut bo'yicha fayl tizimi turini aniqlashni so'raydi Saqlash havzasi. Odatiy bo'lib, u uchun BTRFS fayl tizimi tanlangan. Yaratilgandan keyin boshqa FSga o'tish mumkin bo'lmaydi. FS ni tanlash tavsiya etiladi xususiyatlarni taqqoslash jadvali:
xususiyati
Directory
Btrfs
LVM
ZFS
CEPH
Optimallashtirilgan tasvirni saqlash
Yo'q
ha
ha
ha
ha
Optimallashtirilgan namuna yaratish
Yo'q
ha
ha
ha
ha
Optimallashtirilgan surat yaratish
Yo'q
ha
ha
ha
ha
Optimallashtirilgan tasvir uzatish
Yo'q
ha
Yo'q
ha
ha
Optimallashtirilgan misol uzatish
Yo'q
ha
Yo'q
ha
ha
yozishda nusxa ko'chiring
Yo'q
ha
ha
ha
ha
Blokka asoslangan
Yo'q
Yo'q
ha
Yo'q
ha
Darhol klonlash
Yo'q
ha
ha
ha
ha
Saqlash drayveri konteyner ichida ishlatilishi mumkin
ha
ha
Yo'q
Yo'q
Yo'q
Eski suratlardan tiklash (oxirgi emas)
ha
ha
ha
Yo'q
ha
Saqlash kvotalari
ha(*)
ha
ha
ha
Yo'q
Sehrgar yordamida tarmoq va saqlash havzasini ishga tushirish ^
Biz ko'rib chiqadigan keyingi buyruq ishga tushirish ustasi yordamida oddiy savollarga javob berish orqali LXD ning asosiy komponentlarini sozlashni taklif qiladi.
Buyruqni ishga tushirish lxc init va quyidagi misolda ko'rsatilganidek, ikkita nuqtadan keyin savollarga javoblarni kiriting yoki ularni shartlaringizga ko'ra o'zgartiring:
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]:
Oldingi bosqichda biz yaratdik Saqlash havzasi qaysi nom berilgan ssdpool va fayl mening tizimimda joylashgan /var/lib/lxd/disks/ssdpool.img. Ushbu fayl tizimi manzili mening shaxsiy kompyuterimdagi jismoniy SSD diskiga mos keladi.
Quyidagi harakatlar, o'ynagan rolni tushunishni kengaytirish Saqlash havzasi omborida biz ikkinchisini yaratamiz Saqlash havzasi u jismonan boshqa turdagi diskda, HDDda joylashgan bo'ladi. Muammo shundaki, LXD sizga yaratishga ruxsat bermaydi Saqlash havzasi manzildan tashqarida /var/lib/lxd/disks/ va hatto ramziy havolalar ham ishlamaydi, ishlab chiquvchining javobini ko'ring. Biz ishga tushirish/formatlash vaqtida bu cheklovni chetlab o'tishimiz mumkin Saqlash havzasi kalitda buni ko'rsatib, qaytarma faylga yo'l o'rniga qiymatni blok qurilmasi sifatida ko'rsatish orqali source.
Shunday qilib, yaratishdan oldin Saqlash havzasi fayl tizimingizdagi u foydalanadigan orqaga aylanish faylini yoki mavjud bo'limni belgilashingiz kerak. Buning uchun biz faylni yaratamiz va undan foydalanamiz, uning hajmi 10 Gb gacha bo'ladi:
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
Keling, orqaga aylanish faylini bepul qayta ishlash qurilmasiga ulaymiz:
Kalit uchun rahmat --show Buyruqni bajarish ekranga bizning loopback faylimiz ulangan qurilma nomini qaytaradi. Agar kerak bo'lsa, harakatlarimiz to'g'ri ekanligiga ishonch hosil qilish uchun ushbu turdagi barcha band qurilmalar ro'yxatini ko'rsatishimiz mumkin:
Ro'yxatda siz qurilma borligini topishingiz mumkin /dev/loop1 loopback fayli kiritilgan /mnt/work/lxd/hddpool.img, va qurilmada /dev/loop0 loopback fayli kiritilgan /var/lib/lxd/disks/ssdpool.img bu standartga mos keladi Saqlash havzasi.
Quyidagi buyruq yangisini yaratadi Saqlash havzasi LXD da biz hozirgina tayyorlagan orqaga qaytish fayli asosida. LXD orqaga qaytish faylini formatlaydi /mnt/work/lxd/hddpool.img qurilmada /dev/loop1 BTRFS fayl tizimi uchun:
Yaratgandan keyin Saqlash havzasi, agar kerak bo'lsa, uni kengaytirish mumkin. Uchun Saqlash havzasi BTRFS fayl tizimi asosida quyidagi buyruqlarni bajaring:
Orqaga aylanma faylni qayta ishlash qurilmasi uyasiga avtomatik kiritish ^
Xost tizimini, faylni qayta ishga tushirishda bizda bitta kichik muammo bor /mnt/work/lxd/hddpool.img qurilmadan "uchib ketadi" /dev/loop1 va LXD xizmati yuklanganda ishlamay qoladi, chunki u ushbu qurilmada uni ko'rmaydi. Ushbu muammoni hal qilish uchun siz ushbu faylni qurilmaga joylashtiradigan tizim xizmatini yaratishingiz kerak /dev/loop1 xost tizimi yuklanganda.
Keling, yarataylik birlik fayl turi xizmat в /etc/systemd/system/ SystemD ishga tushirish tizimi uchun:
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
Xizmatni faollashtirish:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.
Xost tizimini qayta ishga tushirgandan so'ng, biz xizmat holatini tekshiramiz:
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).
Chiqishdan biz xizmat holatini tekshirishimiz mumkin faol, skriptimizni bitta buyruqdan bajarish tugallanganiga qaramay, variant bizga buni amalga oshirishga imkon berdi RemainAfterExit=true.
Barcha konteyner jarayonlari xost tizimida uning yadrosidan foydalangan holda yakka holda ishlayotganligi sababli, konteyner jarayonlarining xost tizimiga kirishini qo'shimcha himoya qilish uchun LXD jarayon imtiyozlarini taqdim etadi, bu erda:
Imtiyozli konteynerlar - bular UID va GID jarayonlari xost tizimidagi kabi bir xil egasiga mos keladigan konteynerlar. Misol uchun, UID 0 ga ega bo'lgan konteynerda ishlaydigan jarayon host tizimidagi UID 0 ga ega bo'lgan jarayon bilan bir xil kirish huquqlariga ega. Boshqacha qilib aytganda, konteynerdagi ildiz foydalanuvchi nafaqat barcha huquqlarga ega. konteyner, shuningdek, agar u konteynerning izolyatsiya qilingan nom maydonidan tashqariga chiqa olsa, xost tizimida.
Imtiyozsiz konteynerlar - bular 0 dan 65535 gacha raqamlar bilan UID va GID egasiga tegishli jarayonlar bo'lgan konteynerlar, lekin xost tizimi uchun egasi mos ravishda qo'shilgan SubUID va SubGID bitlari yordamida maskalanadi. Masalan, konteynerda UID=0 bo'lgan foydalanuvchi xost tizimida shunday ko'rinadi SubUID + UID. Bu xost tizimini himoya qiladi, chunki konteynerdagi har qanday jarayon izolyatsiya qilingan nom maydonidan qochib qutula olsa, u faqat noma'lum, juda yuqori UID/GID bilan xost tizimi bilan bog'lanishi mumkin.
Odatiy bo'lib, yangi yaratilgan konteynerlar imtiyozsiz maqomga ega va shuning uchun biz SubUID va SubGIDni belgilashimiz kerak.
Keling, mos ravishda SubUID va SubGID uchun niqobni o'rnatadigan ikkita konfiguratsiya faylini yarataylik:
Biz ilgari ishga tushirish ustasi yordamida tarmoqni ishga tushirganimiz uchun lxd init va tarmoq qurilmasini yaratdi lxdbr0, keyin ushbu bo'limda biz oddiygina LXD-da tarmoqqa ulanish va mijoz buyrug'i yordamida virtual kommutator (ko'prik) yaratish bilan tanishamiz.
Quyidagi diagrammada kalit (ko'prik) xost va konteynerlarni tarmoqqa qanday ulashi ko'rsatilgan:
Konteynerlar tarmoq orqali boshqa konteynerlar yoki ushbu konteynerlar xizmat ko'rsatadigan xost bilan bog'lanishi mumkin. Buning uchun konteynerlarning virtual tarmoq kartalarini virtual kalit bilan ulashingiz kerak. Biz birinchi navbatda kalit yaratamiz va konteynerning o'zi yaratilgandan so'ng keyingi boblarda konteynerning tarmoq interfeyslari bog'lanadi.
Quyidagi buyruq pastki tarmoq bilan kalitni yaratadi 10.0.5.0/24 va IPv4 manzili 10.0.5.1/24, shuningdek, o'z ichiga oladi ipv4.nat konteynerlar NAT xizmatidan foydalangan holda xost orqali Internetga kirishlari mumkin:
LXD-dagi har bir konteyner o'z konfiguratsiyasiga ega va uni global e'lon qilingan konfiguratsiyalar bilan kengaytirishi mumkin. konfiguratsiya profillari. Konteynerga konfiguratsiya profillarini qo'llash kaskad modeliga ega, quyidagi misol buni ko'rsatadi:
Ushbu misolda LXD tizimida uchta profil yaratilgan: default, hddpool и hostfs. Barcha uchta profil mahalliy konfiguratsiyaga (kulrang maydon) ega bo'lgan konteynerga qo'llaniladi. Profil default qurilmaga ega root parametrga ega pool tengdir ssdpool, lekin kaskadli konfiguratsiya ilova modeli tufayli biz konteynerga profilni qo'llashimiz mumkin hddpool parametrga ega pool profildagi bir xil parametrni bekor qiladi default va konteyner qurilma konfiguratsiyasini oladi root parametr bilan pool teng hddpool, va profil hostfs shunchaki konteynerga yangi qurilma qo'shadi.
Mavjud konfiguratsiya profillari ro'yxatini ko'rish uchun quyidagi buyruqdan foydalaning:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Profil bilan ishlash uchun mavjud buyruqlarning to'liq ro'yxatini kalitni qo'shish orqali olish mumkin --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
Standart konfiguratsiya profili default konteyner uchun tarmoq kartasi konfiguratsiyasi mavjud emas va barcha yangi yaratilgan konteynerlar tarmoqqa ega emas, ular uchun alohida buyruq bilan mahalliy (ajratilgan) tarmoq qurilmalarini yaratish kerak, lekin biz konfiguratsiyada global tarmoq qurilmasini yaratishimiz mumkin. ushbu profildan foydalanadigan barcha konteynerlar o'rtasida almashiladigan profil. Shunday qilib, yangi konteyner yaratish buyrug'idan so'ng darhol ular tarmoqqa kirish imkoniyatiga ega bo'ladilar. Shu bilan birga, hech qanday cheklovlar yo'q, agar kerak bo'lsa, biz har doim mahalliy tarmoq qurilmasini yaratishimiz mumkin.
Quyidagi buyruq qurilmani konfiguratsiya profiliga qo'shadi eth0 turi nic tarmoqqa ulangan lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Shuni ta'kidlash kerakki, biz qurilmani konfiguratsiya profiliga qo'shganimiz sababli, agar biz qurilmada statik IP-manzilni ko'rsatgan bo'lsak, u holda ushbu profildan foydalanadigan barcha konteynerlar bir xil IP-manzilga ega bo'ladi. Agar konteyner uchun ajratilgan statik IP-manzilga ega konteyner yaratish zarurati tug'ilsa, tarmoq qurilmasi konfiguratsiyasini profil darajasida emas, IP-manzil parametri bilan konteyner darajasida (mahalliy konfiguratsiya) yaratishingiz kerak.
Profilni tekshiramiz:
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: []
Ushbu profilda biz barcha yangi yaratilgan konteynerlar uchun ikkita qurilma yaratilishini ko'rishimiz mumkin:
eth0 - Qurilma turi nic kalitga ulangan (tarmoq ko'prigi) lxdbr0
root - Qurilma turi disk saqlash hovuzidan foydalanadi ssdpool
Oldindan yaratilgan foydalanish uchun Saqlash havzasi konteynerlar, konfiguratsiya profilini yarating ssdroot kabi qurilmani qo'shamiz disk o'rnatish nuqtasi bilan / (ildiz) ilgari yaratilganidan foydalangan holda Saqlash havzasi - ssdpool:
Konteynerlar Linux yadrosiga ega bo'lmagan maxsus yig'ilgan distributivlar bo'lgan tasvirlardan yaratilgan. Shuning uchun, konteynerni ishga tushirishdan oldin, uni ushbu rasmdan joylashtirish kerak. Tasvirlar manbai mahalliy ombor bo'lib, unga tasvirlar tashqi omborlardan yuklab olinadi.
Cheklangan sonli ustunlarni ko'rsatish uchun biz variantdan foydalandik -c parametrlari bilan dasut, shuningdek, buyruq bilan ro'yxat uzunligini chekladi head.
Tasvirlar ro'yxatini ko'rsatish uchun filtrlash mavjud. Quyidagi buyruq barcha mavjud tarqatish arxitekturalari ro'yxatini beradi AlpineLinux:
Konteynerdan foydalanishni boshlash uchun siz global ombordan mahalliyga rasm qo'shishingiz kerak local:. Endi mahalliy ombor bo'sh, buyruq bunga ishonch hosil qiladi lxc image list. Agar usul list omborni ko'rsatmang, keyin mahalliy ombor sukut bo'yicha ishlatiladi - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Ombordagi tasvirlar quyidagi usullar yordamida boshqariladi:
komanda
tavsifi
lxc rasm afsus
Rasm taxalluslarini boshqaring
lxc rasm nusxa ko'chirish
Tasvirlarni serverlar o'rtasida nusxalash
lxc rasm o'chirish
Rasmlarni o'chirish
lxc rasm tahrir
Rasm xususiyatlarini tahrirlash
lxc rasm eksport
Rasmlarni eksport qilish va yuklab olish
Interfaol rejimga qo'shimcha ravishda, LXD interaktiv bo'lmagan konfiguratsiyani o'rnatish rejimini ham qo'llab-quvvatlaydi, bu konfiguratsiya YAML fayli ko'rinishida ko'rsatilganda, bajarilishni chetlab o'tib, butun konfiguratsiyani bir vaqtning o'zida o'rnatish imkonini beruvchi maxsus format. Ushbu maqolada yuqorida muhokama qilingan ko'plab interaktiv buyruqlar, jumladan, tarmoq konfiguratsiyasi, konfiguratsiya profillarini yaratish va hk. Biz bu hududni bu yerda yoritmaymiz, uni o'zingiz tekshirib ko'rishingiz mumkin. hujjatlarda.
Keyingi interaktiv buyruq lxc config biz ko'rib chiqadigan konfiguratsiyani o'rnatishga imkon beradi. Masalan, mahalliy omborga yuklab olingan tasvirlar global omborlardan avtomatik ravishda yangilanmasligini ta'minlash uchun biz ushbu xatti-harakatni quyidagi buyruq bilan yoqishimiz mumkin:
Konteyner yaratish uchun buyruqdan foydalaning lxc init qaysi qiymatlar o'tkaziladi репозиторий:образ va keyin konteyner uchun kerakli ID. Repozitoriy mahalliy sifatida belgilanishi mumkin local: har qanday global ham shunday. Agar ombor ko'rsatilmagan bo'lsa, sukut bo'yicha rasmni qidirish uchun mahalliy ombordan foydalaniladi. Agar rasm global ombordan ko'rsatilgan bo'lsa, u holda rasm avval mahalliy omborga yuklab olinadi va keyin konteyner yaratish uchun ishlatiladi.
Birinchi konteynerimizni yaratish uchun quyidagi buyruqni bajaramiz:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Keling, bu erda ishlatadigan buyruq tugmachalarini tartibda ko'rib chiqaylik:
alpine3 — Mahalliy omborga avval yuklangan rasm uchun taxallus (taxallus) koʻrsatilgan. Agar taxallus ushbu rasm uchun yaratilmagan bo'lsa, unda siz har doim rasmga uning nomi bilan murojaat qilishingiz mumkin Barmoq izi bu jadvalda ko'rsatilgan.
alp — Konteyner uchun identifikatorni o'rnatadi
--storage — Bu kalit qaysi ekanligini ko'rsatadi Saqlash havzasi konteyner yaratiladi
--profile — Ushbu tugmalar kaskadli konfiguratsiyani oldindan yaratilgan konfiguratsiya profillaridan konteynerga qo'llaydi
Biz konteynerni ishga tushiramiz, u tarqatishning init tizimini ishga tushira boshlaydi:
lxc start alp
Buyruqdan ham foydalanishingiz mumkin lxc launch bu sizga jamoalarni birlashtirish imkonini beradi lxc init и lxc start bitta operatsiyada.
Idishning holatini tekshirish:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
Bo'limda profiles biz ushbu konteyner ikkita konfiguratsiya profilidan foydalanishiga ishonch hosil qilishimiz mumkin - default и hddroot. Bo'limda devices biz faqat bitta qurilmani aniqlay olamiz, chunki tarmoq qurilmasi profil darajasida yaratilgan default. Konteyner tomonidan ishlatiladigan barcha qurilmalarni ko'rish uchun siz kalit qo'shishingiz kerak --expanded:
Agar biz tarmoq qurilmasi uchun IP-manzilni o'rnatishga harakat qilsak eth0 jamoa lxc config device set alp konteyner konfiguratsiyasi uchun mo'ljallangan bo'lsa, biz qurilma mavjud emasligi haqida xabar beradigan xatolikni olamiz, chunki qurilma eth0 konteyner tomonidan ishlatiladigan profilga tegishli default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Biz, albatta, statik IP manzilni o'rnatishimiz mumkin eth0 profildagi qurilmalar, lekin bu profildan foydalanadigan barcha konteynerlar uchun bir xil bo'ladi. Shuning uchun, konteynerga bag'ishlangan qurilmani qo'shamiz:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Keyin konteynerni qayta ishga tushirishingiz kerak:
lxc restart alp
Agar hozir konteyner konfiguratsiyasiga qaraydigan bo'lsak, biz variantni ishlatishimiz shart emas --expanded tarmoq qurilmasini ko'rish uchun eth0, chunki biz uni konteyner darajasida yaratdik va u profildan bir xil qurilma ustida kaskad qildi default:
Tarmoq ulanishlarini chetlab o'tib, konteynerdagi buyruqlarni to'g'ridan-to'g'ri bajarish uchun buyruqdan foydalaning lxc exec tizim qobig'ini ishga tushirmasdan konteynerdagi buyruqlarni bajaradi. Agar siz qobiqdagi buyruqni o'zgaruvchilar, fayllarni qayta yo'naltirish (quvur) va boshqalar kabi qobiq naqshlari yordamida bajarishingiz kerak bo'lsa, unda siz qobiqni aniq ishga tushirishingiz va buyruqni kalit sifatida topshirishingiz kerak, masalan:
lxc exec alp -- /bin/sh -c "echo $HOME"
Buyruq maxsus qochish belgisidan foydalangan maxsus belgi uchun $ shunday qilib, o'zgaruvchi $HOME xost mashinasida talqin qilinmagan, faqat konteyner ichida talqin qilingan.
Bundan tashqari, interaktiv qobiq rejimini ishga tushirish va keyin qisqa tugmani bajarish orqali sessiyani tugatish mumkin CTRL+D:
LXD da siz maxsus konfiguratsiya to'plamidan foydalanib konteyner resurslarini boshqarishingiz mumkin. Konteyner konfiguratsiyasi parametrlarining to'liq ro'yxatini topish mumkin hujjatlarda.
Parametr limits.memory konteyner uchun mavjud RAM miqdorini cheklaydi. Qiymat raqam va bittadan iborat mavjud qo'shimchalar.
Keling, konteynerning RAM chegarasini 256 MB ga o'rnatamiz:
lxc config set alp limits.memory 256MB
Shuningdek, xotirani cheklash uchun boshqa parametrlar ham mavjud:
limits.memory.enforce
limits.memory.hugepages
limits.memory.swap
limits.memory.swap.priority
komanda lxc config show Sizga butun konteyner konfiguratsiyasini, shu jumladan o'rnatilgan qo'llaniladigan resurs chegarasini ko'rsatishga imkon beradi:
CPU resurslarini cheklashning bir necha yo'li mavjud. cheklovlar turlari:
limit.cpu - konteynerni bir yoki bir nechta CPU yadrolariga bog'laydi
limits.cpu.allowance - vaqt chegarasi o'tib ketganda CFS rejalashtiruvchi kvotalari yoki foiz o'tib ketganda universal protsessor resurslarini almashish mexanizmini boshqaradi
limits.cpu.priority - protsessorlar to'plamini baham ko'radigan bir nechta misollarga protsessorlarning bir xil foizi tayinlanganda rejalashtirish ustuvorligi
Bunday cheklovlarga qo'shimcha ravishda limits.read, limits.write biz shuningdek, konteyner tomonidan iste'mol qilinadigan disk maydoni miqdorini cheklashimiz mumkin (faqat ZFS yoki BTRFS bilan ishlaydi):
lxc config device set alp root size=2GB
O'rnatishdan so'ng, parametrda devices.root.size Belgilangan chegarani tekshirishimiz mumkin:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Ishlatilgan disk kvotalarini ko'rish uchun biz buyruqdan olishimiz mumkin 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
Konteynerning ildiz qurilmasi uchun 2 GB ga cheklov qo'yganimizga qaramay, tizim yordam dasturlari, masalan df bu cheklovni ko'rmaydi. Buning uchun biz kichik test o'tkazamiz va uning qanday ishlashini bilib olamiz.
Keling, ikkita yangi bir xil konteyner yarataylik Saqlash havzasi (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Agar biz ikkinchi konteynerga qarasak, xuddi shu joyda fayl mavjudligini tekshiring, keyin bu fayl u erda bo'lmaydi, bu kutilmoqda, chunki konteynerlar o'zlarida yaratilgan. Saqlash hajmi xuddi shunday Saqlash havzasi:
lxc exec alp2 -- ls -lh
total 0
Ammo keling, u ishlab chiqaradigan qiymatlarni taqqoslaylik df bir va boshqa konteynerda:
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% /
...
Qurilma /dev/loop1 ildiz bo'limi sifatida o'rnatilgan Saqlash havzasi Bu konteynerlar foydalanadigan, shuning uchun ular hajmini ikkita o'rtasida bo'lishadi.
LXD oniy tasvirlarni yaratish va ulardan konteyner holatini tiklash qobiliyatiga ega.
Surat yaratish uchun quyidagi buyruqni bajaring:
lxc snapshot alp snapshot1
Jamoa lxc snapshot kalit mavjud emas list, shuning uchun oniy tasvirlar ro'yxatini ko'rish uchun konteyner haqida umumiy ma'lumotni ko'rsatadigan buyruqni ishlatishingiz kerak:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Buyruq yordamida konteynerni oniy rasmdan tiklashingiz mumkin lxc restore Qayta tiklash amalga oshiriladigan konteyner va surat taxallusni ko'rsatish:
lxc restore alp snapshot1
Suratni o'chirish uchun quyidagi buyruq ishlatiladi. Shuni esda tutingki, buyruq sintaksisi boshqalarga o'xshamaydi, bu erda konteyner nomidan keyin to'g'ridan-to'g'ri chiziqni belgilashingiz kerak. Agar qiya chiziq qoldirilgan bo'lsa, oniy rasmni o'chirish buyrug'i konteynerni o'chirish buyrug'i sifatida talqin qilinadi!
lxc delete alp/snapshot1
Yuqoridagi misolda biz fuqaroligi bo'lmagan oniy tasvirlarni ko'rib chiqdik. LXD-da yana bir turdagi oniy tasvirlar mavjud - bu konteynerdagi barcha jarayonlarning joriy holatini saqlaydi. Holatli oniy suratlar bilan bog'liq bir qator qiziqarli va foydali xususiyatlar mavjud.