Хусусиятҳои асосии LXD - системаҳои контейнерии Linux

Хусусиятҳои асосии LXD - системаҳои контейнерии Linux

LXD Менеҷери контейнерҳои системаи насли оянда аст, бинобар ин гуфта мешавад манбаъ. Он интерфейси корбариро ба мошинҳои виртуалӣ пешниҳод мекунад, аммо ба ҷои он контейнерҳои Linux-ро истифода мебарад.

асосии LXD як демони имтиёзнок (хизматест, ки бо ҳуқуқи реша кор мекунад), ки REST API-ро тавассути васлаки маҳаллии unix ва инчунин тавассути шабака дар сурати насб кардани конфигуратсияи мувофиқ таъмин мекунад. Мизоҷон, ба монанди абзори сатри фармон, ки бо LXD дода шудааст, тавассути ин API REST дархост пешниҳод мекунанд. Ин маънои онро дорад, ки новобаста аз он ки шумо ба мизбони маҳаллӣ ё мизбони дурдаст дастрасӣ доред, ҳама чиз якхела кор мекунад.

Дар ин мақола мо дар бораи мафҳумҳои LXD ба таври муфассал таваққуф нахоҳем кард, мо тамоми қобилиятҳои мавҷударо, ки дар ҳуҷҷатҳо зикр шудаанд, баррасӣ намекунем, аз ҷумла татбиқи охирин дар версияҳои охирини LXD дастгирии мошинҳои виртуалии QEMU дар баробари контейнерҳо. Ба ҷои ин, мо танҳо асосҳои идоракунии контейнерҳоро меомӯзем - насб кардани ҳавзҳои нигоҳдорӣ, шабакасозӣ, идора кардани контейнер, татбиқи маҳдудияти захираҳо ва чӣ гуна истифода бурдани тасвирҳо, то шумо фаҳмиши асосии LXD ва истифодаи контейнерҳоро дар Linux гиред.

Барои маълумоти пурра ба манбаи расмӣ муроҷиат кунед:

Навигатсия

Насбкунии LXD ^

Насб кардани LXD дар тақсимоти Ubuntu ^

Дар бастаи тақсимоти Ubuntu 19.10 lxd пахши барнома дорад бастаи фаврӣ:

apt search lxd

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

Ин маънои онро дорад, ки ду баста якбора насб карда мешавад, яке ҳамчун бастаи система ва дигаре ҳамчун бастаи фаврӣ. Насб кардани ду баста дар система метавонад мушкилоте ба вуҷуд орад, ки дар он ҷо бастаи система метавонад ятим гардад, агар бастаи фаврӣ аз ҷониби мудири бастаи snap хориҷ карда шавад.

Пайдо кардани баста lxd дар анбори snap шумо метавонед фармони зеринро истифода баред:

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

Бо иҷро кардани фармон list шумо метавонед боварӣ ҳосил кунед, ки баста lxd ҳанӯз насб нашудааст:

snap list

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

Сарфи назар аз он, ки LXD як бастаи фаврӣ аст, он бояд тавассути бастаи система насб карда шавад lxd, ки дар система гурухи мувофикро ташкил мекунад, утилитахои заруриро дар /usr/bin ва ғайра.

sudo apt update
sudo apt install lxd

Биёед боварӣ ҳосил кунем, ки баста ҳамчун бастаи фаврӣ насб шудааст:

snap list

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

Насб кардани LXD дар тақсимоти Arch Linux ^

Барои насб кардани бастаи LXD дар система, шумо бояд фармонҳои зеринро иҷро кунед, якум рӯйхати бастаҳои системаро дар репозиторий навсозӣ мекунад, дуюмаш бевосита бастаро насб мекунад:

sudo pacman -Syyu && sudo pacman -S lxd

Пас аз насб кардани баста, барои идоракунии LXD аз ҷониби корбари муқаррарӣ, он бояд ба гурӯҳи система илова карда шавад lxd:

sudo usermod -a -G lxd user1

Биёед боварӣ ҳосил кунем, ки истифодабаранда user1 ба гурӯҳ илова карда шуд lxd:

id -Gn user1

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

Агар гурух lxd дар рӯйхат намоён нест, пас шумо бояд сеанси корбарро дубора фаъол кунед. Барои ин, шумо бояд аз система хориҷ шавед ва дар зери ҳамон корбар ворид шавед.

Фаъол кардан дар systemd боркунии хидмати LXD ҳангоми оғози система:

sudo systemctl enable lxd

Биёед хидматро оғоз кунем:

sudo systemctl start lxd

Санҷиши ҳолати хидмат:

sudo systemctl status lxd

Нигоҳдории LXD (Нигоҳдорӣ) ^

Пеш аз оғози оғозкунӣ, мо бояд фаҳмем, ки нигоҳдорӣ дар LXD чӣ гуна ба таври мантиқӣ ҷойгир карда шудааст.

Нигоҳдорӣ (гардероб) аз он иборат аст аз як ё якчанд Ҳавзи нигоҳдорӣ ки яке аз системаҳои файлии дастгирӣшаванда, аз қабили ZFS, BTRFS, LVM ё феҳристҳои муқаррариро истифода мебарад. Хар Ҳавзи нигоҳдорӣ ба ҷилдҳо тақсим мешавад (Ҳаҷми нигоҳдорӣ) ки дорои тасвирҳо, контейнерҳо ё маълумот барои мақсадҳои дигар.

  • Тасвирҳо - инҳо тақсимоти махсус ҷамъшуда бе ядрои Linux мебошанд ва аз манбаъҳои беруна дастрасанд
  • Контейнерҳо - инҳо тақсимоти ҷойгиршуда аз тасвирҳо мебошанд, ки барои истифода омодаанд
  • Суратҳо - инҳо аксҳои ҳолати контейнерҳо мебошанд, ки шумо метавонед ба онҳо баргардед

