የ LXD ዋና ባህሪያት - የሊኑክስ ኮንቴይነር ሲስተምስ

የ LXD ዋና ባህሪያት - የሊኑክስ ኮንቴይነር ሲስተምስ

ኤል.ኤስ.ዲ. የሚቀጥለው ትውልድ ሥርዓት መያዣ አስተዳዳሪ ነው, ስለዚህ ይላል ምንጩ. ከቨርቹዋል ማሽኖች ጋር የሚመሳሰል የተጠቃሚ በይነገጽ ያቀርባል፣ ነገር ግን በምትኩ የሊኑክስ መያዣዎችን ይጠቀማል።

LXD ኮር መብት ያለው ዴሞን (ከስር መብቶች ጋር የሚሰራ አገልግሎት) በአካባቢያዊ ዩኒክስ ሶኬት እና እንዲሁም በአውታረ መረቡ በኩል ተገቢውን ውቅር ከተጫነ REST API የሚያቀርብ ነው። ደንበኞች፣ እንደ ከLXD ጋር የቀረበው የትዕዛዝ መስመር መሳሪያ፣ በዚህ REST API በኩል ጥያቄ ያቀርባሉ። ይህ ማለት የአከባቢን አስተናጋጅ ወይም የርቀት አስተናጋጅ እየደረሱ ነው ፣ ሁሉም ነገር ተመሳሳይ ነው የሚሰራው።

በዚህ ጽሑፍ ውስጥ ስለ LXD ፅንሰ-ሀሳቦች በዝርዝር አንቀመጥም ፣ በሰነዶቹ ውስጥ የተዘረዘሩትን ሁሉንም ችሎታዎች ከግምት ውስጥ አናስገባም ፣ በቅርብ ጊዜ የ LXD ስሪቶች ከዕቃ መያዣዎች ጋር በትይዩ ለ QEMU ምናባዊ ማሽኖች ድጋፍ። ይልቁንስ የኮንቴይነር አስተዳደር መሰረታዊ ነገሮችን ብቻ እንማራለን - የማከማቻ ገንዳዎችን ማዘጋጀት፣ ኔትዎርኪንግ፣ ኮንቴይነር ማስኬድ፣ የሀብት ገደቦችን መተግበር እና ቅጽበተ-ፎቶዎችን እንዴት መጠቀም እንዳለቦት ስለ LXD መሰረታዊ ግንዛቤ ማግኘት እና በሊኑክስ ላይ ኮንቴይነሮችን መጠቀም ይችላሉ።

ለተሟላ መረጃ እባክዎን ኦፊሴላዊውን ምንጭ ይመልከቱ፡-

ዳሰሳ

ጭነት LXD ^

በኡቡንቱ ስርጭቶች ላይ LXD በመጫን ላይ ^

በኡቡንቱ 19.10 ስርጭት ጥቅል ውስጥ lxd ላይ ስርጭት አለው። ጥቅል ጥቅል:

apt search lxd

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

ይህ ማለት ሁለት ፓኬጆች በአንድ ጊዜ ይጫናሉ, አንዱ እንደ የስርዓት ፓኬጅ እና ሌላኛው እንደ ፈጣን ጥቅል ነው. በሲስተሙ ላይ ሁለት ፓኬጆችን መጫን የስርአቱ ፓኬጅ ወላጅ አልባ ሊሆን በሚችልበት ጊዜ ስናፕ ፓኬጁ በ snap package manager ከተወገደ ችግር ሊፈጥር ይችላል።

ጥቅል አግኝ 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 ን መጫን ^

የ 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 በስርዓት ጅምር ላይ የኤልኤክስዲ አገልግሎትን በመጫን ላይ፡-

sudo systemctl enable lxd

አገልግሎቱን እንጀምር፡-

sudo systemctl start lxd

የአገልግሎቱን ሁኔታ መፈተሽ;

sudo systemctl status lxd

ማከማቻ LXD (ማከማቻ) ^

ማስጀመር ከመጀመሩ በፊት፣ በ LXD ውስጥ ያለው ማከማቻ አመክንዮ እንዴት እንደተደረደረ መረዳት አለብን።

