Mga pangunahing tampok ng LXD - Linux container system
LXD ay ang susunod na henerasyon ng system container manager, kaya sabi nito pinagmulan. Nag-aalok ito ng user interface na katulad ng mga virtual machine, ngunit gumagamit ng mga lalagyan ng Linux sa halip.
LXD core ay isang privileged daemon (isang serbisyong tumatakbo na may mga karapatan sa ugat) na nagbibigay ng REST API sa pamamagitan ng lokal na unix socket, gayundin sa pamamagitan ng network kung naka-install ang naaangkop na configuration. Ang mga kliyente, tulad ng command line tool na ibinigay kasama ng LXD, ay gumagawa ng mga kahilingan sa pamamagitan ng REST API na ito. Nangangahulugan ito na kung nag-a-access ka sa isang lokal na host o isang malayong host, lahat ay gumagana nang pareho.
Sa artikulong ito, hindi namin tatalakayin nang detalyado ang mga konsepto ng LXD, hindi namin isasaalang-alang ang lahat ng magagamit na mga kakayahan na nakabalangkas sa dokumentasyon, kabilang ang kamakailang pagpapatupad sa pinakabagong mga bersyon ng LXD ng suporta para sa mga virtual machine ng QEMU na kahanay ng mga lalagyan. Sa halip, matututunan lang natin ang mga pangunahing kaalaman sa pamamahala ng container - pag-set up ng mga storage pool, networking, pagpapatakbo ng container, paglalapat ng mga limitasyon sa resource, at kung paano gumamit ng mga snapshot para makakuha ka ng pangunahing pag-unawa sa LXD at gumamit ng mga container sa Linux.
Para sa kumpletong impormasyon, mangyaring sumangguni sa opisyal na mapagkukunan:
Nangangahulugan ito na dalawang pakete ang mai-install nang sabay-sabay, ang isa bilang isang package ng system at ang isa bilang isang snap package. Ang pag-install ng dalawang package sa isang system ay maaaring lumikha ng ilang problema kung saan ang system package ay maaaring maging ulila kung ang snap package ay inalis ng snap package manager.
Maghanap ng package lxd sa snap repository maaari mong gamitin ang sumusunod na command:
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
Sa pamamagitan ng pagpapatakbo ng utos list maaari mong tiyakin na ang pakete lxd hindi pa naka-install:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalβ core
Sa kabila ng katotohanan na ang LXD ay isang snap package, dapat itong mai-install sa pamamagitan ng system package lxd, na lilikha ng kaukulang grupo sa system, ang mga kinakailangang kagamitan sa /usr/bin at iba pa
sudo apt update
sudo apt install lxd
Siguraduhin nating naka-install ang package bilang snap package:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalβ core
lxd 3.21 13474 stable/β¦ canonicalβ -
Pag-install ng LXD sa mga pamamahagi ng Arch Linux ^
Upang mai-install ang LXD package sa system, kailangan mong patakbuhin ang mga sumusunod na command, i-update ng una ang listahan ng mga package sa system na magagamit sa repository, ang pangalawa ay direktang i-install ang package:
sudo pacman -Syyu && sudo pacman -S lxd
Pagkatapos i-install ang package, upang pamahalaan ang LXD ng isang regular na user, dapat itong idagdag sa pangkat ng system lxd:
sudo usermod -a -G lxd user1
Siguraduhin natin ang gumagamit user1 idinagdag sa pangkat lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Kung ang grupo lxd ay hindi nakikita sa listahan, pagkatapos ay kailangan mong i-activate muli ang session ng user. Upang gawin ito, kailangan mong mag-log out at mag-log in sa ilalim ng parehong user.
I-activate sa systemd nilo-load ang serbisyo ng LXD sa pagsisimula ng system:
Bago magsimula ang pagsisimula, kailangan nating maunawaan kung paano lohikal na nakaayos ang storage sa LXD.
Imbakan (Imbakan) binubuo ng mula sa isa o higit pa Pool ng Imbakan na gumagamit ng isa sa mga sinusuportahang file system gaya ng ZFS, BTRFS, LVM o mga regular na direktoryo. Bawat Pool ng Imbakan ay nahahati sa mga volume (Dami ng Imbakan) na naglalaman ng mga larawan, lalagyan, o data para sa iba pang layunin.
Mga Larawan - ang mga ito ay espesyal na pinagsama-samang mga pamamahagi nang walang Linux kernel at makukuha mula sa mga panlabas na mapagkukunan
Mga lalagyan - ang mga ito ay naka-deploy na mga distribusyon mula sa mga larawan, handa nang gamitin
Mga snapshot - ito ay mga snapshot ng estado ng mga container na maaari mong balikan
Para pamahalaan ang storage sa LXD, gamitin ang command lxc storage isang sertipiko kung saan maaari mong makuha sa pamamagitan ng pagtukoy ng susi - lxc storage --help
Ang sumusunod na command ay nagpapakita ng isang listahan ng lahat Pool ng Imbakan sa LXD storage:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Upang tingnan ang isang listahan ng lahat Dami ng Imbakan sa napili Pool ng Imbakan naglilingkod sa pangkat 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 |
+-----------+----------------------------------+-------------+---------+
Gayundin, kung para sa Pool ng Imbakan Kapag lumilikha, napili ang BTRFS file system, pagkatapos ay kumuha ng listahan Dami ng Imbakan o subvolume sa interpretasyon ng BTRFS, maaari mong gamitin ang toolkit ng file system na ito:
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
Bago gumawa at gumamit ng mga container, dapat kang magsagawa ng pangkalahatang pagsisimula ng LXD na gumagawa at nagko-configure sa network at storage. Magagawa ito nang manu-mano gamit ang mga karaniwang command ng kliyente na magagamit sa listahan sa pamamagitan ng pagtawag sa command lxc --help o gamit ang initialization wizard lxd init pagsagot sa ilang katanungan.
Sa panahon ng pagsisimula, nagtatanong ang LXD ng ilang katanungan, kabilang ang pagtukoy sa uri ng file system para sa default Pool ng Imbakan. Bilang default, ang BTRFS file system ay pinili para dito. Imposibleng lumipat sa isa pang FS pagkatapos ng paglikha. Upang pumili ng isang FS ito ay iminungkahi talahanayan ng paghahambing ng tampok:
tampok
Directory
Mga Btrf
LVM
ZFS
CEPH
Na-optimize na imbakan ng imahe
hindi
oo
oo
oo
oo
Na-optimize na paggawa ng instance
hindi
oo
oo
oo
oo
Na-optimize na paggawa ng snapshot
hindi
oo
oo
oo
oo
Na-optimize na paglipat ng imahe
hindi
oo
hindi
oo
oo
Na-optimize na paglilipat ng instance
hindi
oo
hindi
oo
oo
kopyahin sa pagsulat
hindi
oo
oo
oo
oo
Nakabatay sa block
hindi
hindi
oo
hindi
oo
Instant cloning
hindi
oo
oo
oo
oo
Ang driver ng storage ay magagamit sa loob ng isang lalagyan
oo
oo
hindi
hindi
hindi
I-restore mula sa mas lumang mga snapshot (hindi pinakabagong)
oo
oo
oo
hindi
oo
Mga quota sa imbakan
oo(*)
oo
oo
oo
hindi
Sinisimulan ang network at Storage Pool gamit ang wizard ^
Ang susunod na command na titingnan natin ay nagmumungkahi ng pag-set up ng mga pangunahing bahagi ng LXD sa pamamagitan ng pagsagot sa mga simpleng tanong gamit ang initialization wizard.
Patakbuhin ang utos lxc init at ilagay ang mga sagot sa mga tanong pagkatapos ng colon gaya ng ipinapakita sa halimbawa sa ibaba o baguhin ang mga ito ayon sa iyong mga kundisyon:
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]:
Sa nakaraang hakbang na aming ginawa Pool ng Imbakan na binigyan ng pangalan ssdpool at ang file na kung saan ay matatagpuan sa aking system sa /var/lib/lxd/disks/ssdpool.img. Ang address ng file system na ito ay tumutugma sa pisikal na SSD drive sa aking PC.
Ang mga sumusunod na aksyon, upang mapalawak ang pag-unawa sa papel na ginagampanan ni Pool ng Imbakan sa repositoryo, gagawa kami ng pangalawa Pool ng Imbakan na pisikal na matatagpuan sa ibang uri ng disk, HDD. Ang problema ay hindi ka pinapayagan ng LXD na lumikha Pool ng Imbakan wala sa address /var/lib/lxd/disks/ at kahit ang mga simbolikong link ay hindi gagana, tingnan ang tugon ng developer. Maaari naming lampasan ang limitasyong ito sa panahon ng pagsisimula/pag-format Pool ng Imbakan sa pamamagitan ng pagtukoy sa halaga bilang isang block device sa halip na ang path sa loopback file sa pamamagitan ng pagtukoy nito sa key source.
Kaya, bago lumikha Pool ng Imbakan kailangan mong tukuyin ang isang loopback file o isang umiiral na partition sa iyong file system na gagamitin nito. Upang gawin ito, gagawa kami at gagamit ng isang file na lilimitahan namin sa laki sa 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
Ikonekta natin ang loopback file sa isang libreng loopback device:
Salamat sa susi --show ang pagpapatupad ng command ay nagbabalik sa screen ng pangalan ng device kung saan nakakonekta ang aming loopback file. Kung kinakailangan, maaari kaming magpakita ng listahan ng lahat ng abalang device ng ganitong uri upang matiyak na tama ang aming mga aksyon:
Mula sa listahan makikita mo na mayroon ang device /dev/loop1 isinama ang loopback file /mnt/work/lxd/hddpool.img, at sa device /dev/loop0 isinama ang loopback file /var/lib/lxd/disks/ssdpool.img na tumutugma sa default Pool ng Imbakan.
Ang sumusunod na command ay lumilikha ng bago Pool ng Imbakan sa LXD base sa loopback file na kakahanda lang namin. I-format ng LXD ang loopback na file /mnt/work/lxd/hddpool.img sa device /dev/loop1 para sa BTRFS file system:
Pagkatapos ng paglikha Pool ng Imbakan, kung kinakailangan, maaari itong palawakin. Para sa Pool ng Imbakan batay sa BTRFS file system, patakbuhin ang mga sumusunod na command:
Awtomatikong paglalagay ng loopback file sa loopback device slot ^
Mayroon kaming isang maliit na problema, kapag nire-reboot ang host system, ang file /mnt/work/lxd/hddpool.img ay "lilipad" palabas ng device /dev/loop1 at ang serbisyo ng LXD ay mag-crash kapag naglo-load dahil hindi ito makikita sa device na ito. Upang malutas ang problemang ito kailangan mong lumikha ng isang serbisyo ng system na maglalagay ng file na ito sa device /dev/loop1 kapag nag-boot ang host system.
Lumikha tayo yunit uri ng file serbisyo Π² /etc/systemd/system/ para sa SystemD initialization 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
I-activate ang serbisyo:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service β /etc/systemd/system/lxd-hddpool.service.
Pagkatapos i-restart ang host system, sinusuri namin ang katayuan ng serbisyo:
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).
Mula sa output maaari naming i-verify na ang estado ng serbisyo ay aktibo, sa kabila ng katotohanan na ang pagpapatupad ng aming script mula sa isang utos ay nakumpleto, pinapayagan kami ng opsyon na gawin ito RemainAfterExit=true.
Dahil ang lahat ng mga proseso ng container ay aktwal na tumatakbo nang hiwalay sa host system gamit ang kernel nito, upang higit pang maprotektahan ang pag-access ng mga proseso ng container sa host system, nag-aalok ang LXD ng pribilehiyo ng proseso, kung saan:
Mga Pribilehiyo na Lalagyan - ito ay mga lalagyan kung saan ang mga prosesong may UID at GID ay tumutugma sa parehong may-ari tulad ng sa host system. Halimbawa, ang isang prosesong tumatakbo sa isang container na may UID na 0 ay may parehong mga karapatan sa pag-access tulad ng isang proseso sa host system na may UID na 0. Sa madaling salita, ang root user sa container ay may lahat ng karapatan hindi lamang sa ang lalagyan, ngunit gayundin sa host system kung maaari siyang lumabas sa nakahiwalay na namespace ng lalagyan.
Mga lalagyan na walang karapatan - ito ay mga lalagyan kung saan ang mga proseso ay pagmamay-ari ng may-ari ng UID at GID na may numero mula 0 hanggang 65535, ngunit para sa host system ang may-ari ay naka-mask gamit ang idinagdag na SubUID at SubGID bits, ayon sa pagkakabanggit. Halimbawa, ang isang user na may UID=0 sa isang container ay makikita sa host system bilang SubUID + UID. Pinoprotektahan nito ang host system dahil kung ang anumang proseso sa container ay makakatakas sa nakahiwalay na namespace nito, maaari lamang itong makipag-ugnayan sa host system bilang isang proseso na may hindi alam, napakataas na UID/GID.
Bilang default, ang mga bagong likhang container ay may unprivileged status at samakatuwid dapat tayong tumukoy ng SubUID at SubGID.
Gumawa tayo ng dalawang configuration file kung saan itatakda natin ang mask para sa SubUID at SubGID, ayon sa pagkakabanggit:
Dahil dati naming sinimulan ang network gamit ang initialization wizard lxd init at gumawa ng network device lxdbr0, pagkatapos sa seksyong ito ay makikilala lamang natin ang networking sa LXD at kung paano lumikha ng isang virtual switch (tulay) gamit ang command ng kliyente.
Ipinapakita ng sumusunod na diagram kung paano ikinokonekta ng switch (tulay) ang host at mga container sa isang network:
Maaaring makipag-ugnayan ang mga container sa pamamagitan ng network sa iba pang container o sa host kung saan inihahatid ang mga container na ito. Upang gawin ito, kailangan mong i-link ang mga virtual network card ng mga container gamit ang isang virtual switch. Gagawa muna kami ng switch, at mali-link ang mga interface ng network ng container sa mga susunod na kabanata, pagkatapos magawa ang container mismo.
Ang sumusunod na command ay lumilikha ng switch na may subnet 10.0.5.0/24 at IPv4 address 10.0.5.1/24, at kasama rin ipv4.nat upang ma-access ng mga lalagyan ang Internet sa pamamagitan ng host gamit ang serbisyo ng NAT:
Ang bawat container sa LXD ay may sarili nitong configuration at maaari itong palawigin gamit ang globally declared configurations na tinatawag mga profile ng pagsasaayos. Ang paglalapat ng mga profile ng configuration sa isang container ay may modelong cascade, ipinapakita ito ng sumusunod na halimbawa:
Sa halimbawang ito, tatlong profile ang ginawa sa LXD system: default, hddpool ΠΈ hostfs. Inilapat ang lahat ng tatlong profile sa isang lalagyan na may lokal na configuration (gray na lugar). Profile default may device root na may parameter pool ay pantay sa ssdpool, ngunit salamat sa cascade configuration application model, maaari kaming maglapat ng profile sa container hddpool na may parameter pool ay i-override ang parehong parameter mula sa profile default at matatanggap ng container ang configuration ng device root may parameter pool katumbas hddpool, at ang profile hostfs nagdaragdag lang ng bagong device sa container.
Upang makita ang listahan ng mga available na profile ng configuration, gamitin ang sumusunod na command:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Ang isang kumpletong listahan ng mga magagamit na command para sa pagtatrabaho sa isang profile ay maaaring makuha sa pamamagitan ng pagdaragdag ng susi --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 na profile ng pagsasaayos default ay walang configuration ng network card para sa container at lahat ng bagong likhang container ay walang network, para sa kanila kinakailangan na lumikha ng mga lokal (nakatuon) na device sa network na may hiwalay na command, ngunit maaari tayong lumikha ng isang global network device sa configuration profile na ibabahagi sa pagitan ng lahat ng container gamit ang profile na ito. Sa ganitong paraan, kaagad pagkatapos ng command na gumawa ng bagong container, magkakaroon sila ng network na may access sa network. Kasabay nito, walang mga paghihigpit; maaari kaming palaging lumikha ng isang lokal na aparato sa network sa ibang pagkakataon kung kinakailangan.
Idaragdag ng sumusunod na command ang device sa configuration profile eth0 uri nic konektado sa network lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Mahalagang tandaan na dahil talagang idinagdag namin ang device sa configuration profile, kung tumukoy kami ng static na IP address sa device, ang lahat ng container na gagamit sa profile na ito ay magbabahagi ng parehong IP address. Kung may pangangailangang gumawa ng container na may nakalaan na static na IP address para sa container, dapat kang gumawa ng configuration ng network device sa antas ng container (lokal na configuration) gamit ang parameter ng IP address, at hindi sa antas ng profile.
Tingnan natin ang profile:
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: []
Sa profile na ito makikita natin na para sa lahat ng bagong likhang container ay gagawa ng dalawang device:
eth0 β Uri ng device nic nakakonekta sa isang switch (tulay ng network) lxdbr0
root β Uri ng device disk na gumagamit ng storage pool ssdpool
Upang gamitin ang naunang ginawa Pool ng Imbakan container, lumikha ng profile ng pagsasaayos ssdroot kung saan magdaragdag kami ng device na tulad ng disk may mount point / (ugat) gamit ang naunang ginawa Pool ng Imbakan - ssdpool:
Ang mga lalagyan ay nilikha mula sa mga imahe na espesyal na pinagsama-samang mga pamamahagi na walang Linux kernel. Samakatuwid, bago patakbuhin ang lalagyan, dapat itong i-deploy mula sa larawang ito. Ang pinagmulan ng mga larawan ay isang lokal na imbakan kung saan dina-download ang mga larawan mula sa mga panlabas na imbakan.
Upang magpakita ng limitadong bilang ng mga column ginamit namin ang opsyon -c may mga parameter dasut, at limitado rin ang haba ng listahan gamit ang command head.
Ang pag-filter ay magagamit upang magpakita ng isang listahan ng mga larawan. Ililista ng sumusunod na command ang lahat ng magagamit na mga arkitektura ng pamamahagi AlpineLinux:
Upang simulan ang paggamit ng lalagyan, kailangan mong magdagdag ng isang imahe mula sa pandaigdigang repositoryo sa lokal local:. Ngayon ang lokal na imbakan ay walang laman, titiyakin ito ng utos lxc image list. Kung ang pamamaraan list huwag tukuyin ang isang imbakan, pagkatapos ay ang lokal na imbakan ay gagamitin bilang default - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Ang mga larawan sa repositoryo ay pinamamahalaan gamit ang mga sumusunod na pamamaraan:
Koponan
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
lxc na imahe bansag
Pamahalaan ang mga alias ng larawan
lxc na imahe kopyahin
Kopyahin ang mga larawan sa pagitan ng mga server
lxc na imahe alisin
Tanggalin ang mga imahe
lxc na imahe i-edit
I-edit ang mga katangian ng larawan
lxc na imahe i-export
I-export at i-download ang mga larawan
lxc na imahe angkat
Mag-import ng mga larawan sa tindahan ng larawan
lxc na imahe info
Magpakita ng kapaki-pakinabang na impormasyon tungkol sa mga larawan
lxc na imahe listahan
Maglista ng mga larawan
lxc na imahe papanariwain
I-refresh ang mga larawan
lxc na imahe Ipakita
Ipakita ang mga katangian ng larawan
Kopyahin ang larawan sa lokal na imbakan mula sa pandaigdigan images::
Bilang karagdagan sa interactive na mode, sinusuportahan din ng LXD ang isang non-interactive na mode ng pag-install ng configuration, ito ay kapag ang configuration ay tinukoy sa anyo ng isang YAML file, isang espesyal na format na nagbibigay-daan sa iyo upang i-install ang buong configuration nang sabay-sabay, na lumalampas sa pagpapatupad ng maraming interactive na command na tinalakay sa itaas sa artikulong ito, kabilang ang configuration ng network, paglikha ng mga profile ng configuration, atbp. Hindi namin sasaklawin ang lugar na ito dito, maaari mo itong suriin nang mag-isa. sa dokumentasyon.
Susunod na interactive na utos lxc config na aming titingnan ay nagbibigay-daan sa iyo upang itakda ang pagsasaayos. Halimbawa, upang matiyak na ang mga na-download na larawan sa lokal na imbakan ay hindi awtomatikong na-update mula sa mga pandaigdigang imbakan, maaari naming paganahin ang gawi na ito gamit ang sumusunod na command:
Para gumawa ng container gamitin ang command lxc init kung saan ipinapasa ang mga halaga ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:ΠΎΠ±ΡΠ°Π· at pagkatapos ay ang gustong ID para sa lalagyan. Maaaring tukuyin ang repository bilang lokal local: gayundin ang alinmang pandaigdigan. Kung ang imbakan ay hindi tinukoy, pagkatapos ay sa pamamagitan ng default ang lokal na imbakan ay ginagamit upang maghanap para sa imahe. Kung tinukoy ang larawan mula sa pandaigdigang repositoryo, ida-download muna ang larawan sa lokal na repositoryo at pagkatapos ay gagamitin sa paggawa ng container.
Patakbuhin natin ang sumusunod na command upang likhain ang ating unang lalagyan:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Tingnan natin ang mga command key na ginagamit natin dito sa pagkakasunud-sunod:
alpine3 β Tinukoy ang isang alias (alias) para sa larawang nauna nang na-upload sa lokal na repositoryo. Kung ang alias ay hindi ginawa para sa larawang ito, maaari mong palaging sumangguni sa larawan sa pamamagitan nito tatak ng daliri na ipinapakita sa talahanayan.
alp β Itinatakda ang identifier para sa lalagyan
--storage β Ang susi na ito ay nagpapahiwatig kung saan Pool ng Imbakan gagawa ng lalagyan
--profile β Ang mga key cascade na ito ay naglalapat ng configuration mula sa mga naunang ginawang configuration profile sa container
Inilunsad namin ang lalagyan, na nagsisimulang ilunsad ang init system ng pamamahagi:
lxc start alp
Maaari mo ring gamitin ang utos lxc launch na nagpapahintulot sa iyo na pagsamahin ang mga koponan lxc init ΠΈ lxc start sa isang operasyon.
Sinusuri ang estado ng lalagyan:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
Sa seksyon profiles matitiyak namin na ang lalagyang ito ay gumagamit ng dalawang profile ng pagsasaayos β default ΠΈ hddroot. Sa seksyon devices isang device lang ang matutukoy namin dahil ginawa ang network device sa antas ng profile default. Para makita ang lahat ng device na ginagamit ng container kailangan mong magdagdag ng key --expanded:
Kung susubukan naming magtakda ng IP address para sa isang network device eth0 koponan lxc config device set alp nilayon para sa configuration ng container, pagkatapos ay makakatanggap kami ng isang error na mag-uulat na ang device ay wala dahil ang device eth0 na ginagamit ng lalagyan ay kabilang sa profile default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Siyempre, maaari tayong magtakda ng isang static na IP address para sa eth0 mga device sa profile, ngunit magiging pareho ito para sa lahat ng container na gagamit sa profile na ito. Samakatuwid, magdagdag tayo ng device na nakatuon sa container:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Pagkatapos ay kailangan mong i-restart ang lalagyan:
lxc restart alp
Kung titingnan natin ngayon ang configuration ng container, hindi na natin kailangang gamitin ang opsyon --expanded para makita ang network device eth0, dahil ginawa namin ito sa antas ng container at nag-cascade ito sa parehong device mula sa profile default:
Upang direktang magsagawa ng mga utos sa isang lalagyan, lampasan ang mga koneksyon sa network, gamitin ang command lxc exec na nagpapatupad ng mga utos sa lalagyan nang hindi inilulunsad ang shell ng system. Kung kailangan mong magsagawa ng isang utos sa isang shell gamit ang mga pattern ng shell tulad ng mga variable, pag-redirect ng file (pipe), atbp., pagkatapos ay kailangan mong tahasang ilunsad ang shell at ipasa ang command bilang isang susi, halimbawa:
lxc exec alp -- /bin/sh -c "echo $HOME"
Gumamit ang utos ng isang espesyal na karakter sa pagtakas para sa espesyal na karakter $ upang ang variable $HOME ay hindi na-interpret sa host machine, ngunit na-interpret lamang sa loob ng container.
Posible ring simulan ang interactive na shell mode, at pagkatapos ay tapusin ang session sa pamamagitan ng pag-execute ng hotkey CTRL+D:
Sa LXD, maaari mong pamahalaan ang mga mapagkukunan ng container gamit ang isang espesyal na hanay ng configuration. Makakakita ng kumpletong listahan ng mga parameter ng configuration ng container sa dokumentasyon.
Parametro limits.memory nililimitahan ang dami ng RAM na magagamit sa lalagyan. Ang halaga ay isang numero at isa sa magagamit na mga suffix.
Itakda natin ang limitasyon ng RAM ng container sa 256 MB:
lxc config set alp limits.memory 256MB
Gayundin, mayroong iba pang mga parameter para sa paglilimita ng memorya:
limits.memory.enforce
limits.memory.hugepages
limits.memory.swap
limits.memory.swap.priority
Koponan lxc config show nagbibigay-daan sa iyong ipakita ang buong configuration ng container, kabilang ang inilapat na limitasyon sa mapagkukunan na itinakda:
limit.cpu - nagbibigkis ng lalagyan sa isa o higit pang mga core ng CPU
limits.cpu.allowance - namamahala sa alinman sa mga CFS scheduler quota kapag lumipas na ang limitasyon sa oras, o ang unibersal na mekanismo ng pagbabahagi ng mapagkukunan ng CPU kapag lumipas na ang porsyento
limits.cpu.priority - priority ng scheduler kapag maraming pagkakataon na nagbabahagi ng isang set ng mga processor ay itinalaga ng parehong porsyento ng mga processor
Bilang karagdagan sa mga paghihigpit tulad limits.read, limits.write maaari rin naming limitahan ang dami ng puwang sa disk na natupok ng lalagyan (gumagana lamang sa ZFS o BTRFS):
lxc config device set alp root size=2GB
Pagkatapos ng pag-install, sa parameter devices.root.size Maaari naming i-verify ang itinakdang limitasyon:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Upang tingnan ang mga ginamit na disk quota na makukuha natin mula sa command 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
Sa kabila ng katotohanan na nagtakda kami ng limitasyon para sa root device ng container sa 2GB, ang mga utility ng system tulad ng df hindi makikita ang paghihigpit na ito. Upang gawin ito, magsasagawa kami ng isang maliit na pagsubok at alamin kung paano ito gumagana.
Gumawa tayo ng 2 bagong magkaparehong lalagyan sa pareho Pool ng Imbakan (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Kung titingnan natin ang pangalawang lalagyan, suriin ang pagkakaroon ng isang file sa parehong lokasyon, kung gayon ang file na ito ay hindi naroroon, na inaasahan, dahil ang mga lalagyan ay nilikha sa kanilang sarili Dami ng Imbakan sa parehong Pool ng Imbakan:
lxc exec alp2 -- ls -lh
total 0
Ngunit ihambing natin ang mga halaga na ginagawa nito df sa isa at sa isa pang lalagyan:
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% /
...
Device /dev/loop1 naka-mount bilang root partition ay Pool ng Imbakan na ginagamit ng mga lalagyang ito, kaya't ibinabahagi nila ang dami nito sa pagitan ng dalawa.
Ang LXD ay may kakayahang lumikha ng mga snapshot at ibalik ang estado ng lalagyan mula sa kanila.
Upang lumikha ng isang snapshot, patakbuhin ang sumusunod na command:
lxc snapshot alp snapshot1
Ang koponan lxc snapshot walang available na susi list, samakatuwid, upang tingnan ang listahan ng mga snapshot kailangan mong gamitin ang command na nagpapakita ng pangkalahatang impormasyon tungkol sa lalagyan:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Maaari mong ibalik ang isang lalagyan mula sa isang snapshot gamit ang command lxc restore pagtukoy sa lalagyan kung saan isasagawa ang pagpapanumbalik at ang snapshot alias:
lxc restore alp snapshot1
Ang sumusunod na command ay ginagamit upang tanggalin ang isang snapshot. Pakitandaan na ang command syntax ay hindi katulad ng lahat ng iba pa; dito kailangan mong tumukoy ng forward slash pagkatapos ng pangalan ng container. Kung ang slash ay tinanggal, ang utos na tanggalin ang isang snapshot ay binibigyang kahulugan bilang isang utos na magtanggal ng isang lalagyan!
lxc delete alp/snapshot1
Sa halimbawa sa itaas, tiningnan namin ang tinatawag na stateless snapshot. Ang LXD ay may isa pang uri ng mga snapshot - stateful, na nagse-save sa kasalukuyang estado ng lahat ng mga proseso sa container. Mayroong ilang mga kawili-wili at kapaki-pakinabang na tampok na nauugnay sa mga stateful na snapshot.