Хусусиятҳои асосии LXD - системаҳои контейнерии Linux

Барои идоракунии захира дар LXD, фармонро истифода баред lxc storage сертификате, ки шумо метавонед онро бо нишон додани калид ба даст оред - lxc storage --help

Фармони зерин рӯйхати ҳамаро нишон медиҳад Ҳавзи нигоҳдорӣ дар нигаҳдории LXD:

lxc storage list

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

Барои дидани рӯйхати ҳама Ҳаҷми нигоҳдорӣ дар интихобшуда Ҳавзи нигоҳдорӣ ба коллектив хизмат мерасонад 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       |
+-----------+----------------------------------+-------------+---------+

Инчунин, агар барои Ҳавзи нигоҳдорӣ Ҳангоми эҷод, системаи файлии BTRFS интихоб карда шуд, пас рӯйхат гиред Ҳаҷми нигоҳдорӣ ё ҷилдҳо дар тафсири BTRFS, шумо метавонед асбобҳои ин системаи файлиро истифода баред:

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

Оғози LXD ^

Пеш аз сохтан ва истифода бурдани контейнерҳо, шумо бояд оғозкунии умумии LXD-ро иҷро кунед, ки шабака ва анборро эҷод ва танзим мекунад. Инро метавон ба таври дастӣ бо истифода аз фармонҳои стандартии муштарӣ, ки дар рӯйхат тавассути занги фармон дастрасанд, анҷом дод lxc --help ё бо истифода аз устоди оғозёбӣ lxd init ба чанд савол чавоб дод.

Интихоби системаи файлӣ барои ҳавзи нигоҳдорӣ ^

Ҳангоми оғозёбӣ, LXD якчанд саволҳо медиҳад, аз ҷумла муайян кардани навъи системаи файлӣ барои пешфарз Ҳавзи нигоҳдорӣ. Бо нобаёнӣ, барои он системаи файлии BTRFS интихоб карда мешавад. Пас аз офариниш ба дигар FS иваз кардан ғайриимкон хоҳад буд. Барои интихоби FS тавсия дода мешавад ҷадвали муқоисаи хусусият:

Фарқияти
директорӣ
Бостон
LVM
ZFS
CEPH

Нигоҳдории тасвири оптимизатсияшуда
Не
ҳа
ҳа
ҳа
ҳа

Эҷоди мисоли оптимизатсияшуда
Не
ҳа
ҳа
ҳа
ҳа

Эҷоди аксҳои оптимизатсияшуда
Не
ҳа
ҳа
ҳа
ҳа

Интиқоли тасвири оптимизатсияшуда
Не
ҳа
Не
ҳа
ҳа

Интиқоли намунаҳои оптимизатсияшуда
Не
ҳа
Не
ҳа
ҳа

нусхабардорӣ дар навиштан
Не
ҳа
ҳа
ҳа
ҳа

Блок асос ёфтааст
Не
Не
ҳа
Не
ҳа

Клонкунии фаврӣ
Не
ҳа
ҳа
ҳа
ҳа

Драйвери нигаҳдорӣ дар дохили контейнер истифода мешавад
ҳа
ҳа
Не
Не
Не

Барқарор кардани аксҳои кӯҳна (на охирин)
ҳа
ҳа
ҳа
Не
ҳа

Квотаҳои нигоҳдорӣ
ҳа (*)
ҳа
ҳа
ҳа
Не

Бо истифода аз устод оғоз кардани шабака ва ҳавзи нигоҳдорӣ ^

Фармони навбатӣ, ки мо онро баррасӣ хоҳем кард, пешниҳод мекунад, ки ҷузъҳои асосии LXD тавассути ҷавоб додан ба саволҳои оддӣ бо истифода аз устоди оғозсозӣ насб карда шавад.

Фармони иҷро кунед lxc init ва ҷавобҳоро ба саволҳо пас аз ду нуқта, тавре ки дар мисоли зер нишон дода шудааст, ворид кунед ё онҳоро мувофиқи шартҳои худ иваз кунед:

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

Эҷоди як ҳавзи нигаҳдории иловагӣ ^

Дар қадами қаблӣ мо эҷод кардем Ҳавзи нигоҳдорӣ ки номаш дода шудааст ssdpool ва файли он дар системаи ман ҷойгир аст /var/lib/lxd/disks/ssdpool.img. Ин суроғаи системаи файлӣ ба диски физикии SSD дар компютери ман мувофиқат мекунад.

Амалҳои зерин, барои васеъ кардани фаҳмиши нақши бозидаи Ҳавзи нигоҳдорӣ дар анбор, мо як дуюмро эҷод мекунем Ҳавзи нигоҳдорӣ ки ба таври физикӣ дар як навъи диски HDD ҷойгир карда мешавад. Масъала дар он аст, ки LXD ба шумо имкон намедиҳад, ки эҷод кунед Ҳавзи нигоҳдорӣ берун аз суроға /var/lib/lxd/disks/ ва ҳатто истинодҳои рамзӣ кор намекунанд, ҷавоби таҳиягарро бубинед. Мо метавонем ин маҳдудиятро ҳангоми оғозёбӣ/форматсозӣ гузаронем Ҳавзи нигоҳдорӣ бо нишон додани арзиш ҳамчун дастгоҳи блок ба ҷои роҳи файли бозгашт бо нишон додани ин дар калид source.