ማከማቻ (መጋዘን) ያካትታል ከአንድ ወይም ከዚያ በላይ የማከማቻ ገንዳ እንደ ZFS፣ BTRFS፣ LVM ወይም መደበኛ ማውጫዎች ካሉ ከሚደገፉት የፋይል ስርዓቶች አንዱን የሚጠቀም። እያንዳንዱ የማከማቻ ገንዳ በጥራዞች የተከፋፈለ ነው (የማከማቻ መጠን) ምስሎችን፣ ኮንቴይነሮችን ወይም ለሌላ ዓላማዎች መረጃን የያዘ።

  • ምስሎች - እነዚህ ከሊኑክስ ከርነል ውጭ በልዩ ሁኔታ የተገጣጠሙ ስርጭቶች እና ከውጭ ምንጮች ይገኛሉ
  • ኮንቴይነሮች - እነዚህ ከምስሎች የተዘረጉ ስርጭቶች ለአገልግሎት ዝግጁ ናቸው።
  • ቅጽበተ-ፎቶዎች - እነዚህ ወደ እርስዎ መመለስ የሚችሉት የመያዣዎች ሁኔታ ቅጽበታዊ እይታዎች ናቸው።

የ LXD ዋና ባህሪያት - የሊኑክስ ኮንቴይነር ሲስተምስ

በ LXD ውስጥ ማከማቻን ለማስተዳደር ትዕዛዙን ይጠቀሙ lxc storage ቁልፉን በመግለጽ ማግኘት የሚችሉት የምስክር ወረቀት - lxc storage --help

የሚከተለው ትዕዛዝ የሁሉንም ዝርዝር ያሳያል የማከማቻ ገንዳ በኤልኤክስዲ ማከማቻ ውስጥ፡-

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 ለመምረጥ ይመከራል የባህሪ ማነፃፀሪያ ሰንጠረዥ:

የባህሪ
ማውጫ
Btrfs
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/ እና ተምሳሌታዊ አገናኞች እንኳን አይሰሩም, የገንቢውን ምላሽ ይመልከቱ. በመነሻ/ቅርጸት ወቅት ይህንን ገደብ ማለፍ እንችላለን የማከማቻ ገንዳ ይህንን ቁልፉ ላይ በመግለጽ ወደ loopback ፋይል ከሚወስደው መንገድ ይልቅ እሴቱን እንደ ማገጃ መሳሪያ በመግለጽ source.

ስለዚህ, ከመፈጠሩ በፊት የማከማቻ ገንዳ የሚጠቀመውን የ loopback ፋይል ወይም በፋይል ስርዓትዎ ላይ ያለውን ክፋይ መግለፅ ያስፈልግዎታል። ይህንን ለማድረግ በ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

የ loopback ፋይልን ከነጻ loopback መሳሪያ ጋር እናገናኘው፡

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

/dev/loop1

ለቁልፍ አመሰግናለሁ --show ትዕዛዙን መፈጸም የእኛ loopback ፋይል የተገናኘበትን የመሳሪያውን ስም ወደ ስክሪኑ ይመለሳል። አስፈላጊ ከሆነ ተግባሮቻችን ትክክል መሆናቸውን ለማረጋገጥ የዚህ አይነት ሁሉንም ስራ የሚበዛባቸው መሳሪያዎች ዝርዝር ማሳየት እንችላለን፡-

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 loopback ፋይል ተካትቷል። /mnt/work/lxd/hddpool.img, እና በመሳሪያው ውስጥ /dev/loop0 loopback ፋይል ተካትቷል። /var/lib/lxd/disks/ssdpool.img ከነባሪው ጋር የሚዛመድ የማከማቻ ገንዳ.

የሚከተለው ትዕዛዝ አዲስ ይፈጥራል የማከማቻ ገንዳ አሁን ባዘጋጀነው የ loopback ፋይል ላይ በመመስረት በ LXD ውስጥ። LXD የ loopback ፋይልን ይቀርፃል። /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

የ loopback ፋይል በራስ-ሰር ወደ loopback መሣሪያ ማስገቢያ ^

