ايل ايڪس ڊي ايندڙ نسل سسٽم ڪنٽينر مينيجر آهي، تنهنڪري اهو چوي ٿو ذريعو. اهو پيش ڪري ٿو يوزر انٽرفيس جهڙو ورچوئل مشينس، پر ان جي بدران لينڪس ڪنٽينرز استعمال ڪري ٿو.
LXD ڪور هڪ مراعات يافته ڊيمون آهي (روٽ حقن سان هلندڙ هڪ خدمت) جيڪا مقامي يونڪس ساکٽ ذريعي REST API مهيا ڪري ٿي، انهي سان گڏ نيٽ ورڪ ذريعي جيڪڏهن مناسب ترتيب نصب ٿيل هجي. ڪلائنٽ، جيئن LXD سان مهيا ڪيل ڪمانڊ لائين ٽول، هن REST API ذريعي درخواستون ڏيو. هن جو مطلب اهو آهي ته ڇا توهان مقامي ميزبان يا ريموٽ ميزبان تائين رسائي ڪري رهيا آهيو، هر شي ساڳيو ڪم ڪري ٿو.
هن آرٽيڪل ۾ اسان LXD جي تصورات تي تفصيل سان نه رهنداسين، اسان دستاويزن ۾ بيان ڪيل سڀني موجود صلاحيتن تي غور نه ڪنداسين، بشمول ڪنٽينرز سان متوازي طور تي QEMU ورچوئل مشينن جي سپورٽ جي LXD جي جديد نسخن ۾ تازو عمل درآمد. ان جي بدران، اسان صرف ڪنٽينر مينيجمينٽ جا بنيادي اصول سکنداسين - اسٽوريج پول قائم ڪرڻ، نيٽ ورڪنگ، ڪنٽينر هلائڻ، وسيلن جي حدن کي لاڳو ڪرڻ، ۽ سنيپ شاٽ ڪيئن استعمال ڪجي ته جيئن توهان LXD جي بنيادي سمجھ حاصل ڪري سگھو ۽ Linux تي ڪنٽينرز استعمال ڪري سگھو.
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 پيڪيج کي نصب ڪرڻ لاء، توهان کي هيٺين حڪمن کي هلائڻ جي ضرورت آهي، پهريون ڀيرو سسٽم تي موجود پيڪيجز جي فهرست کي اپڊيٽ ڪندو ريپوزٽري ۾، ٻيو سڌو سنئون انسٽال ڪندو:
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 سروس لوڊ ڪندي:
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 شروعات ڪرڻ گهرجي جيڪا ٺاهي ۽ ترتيب ڏئي ٿي نيٽ ورڪ ۽ اسٽوريج. اهو دستي طور تي ڪري سگهجي ٿو معياري ڪلائنٽ ڪمانڊ استعمال ڪندي جيڪي فهرست ۾ موجود آهن حڪم ڪال ڪندي lxc --help يا شروعاتي مددگار استعمال ڪندي lxd init ڪجھ سوالن جا جواب.
وزرڊ استعمال ڪندي نيٽ ورڪ ۽ اسٽوريج پول کي شروع ڪرڻ ^
اڳيون حڪم جيڪو اسان ڏسندا سين ته 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. هي فائيل سسٽم ايڊريس منهنجي PC ۾ جسماني SSD ڊرائيو سان ملندو آهي.
هيٺ ڏنل ڪارناما، ادا ڪيل ڪردار جي سمجھ کي وڌائڻ لاء اسٽوريج پول مخزن ۾، اسان هڪ ٻيو ٺاهينداسين اسٽوريج پول جيڪو جسماني طور تي مختلف قسم جي ڊسڪ تي واقع هوندو، HDD. مسئلو اهو آهي ته LXD توهان کي ٺاهڻ جي اجازت نٿو ڏئي اسٽوريج پول پتو کان ٻاهر /var/lib/lxd/disks/ ۽ علامتي لنڪس به ڪم نه ڪندا، ڊولپر جو جواب ڏسو. اسان شروعات / فارميٽنگ دوران هن حد کي نظرانداز ڪري سگھون ٿا اسٽوريج پول لوپ بڪ فائل جي رستي جي بدران بلاڪ ڊيوائس جي طور تي قيمت بيان ڪندي هن کي ڪي ۾ بيان ڪندي source.
تنهن ڪري، ٺاهڻ کان اڳ اسٽوريج پول توھان کي ھڪڙي لوپ بڪ فائل جي وضاحت ڪرڻ جي ضرورت آھي يا توھان جي فائل سسٽم تي ھڪڙو موجوده ورهاڱي جيڪو اھو استعمال ڪندو. هن کي ڪرڻ لاء، اسان هڪ فائل ٺاهي ۽ استعمال ڪنداسين جنهن کي اسان 10GB تائين محدود ڪنداسين.
dd if=/dev/zero of=/mnt/work/lxd/hddpool.img bs=1MB count=10000
10000+0 records in
10000+0 records out
10000000000 bytes (10 GB, 9,3 GiB) copied, 38,4414 s, 260 MB/s
اچو ته لوپ بڪ فائل کي مفت لوپ بيڪ ڊوائيس سان ڳنڍيون:
ڪنجي جي مهرباني --show ڪمانڊ تي عمل ڪرڻ سان اسڪرين تي ڊوائيس جو نالو واپس اچي ٿو جنهن ۾ اسان جي لوپ بڪ فائل ڳنڍيل آهي. جيڪڏهن ضروري هجي ته، اسان هن قسم جي سڀني مصروف ڊوائيسز جي هڪ فهرست ڏيکاري سگهون ٿا ته پڪ ڪرڻ لاء ته اسان جا عمل درست آهن:
لوپ بڪ ڊيوائس سلاٽ ۾ لوپ بڪ فائل جو خودڪار داخل ڪرڻ ^
اسان وٽ ھڪڙو ننڍڙو مسئلو آھي، جڏھن ھوسٽ سسٽم کي ريبوٽ ڪري، فائل /mnt/work/lxd/hddpool.img ڊوائيس مان "پرواز" ڪندو /dev/loop1 ۽ LXD سروس حادثو ٿيندو جڏهن لوڊ ڪندي ڇو ته اها هن ڊوائيس ۾ نه ڏسندي. هن مسئلي کي حل ڪرڻ لاء، توهان کي هڪ سسٽم سروس ٺاهڻ جي ضرورت آهي جيڪا هن فائل کي ڊوائيس ۾ داخل ڪندي /dev/loop1 جڏهن ميزبان سسٽم بوٽ ڪري ٿو.
اچو ته ٺاهي يونٽ فائل جو قسم خدمت в /etc/systemd/system/ سسٽم ڊي شروعاتي سسٽم لاءِ:
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 سان عمل ھڪڙي مالڪ سان ملن ٿا جيئن ھوسٽ سسٽم تي. مثال طور، 0 جي يو آءِ ڊي سان ڪنٽينر ۾ هلندڙ پروسيس کي 0 جي يو آءِ ڊي سان هوسٽ سسٽم تي عمل جي برابر رسائي جا حق حاصل هوندا آهن. ٻين لفظن ۾، ڪنٽينر ۾ روٽ استعمال ڪندڙ کي نه رڳو سڀ حق آهن. ڪنٽينر، پر ميزبان سسٽم تي پڻ، جيڪڏهن هو ڪنٽينر جي الڳ ٿيل نالي جي جاء کان ٻاهر وڃي سگهي ٿو.
اڻڄاتل ڪنٽينرز - اهي ڪنٽينر آهن جن ۾ پروسيس جو تعلق UID ۽ GID جي مالڪ سان 0 کان 65535 تائين نمبر سان، پر ميزبان سسٽم لاءِ مالڪ کي ماسڪ ڪيو ويو آهي شامل ڪيل SubUID ۽ SubGID بٽ استعمال ڪندي، ترتيب سان. مثال طور، هڪ صارف UID = 0 سان هڪ ڪنٽينر ۾ ڏٺو ويندو هوسٽ سسٽم تي جيئن SubUID + UID. هي ميزبان سسٽم کي بچائيندو آهي ڇاڪاڻ ته جيڪڏهن ڪنٽينر ۾ ڪو به عمل ان جي الڳ ٿيل نالي جي جڳهه کان بچڻ جي قابل آهي، اهو صرف ميزبان سسٽم سان هڪ نامعلوم، تمام اعلي UID/GID سان عمل جي طور تي رابطو ڪري سگهي ٿو.
ڊفالٽ طور، نون ٺاهيل ڪنٽينرز کي غير امتيازي حيثيت حاصل آهي ۽ ان ڪري اسان کي لازمي طور تي هڪ SubUID ۽ SubGID جي وضاحت ڪرڻ گهرجي.
اچو ته ٻه ڪنفيگريشن فائلون ٺاهيون جن ۾ اسان ترتيب ڏينداسين SubUID ۽ SubGID لاءِ ماسڪ:
LXD ۾ هر ڪنٽينر جي پنهنجي ترتيب آهي ۽ ان کي عالمي سطح تي اعلان ڪيل ترتيبن سان وڌائي سگھي ٿو. تشڪيل پروفائلز. ڪنٽينر تي ٺاھ جوڙ جي پروفائيل کي لاڳو ڪرڻ ۾ ھڪڙو cascade ماڊل آھي، ھيٺ ڏنل مثال ھن کي ظاھر ڪري ٿو:
هن مثال ۾، LXD سسٽم ۾ ٽي پروفائل ٺاهيا ويا آهن: default, hddpool и hostfs. سڀئي ٽي پروفائيل هڪ ڪنٽينر تي لاڳو ڪيا ويا آهن جنهن ۾ مقامي ترتيب (گرين ايريا) آهي. پروفائل default هڪ ڊوائيس آهي root جنهن جو هڪ پيٽرول آهي pool جي برابر آهي ssdpool، پر مهرباني ڪري cascade ترتيب واري ايپليڪيشن ماڊل، اسان ڪنٽينر تي پروفائل لاڳو ڪري سگھون ٿا 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: []
ڪنٽينر تصويرن مان ٺاهيا ويا آهن جيڪي خاص طور تي گڏ ڪيل تقسيم آهن جن ۾ لينڪس ڪنيل نه آهي. تنهن ڪري، ڪنٽينر کي هلائڻ کان اڳ، ان کي هن تصوير مان لڳايو وڃي. تصويرن جو ماخذ هڪ مقامي مخزن آهي جنهن ۾ تصويرون ٻاهرين ذخيرن مان ڊائون لوڊ ڪيون وينديون آهن.
ڪنٽينر استعمال ڪرڻ شروع ڪرڻ لاءِ، توھان کي ھڪڙي تصوير شامل ڪرڻ جي ضرورت آھي گلوبل مخزن مان مقامي ھڪڙي ڏانھن local:. ھاڻي مقامي مخزن خالي آھي، حڪم ھن کي يقيني بڻائيندو lxc image list. جيڪڏهن طريقو list مخزن جي وضاحت نه ڪريو، پوءِ مقامي مخزن ڊفالٽ طور استعمال ڪيو ويندو - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
انٽرايڪٽو موڊ کان علاوه، LXD هڪ غير انٽرايڪٽو ترتيب واري انسٽاليشن موڊ کي پڻ سپورٽ ڪري ٿو، اهو آهي جڏهن تشڪيل YAML فائل جي صورت ۾ بيان ڪئي وئي آهي، هڪ خاص فارميٽ جيڪا توهان کي اجازت ڏئي ٿي پوري ترتيب کي انسٽال ڪرڻ جي هڪ ئي وقت، عمل کي ختم ڪندي. ڪيترن ئي انٽرايڪٽو ڪمن مان جيڪي مٿي ڄاڻايل مضمون ۾ شامل ڪيا ويا آهن، بشمول نيٽ ورڪ ترتيب ڏيڻ، ترتيب ڏيڻ واري پروفائلز، وغيره. اسان هن علائقي کي هتي نه ڍڪينداسين، توهان ان کي پنهنجو پاڻ تي چيڪ ڪري سگهو ٿا. دستاويز ۾.
اڳيون انٽرويو حڪم lxc config جنهن کي اسان ڏسنداسين توهان کي ترتيب ڏيڻ جي اجازت ڏئي ٿي. مثال طور، انهي ڳالهه کي يقيني بڻائڻ لاءِ ته ڊائون لوڊ ڪيل تصويرون مقامي مخزن ڏانهن خودڪار طور تي عالمي ذخيرن مان اپڊيٽ نه ٿيون ٿين، اسان هيٺ ڏنل حڪم سان هن رويي کي فعال ڪري سگهون ٿا:
جيڪڏهن اسان هڪ نيٽ ورڪ ڊيوائس لاءِ 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 exec جيڪو سسٽم شيل کي لانچ ڪرڻ کان سواءِ ڪنٽينر ۾ حڪمن تي عمل ڪري ٿو. جيڪڏهن توهان کي شيل جي نمونن جهڙوڪ متغير، فائل ريڊائريڪشن (پائپ) وغيره استعمال ڪندي شيل ۾ حڪم جاري ڪرڻ جي ضرورت آهي، ته پوء توهان کي شيل کي واضح طور تي لانچ ڪرڻ ۽ حڪم کي ڪيچ جي طور تي پاس ڪرڻ جي ضرورت آهي، مثال طور:
lxc exec alp -- /bin/sh -c "echo $HOME"
حڪم هڪ خاص فرار ڪردار استعمال ڪيو خاص ڪردار لاء $ ته جيئن variable $HOME هوسٽ مشين تي تشريح نه ڪئي وئي، پر صرف ڪنٽينر اندر تشريح ڪئي وئي.
اهو پڻ ممڪن آهي ته انٽرايڪٽو شيل موڊ کي شروع ڪريو، ۽ پوء سيشن ختم ڪريو هاٽ ڪيئي کي عمل ڪندي CTRL+D:
سي پي يو وسيلن کي محدود ڪرڻ جا ڪيترائي طريقا آهن. پابنديون جا قسم:
limit.cpu - هڪ ڪنٽينر کي هڪ يا وڌيڪ سي پي يو ڪور سان ڳنڍي ٿو
limits.cpu.allowance - منظم ڪري ٿو يا ته CFS شيڊولر ڪوٽا جڏهن وقت جي حد گذري وئي آهي، يا يونيورسل سي پي يو ريسورس شيئرنگ ميڪانيزم جڏهن سيڪڙو گذري چڪو آهي
limits.cpu.priority - شيڊولر جي ترجيح جڏهن پروسيسرز جو هڪ سيٽ شيئر ڪرڻ جا ڪيترائي واقعا پروسيسرز جو ساڳيو سيڪڙو مقرر ڪيا ويا آهن
اهڙين پابندين کان علاوه 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
ان حقيقت جي باوجود ته اسان ڪنٽينر جي روٽ ڊيوائس جي حد مقرر ڪئي آهي 2GB تائين، سسٽم يوٽيلٽيز جهڙوڪ df هن پابندي کي نه ڏسندا. هن کي ڪرڻ لاء، اسان هڪ ننڍڙو امتحان ڪنداسين ۽ معلوم ڪنداسين ته اهو ڪيئن ڪم ڪري ٿو.
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 روٽ ورهاڱي جي طور تي نصب ٿيل آهي اسٽوريج پول جنهن کي اهي ڪنٽينر استعمال ڪندا آهن، تنهن ڪري اهي ان جي مقدار کي ٻن جي وچ ۾ حصيداري ڪندا آهن.
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 وٽ هڪ ٻيو قسم جو سنيپ شاٽ آهي - رياستي، جيڪو ڪنٽينر ۾ سڀني عملن جي موجوده حالت کي بچائيندو آهي. رياستي تصويرن سان لاڳاپيل ڪيترائي دلچسپ ۽ مفيد خاصيتون آهن.