Пас, пеш аз эҷод кардан Ҳавзи нигоҳдорӣ ба шумо лозим аст, ки файли такрорӣ ё қисмати мавҷударо дар системаи файлии шумо, ки он истифода хоҳад кард, муайян кунед. Барои ин, мо файлеро эҷод ва истифода хоҳем кард, ки андозаи онро то 10 ГБ маҳдуд мекунем:

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

Биёед файли бозгаштро ба дастгоҳи бозгашти ройгон пайваст кунем:

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

/dev/loop1

Ташаккур ба калид --show иҷрои фармон ба экран номи дастгоҳеро бармегардонад, ки файли бозгашти мо ба он пайваст аст. Агар лозим бошад, мо метавонем рӯйхати ҳамаи дастгоҳҳои бандҳои ин навъиро нишон диҳем, то боварӣ ҳосил кунем, ки амалҳои мо дурустанд:

losetup -l

NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                      DIO LOG-SEC
/dev/loop1         0      0         0  0 /mnt/work/lxd/hddpool.img        0     512
/dev/loop0         0      0         1  0 /var/lib/lxd/disks/ssdpool.img   0     512

Аз рӯйхат шумо метавонед пайдо кунед, ки дастгоҳ дорад /dev/loop1 файли бозгашт дохил карда шудааст /mnt/work/lxd/hddpool.img, ва дар дастгоҳ /dev/loop0 файли бозгашт дохил карда шудааст /var/lib/lxd/disks/ssdpool.img ки ба пешфарз мувофик аст Ҳавзи нигоҳдорӣ.

Фармони зерин фармони нав эҷод мекунад Ҳавзи нигоҳдорӣ дар LXD дар асоси файли бозгашт, ки мо ҳоло омода кардаем. LXD файли бозгаштро формат мекунад /mnt/work/lxd/hddpool.img дар дастгоҳ /dev/loop1 барои системаи файлии BTRFS:

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

Биёед рӯйхати ҳамаро нишон диҳем Ҳавзи нигоҳдорӣ ба экран:

lxc storage list

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

Баланд бардоштани андозаи ҳавзи нигоҳдорӣ ^

Пас аз офариниш Ҳавзи нигоҳдорӣ, агар зарур бошад, онро васеъ кардан мумкин аст. Барои Ҳавзи нигоҳдорӣ дар асоси системаи файлии BTRFS, фармонҳои зеринро иҷро кунед:

sudo truncate -s +5G /mnt/work/lxd/hddpool.img
sudo losetup -c /dev/loop1
sudo btrfs filesystem resize max /var/lib/lxd/storage-pools/hddpool

Ҷойгиркунии худкори файли бозгашт ба ковокии дастгоҳи бозгашт ^

Мо як мушкили хурд дорем, вақте ки системаи ҳост аз нав оғоз мешавад, файл /mnt/work/lxd/hddpool.img аз аппарата «парвоз» мебарояд /dev/loop1 ва хидмати LXD ҳангоми боркунӣ аз кор мемонад, зеро он онро дар ин дастгоҳ намебинад. Барои ҳалли ин мушкилот шумо бояд хидмати системаеро эҷод кунед, ки ин файлро ба дастгоҳ ворид мекунад /dev/loop1 вақте ки системаи мизбон пурбор мешавад.

биёед эҷод кунем воҳима навъи файл хизматрасонӣ в /etc/systemd/system/ барои системаи оғозкунии SystemD:

cat << EOF | sudo tee -a /etc/systemd/system/lxd-hddpool.service
[Unit]
Description=Losetup LXD Storage Pool (hddpool)
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img
RemainAfterExit=true

[Install]
WantedBy=local-fs.target
EOF

Хидматро фаъол кунед:

sudo systemctl enable lxd-hddpool

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

Пас аз бозоғоз кардани системаи ҳост, мо ҳолати хидматро тафтиш мекунем:

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

Аз баромад мо метавонем тафтиш кунем, ки ҳолати хидматрасонӣ аст фаъол, сарфи назар аз он, ки иҷрои скрипти мо аз як фармон ба анҷом расид, вариант ба мо имкон дод, ки ин корро кунем RemainAfterExit=true.

Бехатарӣ. Имтиёзҳои контейнерӣ ^

Азбаски ҳама равандҳои контейнер воқеан дар алоҳидагӣ дар системаи ҳост бо истифода аз ядрои он кор мекунанд, барои ҳифзи минбаъдаи дастрасии равандҳои контейнерӣ ба системаи ҳост, LXD имтиёзи равандро пешниҳод мекунад, ки дар он ҷо:

  • Контейнерҳои имтиёзнок - ин контейнерҳо мебошанд, ки дар онҳо равандҳои UID ва GID ба соҳиби ҳамон системаи ҳост мувофиқат мекунанд. Масалан, раванде, ки дар контейнер бо UID аз 0 кор мекунад, ҳама ҳуқуқҳои дастрасиро дорад, ки раванд дар системаи ҳост бо UID 0 аст. Ба ибораи дигар, корбари реша дар контейнер тамоми ҳуқуқҳоро дорад, на танҳо дар контейнер, балки инчунин дар системаи ҳост, агар вай берун аз фазои номҳои ҷудошудаи контейнер баромада тавонад.

  • Контейнерҳои беимтиёз - ин контейнерҳо мебошанд, ки дар онҳо равандҳо ба соҳиби UID ва GID бо рақами аз 0 то 65535 тааллуқ доранд, аммо барои системаи ҳост соҳиби бо истифода аз битҳои иловагии SubUID ва SubGID мутаносибан ниқоб карда мешавад. Масалан, корбари дорои UID=0 дар контейнер дар системаи ҳост ҳамчунон дида мешавад SubUID + UID. Ин системаи ҳостро муҳофизат мекунад, зеро агар ягон раванд дар контейнер қодир бошад, ки аз фазои ҷудошудаи он фирор кунад, он метавонад танҳо бо системаи ҳост ҳамчун раванд бо UID/GID-и номаълум ва хеле баланд муошират кунад.