አንድ ትንሽ ችግር አለብን, የአስተናጋጅ ስርዓቱን እንደገና ሲነሳ, ፋይሉ /mnt/work/lxd/hddpool.img ከመሳሪያው ውስጥ "ይበርራል". /dev/loop1 እና የኤልኤክስዲ አገልግሎት በሚጫንበት ጊዜ ይሰናከላል ምክንያቱም በዚህ መሳሪያ ውስጥ አያየውም። ይህንን ችግር ለመፍታት ይህንን ፋይል ወደ መሳሪያው ውስጥ የሚያስገባ የስርዓት አገልግሎት መፍጠር ያስፈልግዎታል /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.

ደህንነት. የመያዣ መብቶች ^

ሁሉም የእቃ መያዢያ ሂደቶች ከርነል በመጠቀም በአስተናጋጅ ስርዓቱ ላይ በተናጥል የሚሰሩ በመሆናቸው፣የመያዣ ሂደቶችን ወደ አስተናጋጅ ስርዓቱ ተደራሽነት የበለጠ ለመጠበቅ፣ኤልኤክስዲ የሂደቱን ልዩ መብት ይሰጣል፡-

  • ልዩ የሆኑ መያዣዎች - እነዚህ ከ UID እና GID ጋር ሂደቶች በአስተናጋጅ ስርዓቱ ላይ ካለው ባለቤት ጋር የሚዛመዱባቸው መያዣዎች ናቸው። ለምሳሌ፣ ዩአይዲ 0 ባለው ኮንቴይነር ውስጥ የሚሰራ ሂደት በአስተናጋጅ ስርዓቱ ላይ ካለው ሂደት ጋር ተመሳሳይ የመዳረሻ መብቶች አሉት። መያዣው, ነገር ግን በአስተናጋጁ ስርዓት ላይ ከመያዣው የተለየ የስም ቦታ ውጭ መሄድ ከቻለ.

  • ያልተጠበቁ መያዣዎች - እነዚህ ሂደቶች ከ0 እስከ 65535 ቁጥር ያለው የዩአይዲ እና የጂአይዲ ባለቤት የሆኑባቸው ኮንቴይነሮች ናቸው ነገር ግን ለአስተናጋጅ ሲስተም ባለቤቱ የተጨመረው የሱቢአይዲ እና ንዑስ ጂአይዲ ቢትስ እንደቅደም ተከተላቸው። ለምሳሌ፣ በኮንቴይነር ውስጥ 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 ዋና ባህሪያት - የሊኑክስ ኮንቴይነር ሲስተምስ

ኮንቴይነሮች ከሌሎች ኮንቴይነሮች ወይም እነዚህ መያዣዎች የሚቀርቡበት አስተናጋጅ ጋር በኔትወርክ መገናኘት ይችላሉ። ይህንን ለማድረግ የእቃዎቹን ምናባዊ አውታረ መረብ ካርዶች በምናባዊ መቀየሪያ ማገናኘት ያስፈልግዎታል. መጀመሪያ ማብሪያ / ማጥፊያን እንፈጥራለን እና የእቃ መጫኛ አውታረመረብ መገናኛዎች በሚቀጥሉት ምዕራፎች ውስጥ ይገናኛሉ, መያዣው እራሱ ከተፈጠረ በኋላ.

የሚከተለው ትዕዛዝ ከንዑስ መረብ ጋር መቀያየርን ይፈጥራል 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       |
+--------+----------+---------+-------------+---------+

እንዲሁም የሊኑክስ ስርጭትን መደበኛ መሳሪያ በመጠቀም የአውታረ መረብ መሳሪያ መፈጠሩን ማረጋገጥ ይችላሉ- 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 ዋና ባህሪያት - የሊኑክስ ኮንቴይነር ሲስተምስ

በዚህ ምሳሌ፣ በኤልኤክስዲ ስርዓት ውስጥ ሶስት መገለጫዎች ተፈጥረዋል። 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