Бо нобаёнӣ, контейнерҳои навтаъсис мақоми беимтиёз доранд ва аз ин рӯ мо бояд SubUID ва SubGID-ро муайян кунем.

Биёед ду файли конфигуратсияро эҷод кунем, ки дар онҳо мо ниқобро барои SubUID ва SubGID муқаррар мекунем:

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

Барои татбиқи тағйирот, хидмати LXD бояд аз нав оғоз карда шавад:

sudo systemctl restart lxd

Эҷоди гузариши шабакаи виртуалӣ ^

Азбаски мо қаблан шабакаро бо истифода аз устоди оғозсозӣ оғоз кардем lxd init ва дастгоҳи шабакавӣ таъсис дод lxdbr0, пас дар ин бахш мо танҳо бо шабакасозӣ дар LXD ва тарзи сохтани коммутатори виртуалӣ (пул) бо истифода аз фармони муштарӣ шинос мешавем.

Диаграммаи зерин нишон медиҳад, ки чӣ тавр коммутатор (пул) ҳост ва контейнерҳоро ба шабака мепайвандад:

Хусусиятҳои асосии LXD - системаҳои контейнерии Linux

Контейнерҳо метавонанд тавассути шабака бо контейнерҳои дигар ё хосте, ки дар он ин контейнерҳо хидмат мекунанд, муошират кунанд. Барои ин, шумо бояд кортҳои шабакаи виртуалии контейнерҳоро бо коммутатори виртуалӣ пайваст кунед. Мо аввал коммутатор эҷод мекунем ва интерфейсҳои шабакаи контейнер пас аз сохтани худи контейнер дар бобҳои минбаъда пайваст карда мешаванд.

Фармони зерин коммутаторро бо зершабака эҷод мекунад 10.0.5.0/24 ва суроғаи IPv4 10.0.5.1/24, инчунин дар бар мегирад ipv4.nat то ки контейнерҳо тавассути хост тавассути хидмати NAT ба Интернет дастрасӣ пайдо кунанд:

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

Санҷиши рӯйхати дастгоҳҳои шабакавӣ дар LXD:

lxc network list

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

Шумо инчунин метавонед тафтиш кунед, ки дастгоҳи шабакавӣ бо истифода аз асбоби стандартии тақсимоти Linux сохта шудааст - ip link ё ip addr:

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:ee:7b:5a:6b:44 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet6 fe80::9571:11f3:6e0c:c07b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: lxdbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether c2:38:90:df:cb:59 brd ff:ff:ff:ff:ff:ff
    inet 10.0.5.1/24 scope global lxdbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::c038:90ff:fedf:cb59/64 scope link 
       valid_lft forever preferred_lft forever
5: veth3ddab174@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxdbr0 state UP group default qlen 1000
    link/ether ca:c3:5c:1d:22:26 brd ff:ff:ff:ff:ff:ff link-netnsid 0

Профили конфигуратсия ^

Ҳар як контейнер дар LXD конфигуратсияи худро дорад ва метавонад онро бо конфигуратсияҳои дар саросари ҷаҳон эълоншуда васеъ намояд. профилҳои конфигуратсия. Истифодаи профилҳои конфигуратсия ба контейнер дорои модели каскадӣ мебошад, мисоли зерин инро нишон медиҳад:

Хусусиятҳои асосии LXD - системаҳои контейнерии Linux

Дар ин мисол, се профил дар системаи LXD сохта шудааст: default, hddpool и hostfs. Ҳар се профил ба контейнере татбиқ карда мешавад, ки конфигуратсияи маҳаллӣ дорад (майдони хокистарӣ). Профил default дастгох дорад root ки параметр дорад pool баробар аст ssdpool, аммо ба шарофати модели барномаи конфигуратсияи каскадӣ, мо метавонем профилро ба контейнер татбиқ кунем hddpool ки параметр дорад pool ҳамон параметрро аз профил бекор мекунад default ва контейнер конфигуратсияи дастгоҳро қабул мекунад root бо параметр pool баробар hddpool, ва профил hostfs ба контейнер як дастгоҳи нав илова мекунад.

Барои дидани рӯйхати профилҳои конфигуратсияи дастрас, фармони зеринро истифода баред:

lxc profile list

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

Рӯйхати пурраи фармонҳои дастрасро барои кор бо профил метавон тавассути илова кардани калид ба даст овард --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

Таҳрири профили шумо ^

Профили конфигуратсияи пешфарз default конфигуратсияи корти шабакавӣ барои контейнер надорад ва ҳама контейнерҳои навтаъсис шабака надоранд, барои онҳо бо фармони алоҳида дастгоҳҳои шабакавии маҳаллӣ (бахшидашуда) эҷод кардан лозим аст, аммо мо метавонем дар конфигуратсия дастгоҳи шабакаи глобалиро эҷод кунем. профиле, ки дар байни ҳамаи контейнерҳо бо истифода аз ин профил мубодила карда мешавад. Ҳамин тариқ, фавран пас аз фармони сохтани контейнери нав, онҳо дорои шабакаи дастрасии шабака мешаванд. Дар айни замон, ҳеҷ гуна маҳдудият вуҷуд надорад; мо ҳамеша метавонем дастгоҳи шабакаи маҳаллиро дертар дар ҳолати зарурӣ созем.

Фармони зерин дастгоҳро ба профили конфигуратсия илова мекунад eth0 намуд nic ба шабака пайваст lxdbr0:

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

Бояд қайд кард, ки азбаски мо воқеан дастгоҳро ба профили конфигуратсия илова кардем, агар мо суроғаи IP-и статикиро дар дастгоҳ муайян карда бошем, пас ҳамаи контейнерҳое, ки ин профилро истифода мебаранд, суроғаи якхелаи IP-ро мубодила хоҳанд кард. Агар зарурати сохтани контейнер бо суроғаи IP статикии барои контейнер ҷудошуда вуҷуд дошта бошад, пас шумо бояд конфигуратсияи дастгоҳи шабакавиро дар сатҳи контейнер (конфигуратсияи маҳаллӣ) бо параметри суроғаи IP эҷод кунед, на дар сатҳи профил.

Биёед профилро тафтиш кунем:

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

Дар ин профил мо мебинем, ки барои ҳама контейнерҳои нав сохташуда ду дастгоҳ сохта мешаванд:

  • eth0 - Навъи дастгоҳ nic ба коммутатор пайваст (пули шабакавӣ) lxdbr0
  • root - Навъи дастгоҳ disk ки хавзи анборро истифода мебарад ssdpool

Эҷоди профилҳои нав ^

Барои истифодабарии қаблан сохташуда Ҳавзи нигоҳдорӣ контейнерҳо, сохтани профили конфигуратсия ssdroot ки дар он мо як дастгоҳи монанди илова мекунем disk бо нуқтаи васлкунӣ / (реша) бо истифода аз қаблан сохташуда Ҳавзи нигоҳдорӣ - ssdpool:

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

Ба ҳамин монанд, мо як дастгоҳи монанди эҷод мекунем disk, вале дар ин маврид истифода Ҳавзи нигоҳдорӣ - hddpool:

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

Санҷиши профилҳои конфигуратсия:

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

Анбори тасвирҳо ^

Контейнерҳо аз тасвирҳое сохта мешаванд, ки тақсимоти махсус ҷамъшуда мебошанд, ки ядрои Linux надоранд. Аз ин рӯ, пеш аз ба кор андохтани контейнер, он бояд аз ин тасвир ҷойгир карда шавад. Сарчашмаи тасвирҳо анбори маҳаллӣ мебошад, ки ба он тасвирҳо аз анбори беруна бор карда мешаванд.

Анбори тасвирҳои дурдаст ^

Бо нобаёнӣ, LXD барои қабул кардани тасвирҳо аз се манбаи дурдаст танзим шудааст:

  • ubuntu: (барои тасвирҳои устувори Ubuntu)
  • Ubuntu-Daily: (барои тасвирҳои ҳаррӯзаи Ubuntu)
  • тасвирҳо: (барои як қатор дистроҳои дигар)

lxc remote list

+-----------------+------------------------------------------+--------+--------+
|      NAME       |                   URL                    | PUBLIC | STATIC |
+-----------------+------------------------------------------+--------+--------+
| images          | https://images.linuxcontainers.org       | YES    | NO     |
+-----------------+------------------------------------------+--------+--------+
| local (default) | unix://                                  | NO     | YES    |
+-----------------+------------------------------------------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases | YES    | YES    |
+-----------------+------------------------------------------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | YES    | YES    |
+-----------------+------------------------------------------+--------+--------+

Масалан, репозиторий ubuntu: тасвирҳои зерин дорад:

lxc image -c dasut list ubuntu: | head -n 11

+----------------------------------------------+--------------+----------+------------+
|                   DESCRIPTION                | ARCHITECTURE |   SIZE   |   TYPE     |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150728)  | x86_64       | 153.72MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150819)  | x86_64       | 152.91MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150906)  | x86_64       | 154.69MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150930)  | x86_64       | 153.86MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+

Барои намоиш додани шумораи маҳдуди сутунҳо мо интихобро истифода мебарем -c бо параметрҳо dasut, ва инчунин дарозии рӯйхатро бо фармон маҳдуд кард head.

Филтр барои намоиш додани рӯйхати тасвирҳо дастрас аст. Фармони зерин ҳамаи меъмории паҳнкунии дастрасро номбар мекунад AlpineLinux:

lxc image -c ldast list images:alpine/3.11

+------------------------------+--------------------------------------+--------------+
|            ALIAS             |             DESCRIPTION              | ARCHITECTURE |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11 (3 more)         | Alpine 3.11 amd64 (20200220_13:00)   | x86_64       |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/arm64 (1 more)   | Alpine 3.11 arm64 (20200220_13:00)   | aarch64      |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/armhf (1 more)   | Alpine 3.11 armhf (20200220_13:00)   | armv7l       |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/i386 (1 more)    | Alpine 3.11 i386 (20200220_13:01)    | i686         |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/ppc64el (1 more) | Alpine 3.11 ppc64el (20200220_13:00) | ppc64le      |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/s390x (1 more)   | Alpine 3.11 s390x (20200220_13:00)   | s390x        |
+------------------------------+--------------------------------------+--------------+