በትክክል መሣሪያውን ወደ ውቅረት መገለጫ ስለጨመርን ፣ በመሳሪያው ውስጥ የማይንቀሳቀስ አይፒ አድራሻ ከገለፅን ፣ ከዚያ ይህንን መገለጫ የሚጠቀሙ ሁሉም ኮንቴይነሮች አንድ አይነት የአይፒ አድራሻ ይጋራሉ ። ለማጠራቀሚያው የተመደበ የማይንቀሳቀስ አይፒ አድራሻ ያለው መያዣ መፍጠር አስፈላጊ ከሆነ ታዲያ በመገለጫ ደረጃ ሳይሆን በመያዣው ደረጃ (አካባቢያዊ ውቅር) ላይ የአውታረ መረብ መሳሪያ ውቅር መፍጠር አለብዎት።

መገለጫውን እንፈትሽ፡-

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

የምስል ማከማቻ ^

ኮንቴይነሮች የተፈጠሩት የሊኑክስ ከርነል ከሌላቸው ልዩ የተገጣጠሙ ስርጭቶች ካሉ ምስሎች ነው። ስለዚህ, መያዣውን ከማስኬዱ በፊት, ከዚህ ምስል ላይ መዘርጋት አለበት. የምስሎች ምንጭ ምስሎች ከውጭ ማከማቻዎች የሚወርዱበት አካባቢያዊ ማከማቻ ነው።

የርቀት ምስል ማከማቻዎች ^

በነባሪ፣ LXD ከሶስት የርቀት ምንጮች ምስሎችን እንዲቀበል ተዋቅሯል።

  • ubuntu: (ለተረጋጋ የኡቡንቱ ምስሎች)
  • 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.

የምስሎችን ዝርዝር ለማሳየት ማጣራት ይገኛል። የሚከተለው ትዕዛዝ ሁሉንም የሚገኙትን የስርጭት አርክቴክቸር ይዘረዝራል። አልፓይን ሊኑክስ:

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 ወደ የትኞቹ ዋጋዎች ይተላለፋሉ репозиторий:образ እና ከዚያ ለመያዣው የሚፈለገው መታወቂያ. ማከማቻው እንደ አካባቢያዊ ሊገለጽ ይችላል። 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: ""

የማይንቀሳቀስ አይፒ አድራሻ በማዘጋጀት ላይ ^

ለአውታረ መረብ መሳሪያ የአይፒ አድራሻ ለማዘጋጀት ከሞከርን 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

ለነገሩ የማይንቀሳቀስ አይፒ አድራሻ ማዘጋጀት እንችላለን 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

የመያዣ ሀብት አስተዳደር ^

በኤልኤክስዲ ውስጥ ልዩ የውቅረት ስብስብ በመጠቀም የመያዣ ሀብቶችን ማስተዳደር ይችላሉ። የመያዣ ውቅር መለኪያዎች ሙሉ ዝርዝር ሊገኙ ይችላሉ በሰነድ ውስጥ.

የ RAM ምንጭ ውስንነት ^

መለኪያ limits.memory በመያዣው ውስጥ ያለውን የ 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: ""

የሲፒዩ ሀብት ገደብ ^

የሲፒዩ ሀብቶችን ለመገደብ ብዙ መንገዶች አሉ። የእገዳ ዓይነቶች:

  • limit.cpu - አንድ ኮንቴይነር ከአንድ ወይም ከዚያ በላይ የሲፒዩ ኮሮች ያስራል
  • limits.cpu.allowance - የጊዜ ገደቡ ካለፈ በኋላ የCFS መርሐግብር አድራጊ ኮታዎችን ያስተዳድራል፣ ወይም መቶኛ ካለፈ ሁለንተናዊ የሲፒዩ ሀብት መጋራት ዘዴን ያስተዳድራል።
  • 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         |
+------+---------+------------------+------+-----------+-----------+

በአንዱ መያዣ ውስጥ 1GB ፋይል እንፍጠር፡-

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 ኤፒአይ ለኤልኤክስዲ ያቀርባል

አዘምን 10.04.2020/15/00 XNUMX:XNUMX: ታክሏል አሰሳ

ምንጭ: hab.com

አስተያየት ያክሉ