Анбори тасвирҳои маҳаллӣ ^

Барои оғози истифодаи контейнер, шумо бояд тасвиреро аз анбори глобалӣ ба анбори маҳаллӣ илова кунед local:. Ҳоло анбори маҳаллӣ холӣ аст, фармон ба ин боварӣ ҳосил мекунад lxc image list. Агар усул list репозиторийро муайян накунед, пас анбори маҳаллӣ бо нобаёнӣ истифода мешавад - local:

lxc image list local:

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

Тасвирҳо дар анбор бо истифода аз усулҳои зерин идора карда мешаванд:

гурӯҳ
Шарҳи

тасвири lxc номи кӯтоҳшуда
Тахаллуси тасвирҳоро идора кунед

тасвири lxc нусха
Тасвирҳоро дар байни серверҳо нусхабардорӣ кунед

тасвири lxc нест кардан
Тасвирҳоро нест кунед

тасвири lxc вироиш
Хусусиятҳои тасвирро таҳрир кунед

тасвири lxc содирот
Тасвирҳоро содирот ва зеркашӣ кунед

тасвири lxc воридот
Тасвирҳоро ба мағозаи тасвирҳо ворид кунед

тасвири lxc маълумоти
Маълумоти муфидро дар бораи тасвирҳо нишон диҳед

тасвири lxc рӯйхат
Рӯйхати тасвирҳо

тасвири lxc навсозӣ
Тасвирҳоро нав кунед

тасвири lxc нишон
Хусусиятҳои тасвирро нишон диҳед

Тасвирро ба анбори маҳаллӣ аз анбори ҷаҳонӣ нусхабардорӣ кунед images::

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

Image copied successfully!

Биёед рӯйхати ҳамаи тасвирҳоеро, ки ҳоло дар анбори маҳаллӣ мавҷуданд, нишон диҳем local::

lxc image -c lfdatsu list local:

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

Танзимоти LXD ^

Илова ба режими интерактивӣ, LXD инчунин режими насби конфигуратсияи ғайриинтерактивиро дастгирӣ мекунад, ин дар он аст, ки конфигуратсия дар шакли файли YAML муайян карда мешавад, формати махсус, ки ба шумо имкон медиҳад, ки тамоми конфигуратсияро якбора насб карда, иҷрои онро иҷро кунед. аз бисёр фармонҳои интерактивӣ, ки дар боло дар ин мақола муҳокима шудаанд, аз ҷумла конфигуратсияи шабака, эҷоди профилҳои конфигуратсия ва ғайра. Мо ин минтақаро дар ин ҷо фаро намегирем, шумо метавонед онро худатон тафтиш кунед. дар ҳуҷҷатҳо.

Фармони навбатии интерактивӣ lxc config ки мо онро дида мебароем, ба шумо имкон медиҳад, ки конфигуратсияро муқаррар кунед. Масалан, барои таъмини он, ки тасвирҳои зеркашидашуда ба анбори маҳаллӣ аз анбори ҷаҳонӣ ба таври худкор нав карда намешаванд, мо метавонем ин рафторро бо фармони зерин фаъол созем:

lxc config set images.auto_update_cached=false

Эҷод ва идоракунии контейнер ^

Барои сохтани контейнер фармонро истифода баред lxc init ки ба он арзишҳо интиқол дода мешаванд репозиторий:образ ва он гоҳ ID-и дилхоҳ барои контейнер. Анборро метавон ҳамчун маҳаллӣ муайян кард local: ҳар яки ҷаҳонӣ низ ҳамин тавр аст. Агар репозиторий муайян нашуда бошад, пас ба таври нобаёнӣ барои ҷустуҷӯи тасвир анбори маҳаллӣ истифода мешавад. Агар тасвир аз анбори глобалӣ муайян карда шуда бошад, он гоҳ тасвир аввал ба анбори маҳаллӣ бор карда мешавад ва сипас барои сохтани контейнер истифода мешавад.

Биёед фармони зеринро иҷро кунем, то контейнери аввалини худро созем:

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

Биёед калидҳои фармонро, ки мо дар ин ҷо истифода мебарем, бубинем:

  • alpine3 — Барои тасвире, ки қаблан ба анбори маҳаллӣ бор карда шуда буд, тахаллус (тахаллус) муайян карда шудааст. Агар тахаллус барои ин тасвир сохта нашуда бошад, шумо ҳамеша метавонед ба тасвири он муроҷиат кунед Санҷишҳо ки дар чадвал нишон дода шудааст.
  • alp — Идентификаторро барои контейнер муқаррар мекунад
  • --storage — Ин калид нишон медихад, ки дар кадоме Ҳавзи нигоҳдорӣ контейнер сохта мешавад
  • --profile — Ин калидҳо конфигуратсияро аз профилҳои конфигуратсияи қаблан сохташуда ба контейнер татбиқ мекунанд

Мо контейнерро ба кор меандозем, ки системаи ибтидоии тақсимотро оғоз мекунад:

lxc start alp

Шумо инчунин метавонед фармонро истифода баред lxc launch ки ба шумо имкон медихад, ки коллективхоро муттахид намоед lxc init и lxc start дар як амалиёт.

Санҷиши ҳолати контейнер:

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

Санҷиши конфигуратсияи контейнер:

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

Дар бахш profiles мо метавонем боварӣ ҳосил кунем, ки ин контейнер ду профили конфигуратсияро истифода мебарад - default и hddroot. Дар бахш devices мо танҳо як дастгоҳро муайян карда метавонем, зеро дастгоҳи шабакавӣ дар сатҳи профил сохта шудааст default. Барои дидани ҳамаи дастгоҳҳое, ки дар контейнер истифода мешаванд, шумо бояд калидро илова кунед --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: ""

Муқаррар кардани суроғаи статикии IP ^

Агар мо кӯшиш кунем, ки суроғаи IP-ро барои дастгоҳи шабакавӣ таъин кунем eth0 даста lxc config device set alp ки барои конфигуратсияи контейнер пешбинӣ шудааст, пас мо хатогиеро мегирем, ки хабар медиҳад, ки дастгоҳ мавҷуд нест, зеро дастгоҳ eth0 ки контейнер истифода мебарад, ба профил тааллук дорад default:

lxc config device set alp eth0 ipv4.address 10.0.5.5

Error: The device doesn't exist

Мо албатта метавонем суроғаи IP-и статикиро барои eth0 дастгоҳҳо дар профил, аммо он барои ҳама контейнерҳое, ки ин профилро истифода мебаранд, якхела хоҳад буд. Аз ин рӯ, биёед дастгоҳи ба контейнер бахшидашударо илова кунем:

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

Пас шумо бояд контейнерро аз нав оғоз кунед:

lxc restart alp

Агар мо ҳоло ба конфигуратсияи контейнер нигоҳ кунем, ба мо лозим нест, ки ин интихобро истифода барем --expanded барои дидани дастгоҳи шабака eth0, зеро мо онро дар сатҳи контейнер офаридаем ва он ба ҳамон дастгоҳ аз профил тоб овард 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: ""

Хориҷ кардани як контейнер ^

Барои хориҷ кардани контейнер, фармонро истифода баред lxc delete, аммо пеш аз кушодани контейнер, он бояд бо истифода аз фармон қатъ карда шавад lxc stop:

lxc stop alp

lxc list

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

Пас аз он ки мо тафтиш кардем, ки ҳолати контейнер шудааст ПУРСИД, онро аз он хориҷ кардан мумкин аст Ҳавзи нигоҳдорӣ:

lxc delete alp

Дастрасӣ ба контейнер ^

Барои иҷро кардани фармонҳо дар контейнер мустақиман, аз пайвастҳои шабакавӣ канорагирӣ карда, фармонро истифода баред lxc exec ки фармонҳоро дар контейнер бе оғоз кардани қабати система иҷро мекунад. Агар ба шумо лозим аст, ки фармонро дар ҷабҳа бо истифода аз намунаҳои ҷабҳа ба монанди тағирёбандаҳо, масирҳои файл (қубур) ва ғайра иҷро кунед, пас шумо бояд ҷабҳаро ба таври возеҳ оғоз кунед ва фармонро ҳамчун калид интиқол диҳед, масалан:

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

Фармон аломати махсуси фирориро истифода бурд барои хусусияти махсус $ то ки тағирёбанда $HOME дар мошини мизбон тафсир нашуд, балки танҳо дар дохили контейнер тафсир карда шуд.

Инчунин мумкин аст, ки реҷаи интерактивии қабатро оғоз кунед ва сипас бо иҷро кардани тугмаи hotkey сеансро анҷом диҳед CTRL+D:

lxc exec alp -- /bin/sh

Идоракунии захираҳои контейнерӣ ^

Дар LXD, шумо метавонед бо истифода аз маҷмӯи махсуси конфигуратсия захираҳои контейнерро идора кунед. Рӯйхати пурраи параметрҳои конфигуратсияи контейнерро пайдо кардан мумкин аст дар ҳуҷҷатҳо.

Маҳдудияти захираҳои RAM ^

Параметр limits.memory миқдори RAM-и дастрасро барои контейнер маҳдуд мекунад. Арзиш як адад ва як аст суффиксҳои дастрас.

Биёед маҳдудияти RAM-и контейнерро ба 256 МБ муқаррар кунем:

lxc config set alp limits.memory 256MB

Инчунин, параметрҳои дигар барои маҳдуд кардани хотира вуҷуд доранд:

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

гурӯҳ lxc config show ба шумо имкон медиҳад, ки тамоми конфигуратсияи контейнерро намоиш диҳед, аз ҷумла маҳдудияти захираҳои истифодашуда, ки муқаррар шудааст:

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 ^

Якчанд роҳҳо барои маҳдуд кардани захираҳои CPU вуҷуд доранд. намудҳои маҳдудиятҳо:

  • limit.cpu - як контейнерро ба як ё якчанд ядрои CPU мепайвандад
  • limits.cpu.allowance - ё квотаҳои банақшагирии CFS-ро ҳангоми гузаштани мӯҳлат идора мекунад ё механизми универсалии мубодилаи захираҳои CPU ҳангоми гузаштани фоиз
  • limits.cpu.priority - афзалияти банақшагир, вақте ки якчанд мисолҳои мубодилаи маҷмӯи протсессорҳо ба як фоизи протсессорҳо таъин карда мешаванд

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

Маҳдудияти фазои диск ^

Илова бар ин, маҳдудиятҳо limits.read, limits.write мо инчунин метавонем ҳаҷми фазои диски аз ҷониби контейнер истеъмолшударо маҳдуд кунем (танҳо бо ZFS ё BTRFS кор мекунад):

lxc config device set alp root size=2GB

Пас аз насб, дар параметр devices.root.size Мо метавонем маҳдудияти муқарраршударо тафтиш кунем:

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

Барои дидани квотаҳои диски истифодашуда мо метавонем аз фармон ба даст орем 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

Сарфи назар аз он, ки мо барои дастгоҳи решаи контейнер маҳдудияти 2 ГБ муқаррар кардаем, утилитаҳои система ба монанди df ин маҳдудиятро нахоҳанд дид. Барои ин мо озмоиши хурде мегузаронем ва мефаҳмем, ки он чӣ гуна кор мекунад.

Биёед дар як контейнер 2 контейнери нави якхела созем Ҳавзи нигоҳдорӣ (hddpool):

lxc init alpine3 alp1 --storage=hddpool --profile=default --profile=hddroot
lxc init alpine3 alp2 --storage=hddpool --profile=default --profile=hddroot

lxc list
+------+---------+------------------+------+-----------+-----------+
| NAME |  STATE  |       IPV4       | IPV6 |   TYPE    | SNAPSHOTS |
+------+---------+------------------+------+-----------+-----------+
| alp1 | RUNNING | 10.0.5.46 (eth0) |      | CONTAINER | 0         |
+------+---------+------------------+------+-----------+-----------+
| alp2 | RUNNING | 10.0.5.30 (eth0) |      | CONTAINER | 0         |
+------+---------+------------------+------+-----------+-----------+

Биёед дар яке аз контейнерҳо файли 1 ГБ эҷод кунем:

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

Биёед боварӣ ҳосил кунем, ки файл сохта шудааст:

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

Агар мо дар контейнери дуюм нигоҳ кунем, мавҷудияти файлро дар ҳамон макон тафтиш кунем, пас ин файл дар он ҷо нахоҳад буд, ки интизор меравад, зеро контейнерҳо дар худашон сохта мешаванд. Ҳаҷми нигоҳдорӣ дар ҳамон Ҳавзи нигоҳдорӣ:

lxc exec alp2 -- ls -lh
total 0

Аммо биёед арзишҳои тавлидкардаи онро муқоиса кунем df дар як ва дигар контейнер:

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

Дастгоҳ /dev/loop1 ҳамчун қисмати реша насб карда шудааст Ҳавзи нигоҳдорӣ ки ин контейнерҳо истифода мебаранд, аз ин рӯ ҳаҷми онро байни ду тақсим мекунанд.

Омори истеъмоли захираҳо ^

Шумо метавонед омори истеъмоли захираҳоро барои контейнер бо истифода аз фармон дидан кунед:

lxc info alp

Name: alp
Location: none
Remote: unix://
Architecture: x86_64
Created: 2020/04/08 18:05 UTC
Status: Running
Type: container
Profiles: default, hddroot
Pid: 19219
Ips:
  eth0: inet    10.0.5.5        veth2a1dc59d
  eth0: inet6   fe80::216:3eff:fe0e:e271        veth2a1dc59d
  lo:   inet    127.0.0.1
  lo:   inet6   ::1
Resources:
  Processes: 5
  Disk usage:
    root: 495.62kB
  CPU usage:
    CPU usage (in seconds): 1
  Memory usage:
    Memory (current): 4.79MB
  Network usage:
    eth0:
      Bytes received: 730B
      Bytes sent: 1.59kB
      Packets received: 3
      Packets sent: 14
    lo:
      Bytes received: 0B
      Bytes sent: 0B
      Packets received: 0
      Packets sent: 0

Кор бо аксҳо ^

LXD дорои қобилияти эҷоди аксҳо ва барқарор кардани ҳолати контейнер аз онҳо мебошад.

Барои сохтани аксбардорӣ, фармони зеринро иҷро кунед:

lxc snapshot alp snapshot1

Коллектив lxc snapshot калид дастрас нест list, бинобар ин, барои дидани рӯйхати аксҳо шумо бояд фармонеро истифода баред, ки маълумоти умумиро дар бораи контейнер нишон медиҳад:

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

Шумо метавонед бо истифода аз фармон як контейнерро аз аксбардорӣ барқарор кунед lxc restore муайян кардани контейнер, ки барои он барқарорсозӣ анҷом дода мешавад ва тахаллуси акс:

lxc restore alp snapshot1

Фармони зерин барои нест кардани акс истифода мешавад. Лутфан таваҷҷӯҳ намоед, ки синтаксиси фармон ба ҳама дигарон шабоҳат надорад; дар ин ҷо шумо бояд пас аз номи контейнер хатти пешро муайян кунед. Агар хати рахнашуда партофта шуда бошад, пас фармони нест кардани акс ҳамчун фармони нест кардани контейнер тафсир карда мешавад!

lxc delete alp/snapshot1

Дар мисоли боло, мо ба истилоҳ аксҳои бидуни шаҳрвандӣ назар кардем. LXD як намуди дигари аксҳоро дорад - ҳолати маълумотнок, ки ҳолати кунунии ҳама равандҳои контейнерро захира мекунад. Як қатор хусусиятҳои ҷолиб ва муфид вуҷуд доранд, ки бо аксҳои ҳолати давлатӣ алоқаманданд.

Боз чӣ? ^

  • Модул барои таҳиягарони Python дастрас аст PyLXD ки API-ро ба LXD таъмин мекунад

Навсозии 10.04.2020/15/00 XNUMX:XNUMX: Навигатсия иловашуда

Манбаъ: will.com

Илова Эзоҳ