Az LXD - Linux konténerrendszerek alapvető jellemzői

Az LXD - Linux konténerrendszerek alapvető jellemzői

LXD a következő generációs rendszertároló-kezelő, így szól forrás. A virtuális gépekhez hasonló felhasználói felületet kínál, de helyette Linux-tárolókat használ.

LXD mag egy privilegizált démon (root jogokkal futó szolgáltatás), amely REST API-t biztosít egy helyi unix socketen keresztül, valamint a hálózaton keresztül, ha a megfelelő konfiguráció telepítve van. Az ügyfelek, például az LXD-vel biztosított parancssori eszköz kéréseket küldenek ezen a REST API-n keresztül. Ez azt jelenti, hogy akár helyi, akár távoli gazdagéphez fér hozzá, minden ugyanúgy működik.

Ebben a cikkben nem foglalkozunk részletesen az LXD fogalmaival, nem vesszük figyelembe a dokumentációban felvázolt összes rendelkezésre álló képességet, beleértve a QEMU virtuális gépek támogatásának legutóbbi megvalósítását az LXD legújabb verzióiban a konténerekkel párhuzamosan. Ehelyett csak a konténerkezelés alapjait tanuljuk meg – tárolókészletek beállítása, hálózatépítés, konténer futtatása, erőforrás-korlátozások alkalmazása, valamint a pillanatképek használatának módja, hogy alapvető ismereteket szerezzen az LXD-ről és a konténerek használatáról Linuxon.

A teljes körű információért kérjük, tekintse meg a hivatalos forrást:

Navigáció

Telepítés LXD ^

LXD telepítése Ubuntu disztribúciókra ^

Az Ubuntu 19.10 disztribúciós csomagban lxd be van kapcsolva egy adás pattintható csomag:

apt search lxd

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

Ez azt jelenti, hogy egyszerre két csomag kerül telepítésre, az egyik rendszercsomagként, a másik pedig snap csomagként. Két csomag telepítése egy rendszerre problémákat okozhat, amikor a rendszercsomag elárvulhat, ha a snap csomagkezelő eltávolítja a snap csomagot.

Csomag keresése lxd a snap tárolóban a következő parancsot használhatja:

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

A parancs futtatásával list megbizonyosodhat arról, hogy a csomag lxd még nincs telepítve:

snap list

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

Annak ellenére, hogy az LXD egy snap csomag, a rendszercsomagon keresztül kell telepíteni lxd, amely létrehozza a megfelelő csoportot a rendszerben, a szükséges segédprogramokat /usr/bin stb

sudo apt update
sudo apt install lxd

Győződjön meg arról, hogy a csomag snap csomagként van telepítve:

snap list

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

LXD telepítése Arch Linux disztribúciókra ^

Az LXD csomag rendszerre történő telepítéséhez a következő parancsokat kell futtatnia: az első frissíti a rendszeren a lerakatban elérhető csomagok listáját, a második pedig közvetlenül telepíti a csomagot:

sudo pacman -Syyu && sudo pacman -S lxd

A csomag telepítése után ahhoz, hogy egy normál felhasználó kezelhesse az LXD-t, hozzá kell adni a rendszercsoporthoz lxd:

sudo usermod -a -G lxd user1

Győződjön meg arról, hogy a felhasználó user1 hozzáadva a csoporthoz lxd:

id -Gn user1

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

Ha a csoport lxd nem látható a listában, akkor újra aktiválnia kell a felhasználói munkamenetet. Ehhez ki kell jelentkezni és be kell jelentkezni ugyanazon felhasználó alatt.

Aktiváld be systemd az LXD szolgáltatás betöltése a rendszer indításakor:

sudo systemctl enable lxd

Kezdjük a szolgáltatással:

sudo systemctl start lxd

A szolgáltatás állapotának ellenőrzése:

sudo systemctl status lxd

Tárhely LXD (tárhely) ^

Az inicializálás megkezdése előtt meg kell értenünk, hogy az LXD-ben a tároló logikai elrendezése hogyan történik.

Tárolás (Tárolás) áll egy vagy többtől Tároló medence amely a támogatott fájlrendszerek egyikét használja, például ZFS, BTRFS, LVM vagy normál könyvtárakat. Minden Tároló medence kötetekre van osztva (Tárolási mennyiség), amelyek képeket, tárolókat vagy más célú adatokat tartalmaznak.

  • ábrázolás - ezek speciálisan összeállított disztribúciók Linux kernel nélkül, és külső forrásból elérhetők
  • konténerek - ezek a lemezképekből telepített disztribúciók, használatra készek
  • Pillanatképek - ezek pillanatképek a tárolók állapotáról, amelyekhez visszatérhet

Az LXD - Linux konténerrendszerek alapvető jellemzői

A tárhely kezeléséhez LXD-ben használja a parancsot lxc storage egy tanúsítvány, amelyhez a kulcs megadásával szerezhet be - lxc storage --help

A következő parancs megjeleníti az összes listát Tároló medence LXD tárolóban:

lxc storage list

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

Az összes lista megtekintéséhez Tárolási mennyiség a kiválasztottban Tároló medence szolgálja a csapatot 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       |
+-----------+----------------------------------+-------------+---------+

Továbbá, ha azért Tároló medence Létrehozáskor a BTRFS fájlrendszer került kiválasztásra, majd kap egy listát Tárolási mennyiség vagy almennyiségek a BTRFS értelmezésben ennek a fájlrendszernek az eszközkészletét használhatja:

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 inicializálása ^

A tárolók létrehozása és használata előtt el kell végeznie egy általános LXD inicializálást, amely létrehozza és konfigurálja a hálózatot és a tárolót. Ezt manuálisan is megteheti szabványos ügyfélparancsokkal, amelyek a parancs meghívásával elérhetők a listában lxc --help vagy az inicializálási varázsló segítségével lxd init válaszolva néhány kérdésre.

Fájlrendszer kiválasztása a Storage Pool számára ^

Az inicializálás során az LXD számos kérdést tesz fel, beleértve az alapértelmezett fájlrendszer típusának meghatározását Tároló medence. Alapértelmezés szerint a BTRFS fájlrendszer van kiválasztva. A létrehozás után lehetetlen lesz másik FS-re váltani. FS kiválasztása javasolt jellemzők összehasonlító táblázata:

Funkció
Könyvtár
btrfs
LVM
ZFS
CEPH

Optimalizált képtárolás
nem
Igen
Igen
Igen
Igen

Optimalizált példány létrehozása
nem
Igen
Igen
Igen
Igen

Optimalizált pillanatkép készítés
nem
Igen
Igen
Igen
Igen

Optimalizált képátvitel
nem
Igen
nem
Igen
Igen

Optimalizált példányátvitel
nem
Igen
nem
Igen
Igen

Másolás írásra
nem
Igen
Igen
Igen
Igen

Blokk alapú
nem
nem
Igen
nem
Igen

Azonnali klónozás
nem
Igen
Igen
Igen
Igen

Tároló illesztőprogram, amely konténerben használható
Igen
Igen
nem
nem
nem

Visszaállítás régebbi pillanatképekből (nem legújabb)
Igen
Igen
Igen
nem
Igen

Tárolási kvóták
Igen(*)
Igen
Igen
Igen
nem

A hálózat és a tárolókészlet inicializálása a varázsló segítségével ^

A következő parancs, amelyet megvizsgálunk, az LXD fő összetevőinek beállítását javasolja egyszerű kérdések megválaszolásával az inicializálási varázsló segítségével.

Futtassa a parancsot lxc init és írja be a kérdésekre a válaszokat a kettőspont után az alábbi példában látható módon, vagy módosítsa azokat a feltételeknek megfelelően:

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

További tárolókészlet létrehozása ^

Az előző lépésben létrehoztuk Tároló medence ami a nevet kapta ssdpool és amelynek a fájlja a rendszeremen a címen található /var/lib/lxd/disks/ssdpool.img. Ez a fájlrendszer-cím a számítógépem fizikai SSD-meghajtójának felel meg.

A következő műveletek a szerepkör megértésének bővítése érdekében Tároló medence az adattárban létrehozunk egy másodikat Tároló medence amely fizikailag egy másik típusú lemezen, HDD-n lesz elhelyezve. A probléma az, hogy az LXD nem teszi lehetővé a létrehozást Tároló medence címen kívül /var/lib/lxd/disks/ és még a szimbolikus linkek sem működnek, lásd a fejlesztő válaszát. Ezt a korlátozást megkerülhetjük az inicializálás/formázás során Tároló medence úgy, hogy az értéket blokkeszközként adja meg a visszacsatolási fájl elérési útja helyett, ezt a kulcsban megadva source.

Tehát a létrehozás előtt Tároló medence meg kell határoznia egy hurokfájlt vagy egy meglévő partíciót a fájlrendszeren, amelyet használni fog. Ehhez létrehozunk és használunk egy fájlt, amelynek méretét 10 GB-ra korlátozzuk:

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

Csatlakoztassuk a loopback fájlt egy ingyenes loopback eszközhöz:

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

/dev/loop1

A kulcsnak köszönhetően --show A parancs végrehajtása visszaadja a képernyőre annak az eszköznek a nevét, amelyhez a visszacsatolási fájlunk kapcsolódik. Ha szükséges, megjeleníthetjük az összes ilyen típusú foglalt eszköz listáját, hogy megbizonyosodjunk a műveleteink helyességéről:

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

A listából kiderül, hogy az eszköz rendelkezik /dev/loop1 loopback fájl tartalmazza /mnt/work/lxd/hddpool.img, és a készülékben /dev/loop0 loopback fájl tartalmazza /var/lib/lxd/disks/ssdpool.img ami megfelel az alapértelmezettnek Tároló medence.

A következő parancs újat hoz létre Tároló medence LXD-ben az imént elkészített loopback fájl alapján. Az LXD formázza a loopback fájlt /mnt/work/lxd/hddpool.img a készülékben /dev/loop1 BTRFS fájlrendszerhez:

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

Mutassunk egy listát az összesről Tároló medence képernyőre:

lxc storage list

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

A tárolókészlet méretének növelése ^

A teremtés után Tároló medence, szükség esetén bővíthető. Mert Tároló medence a BTRFS fájlrendszer alapján futtassa a következő parancsokat:

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

Visszahurkolt fájl automatikus beszúrása a visszahurkolt eszköz nyílásába ^

Van egy kis problémánk, a gazdarendszer újraindításakor, a fájl /mnt/work/lxd/hddpool.img "kirepül" a készülékből /dev/loop1 és az LXD szolgáltatás összeomlik betöltéskor, mert nem fogja látni ezen az eszközön. A probléma megoldásához létre kell hoznia egy rendszerszolgáltatást, amely beilleszti ezt a fájlt az eszközbe /dev/loop1 amikor a gazdagép rendszer elindul.

Alkossunk egység fájltípus szolgáltatás в /etc/systemd/system/ a SystemD inicializálási rendszerhez:

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

A szolgáltatás aktiválása:

sudo systemctl enable lxd-hddpool

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

A gazdagép rendszer újraindítása után ellenőrizzük a szolgáltatás állapotát:

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

A kimenetből ellenőrizhetjük, hogy a szolgáltatás állapota van-e aktív, annak ellenére, hogy a szkriptünk végrehajtása egy parancsból befejeződött, az opció lehetővé tette számunkra ezt RemainAfterExit=true.

Biztonság. Tárolójogok ^

Mivel az összes tárolófolyamat ténylegesen elszigetelten fut a gazdagépen a kernel használatával, a tárolófolyamatok gazdagéphez való hozzáférésének további védelme érdekében az LXD folyamatjogosultságot kínál, ahol:

  • Kiváltságos konténerek - ezek olyan konténerek, amelyekben az UID-vel és GID-vel rendelkező folyamatok ugyanannak a tulajdonosnak felelnek meg, mint a gazdagépen. Például egy 0 UID azonosítójú tárolóban futó folyamat ugyanazokkal a hozzáférési jogokkal rendelkezik, mint a 0 UID azonosítójú gazdagépen futó folyamat. Más szóval, a tároló root felhasználója nem csak a a tárolóban, hanem a gazdagépen is, ha ki tud lépni a tároló elszigetelt névterén.

  • Kiváltságtalan konténerek - ezek olyan konténerek, amelyekben a folyamatok az UID és a GID tulajdonosához tartoznak 0-tól 65535-ig terjedő számmal, de a gazdarendszernél a tulajdonost a hozzáadott SubUID és SubGID bitekkel maszkolja. Például egy tárolóban lévő UID=0 felhasználó a gazdagépen a következőként fog megjelenni SubUID + UID. Ez védi a gazdarendszert, mert ha a tárolóban lévő bármely folyamat képes kilépni az elszigetelt névteréből, akkor csak ismeretlen, nagyon magas UID/GID-vel rendelkező folyamatként tud kommunikálni a gazdarendszerrel.

Alapértelmezés szerint az újonnan létrehozott tárolók privilegizált állapotúak, ezért meg kell határoznunk egy SubUID-t és SubGID-t.

Hozzon létre két konfigurációs fájlt, amelyben beállítjuk a SubUID és a SubGID maszkját:

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

A változtatások alkalmazásához újra kell indítani az LXD szolgáltatást:

sudo systemctl restart lxd

Virtuális hálózati kapcsoló létrehozása ^

Mivel korábban az inicializálási varázsló segítségével inicializáltuk a hálózatot lxd init és létrehozott egy hálózati eszközt lxdbr0, akkor ebben a részben egyszerűen megismerkedünk az LXD-ben történő hálózatépítéssel, és a virtuális kapcsoló (híd) létrehozásával a kliens parancs segítségével.

A következő diagram bemutatja, hogyan köti össze egy kapcsoló (híd) a gazdagépet és a konténereket a hálózatba:

Az LXD - Linux konténerrendszerek alapvető jellemzői

A tárolók hálózaton keresztül kommunikálhatnak más tárolókkal vagy azzal a gazdagéppel, amelyen ezeket a tárolókat kiszolgálják. Ehhez a konténerek virtuális hálózati kártyáit össze kell kapcsolni egy virtuális kapcsolóval. Először létrehozunk egy kapcsolót, és a tároló hálózati interfészei a következő fejezetekben lesznek összekapcsolva, miután maga a tároló létrejött.

A következő parancs kapcsolót hoz létre egy alhálózattal 10.0.5.0/24 és IPv4 címet 10.0.5.1/24, és magában foglalja ipv4.nat hogy a tárolók hozzáférhessenek az Internethez a gazdagépen keresztül a NAT szolgáltatás használatával:

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

Az LXD-ben elérhető hálózati eszközök listájának ellenőrzése:

lxc network list

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

Azt is ellenőrizheti, hogy a hálózati eszközt a Linux disztribúció szabványos eszközével hoztak létre - ip link vagy 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

Konfigurációs profil ^

Az LXD-ben minden konténer saját konfigurációval rendelkezik, és kiterjesztheti globálisan deklarált konfigurációkkal konfigurációs profilok. A konfigurációs profilok tárolóra történő alkalmazása kaszkádmodelltel rendelkezik, a következő példa ezt szemlélteti:

Az LXD - Linux konténerrendszerek alapvető jellemzői

Ebben a példában három profilt hoztak létre az LXD rendszerben: default, hddpool и hostfs. Mindhárom profil egy helyi konfigurációval (szürke terület) rendelkező tárolóra kerül alkalmazásra. Profil default készüléke van root amelynek van egy paramétere pool egyenlő ssdpool, de a kaszkád konfigurációs alkalmazásmodellnek köszönhetően alkalmazhatunk profilt a tárolóra hddpool amelynek van egy paramétere pool felülírja ugyanazt a paramétert a profilból default és a tároló megkapja az eszközkonfigurációt root paraméterrel pool egyenlő hddpoolés a profilt hostfs egyszerűen hozzáad egy új eszközt a tárolóhoz.

Az elérhető konfigurációs profilok listájának megtekintéséhez használja a következő parancsot:

lxc profile list

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

A kulcs hozzáadásával elérhető a profillal való munkavégzéshez rendelkezésre álló parancsok teljes listája --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

Profilod szerkesztése ^

Alapértelmezett konfigurációs profil default nem rendelkezik hálózati kártya konfigurációval a konténerhez és minden újonnan létrehozott konténernek nincs hálózata, ezekhez külön paranccsal helyi (dedikált) hálózati eszközöket kell létrehozni, de a konfigurációban létrehozhatunk egy globális hálózati eszközt profilt, amely meg lesz osztva a profilt használó összes tároló között. Így közvetlenül az új tároló létrehozásának parancsa után lesz egy hálózatuk hálózati hozzáféréssel. Ugyanakkor nincsenek korlátozások, szükség esetén később bármikor létrehozhatunk helyi hálózati eszközt.

A következő parancs hozzáadja az eszközt a konfigurációs profilhoz eth0 típus nic csatlakozik a hálózathoz lxdbr0:

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

Fontos megjegyezni, hogy mivel az eszközt ténylegesen hozzáadtuk a konfigurációs profilhoz, ha statikus IP-címet adtunk meg az eszközben, akkor minden konténer, amely ezt a profilt fogja használni, ugyanazt az IP-címet fogja használni. Ha létre kell hozni egy tárolót statikus IP-címmel a tárolóhoz, akkor a hálózati eszköz konfigurációját a tároló szintjén (helyi konfiguráció) kell létrehoznia az IP-cím paraméterrel, nem pedig a profil szintjén.

Nézzük a profilt:

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

Ebben a profilban láthatjuk, hogy minden újonnan létrehozott tárolóhoz két eszköz jön létre:

  • eth0 - Eszköztípus nic kapcsolóhoz csatlakoztatva (hálózati híd) lxdbr0
  • root - Eszköztípus disk amely tárolómedencét használ ssdpool

Új profilok létrehozása ^

A korábban létrehozott Tároló medence tárolók, hozzon létre egy konfigurációs profilt ssdroot amelyben egy olyan eszközt adunk hozzá disk rögzítési ponttal / (root) a korábban létrehozott Tároló medence - ssdpool:

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

Hasonlóképpen létrehozunk egy hasonló eszközt disk, de ebben az esetben használja Tároló medence - hddpool:

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

Konfigurációs profilok ellenőrzése:

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

Képtár ^

A tárolók olyan lemezképekből jönnek létre, amelyek speciálisan összeállított disztribúciók, amelyek nem rendelkeznek Linux kernellel. Ezért a tároló futtatása előtt ebből a képből kell üzembe helyezni. A képek forrása egy helyi adattár, amelybe külső tárhelyekről töltik le a képeket.

Távoli képtárak ^

Alapértelmezés szerint az LXD úgy van beállítva, hogy három távoli forrásból fogadjon képeket:

  • ubuntu: (stabil Ubuntu képekhez)
  • ubuntu-napi: (napi Ubuntu képekhez)
  • képek: (egy csomó más disztribúcióhoz)

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    |
+-----------------+------------------------------------------+--------+--------+

Például adattár ubuntu: a következő képekkel rendelkezik:

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  |
+----------------------------------------------+--------------+----------+------------+

Korlátozott számú oszlop megjelenítéséhez ezt a lehetőséget használtuk -c paraméterekkel dasut, és a lista hosszát is korlátozta a paranccsal head.

A szűrés elérhető a képek listájának megjelenítéséhez. A következő parancs felsorolja az összes elérhető terjesztési architektúrát AlpineLinux:

lxc image -c ldast list images:alpine/3.11

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

Helyi képtár ^

A tároló használatának megkezdéséhez hozzá kell adnia egy képet a globális tárolóból a helyi tárolóhoz local:. Most a helyi tároló üres, a parancs megbizonyosodik erről lxc image list. Ha a módszer list ne adjon meg lerakat, akkor alapértelmezés szerint a helyi tároló kerül felhasználásra - local:

lxc image list local:

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

Az adattárban lévő képek kezelése a következő módszerekkel történik:

Csapat
Leírás

lxc kép álnév
Képálnevek kezelése

lxc kép másolat
Képek másolása a szerverek között

lxc kép töröl
Képek törlése

lxc kép szerkesztés
Szerkessze a kép tulajdonságait

lxc kép export
Képek exportálása és letöltése

lxc kép importál
Importáljon képeket a képtárba

lxc kép info
Hasznos információk megjelenítése a képekről

lxc kép lista
Képek listázása

lxc kép Frissítés
Képek frissítése

lxc kép előadás
Képtulajdonságok megjelenítése

Másolja a képet a helyi tárba a globális tárolóból images::

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

Image copied successfully!

Jelenítse meg a helyi tárhelyben jelenleg elérhető összes kép listáját local::

lxc image -c lfdatsu list local:

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

LXD konfiguráció ^

Az interaktív mód mellett az LXD támogatja a nem interaktív konfigurációs telepítési módot is, amikor a konfiguráció YAML fájl formájában kerül megadásra, egy speciális formátum, amely lehetővé teszi a teljes konfiguráció egyben történő telepítését a végrehajtás megkerülésével. számos interaktív parancs közül, amelyeket ebben a cikkben fentebb tárgyaltunk, beleértve a hálózati konfigurációt, a konfigurációs profilok létrehozását stb. Erre a területre itt nem térünk ki, ezt saját kezűleg is megnézheti. a dokumentációban.

Következő interaktív parancs lxc config amelyet megnézünk, lehetővé teszi a konfiguráció beállítását. Például annak biztosítására, hogy a helyi tárolóba letöltött képek ne frissüljenek automatikusan a globális adattárakból, engedélyezhetjük ezt a viselkedést a következő paranccsal:

lxc config set images.auto_update_cached=false

Konténer létrehozása és kezelése ^

Tároló létrehozásához használja a parancsot lxc init amelyre értékeket adnak át репозиторий:образ majd a tároló kívánt azonosítóját. A tárhely helyiként is megadható local: így minden globális. Ha a tárhely nincs megadva, akkor alapértelmezés szerint a helyi tárolót használja a rendszer a kép megkeresésére. Ha a lemezkép a globális tárolóból van megadva, akkor a rendszer először letölti a lemezképet a helyi tárolóba, majd felhasználja a tároló létrehozásához.

Futtassuk a következő parancsot az első tároló létrehozásához:

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

Nézzük sorrendben az általunk használt parancsbillentyűket:

  • alpine3 — A helyi adattárba korábban feltöltött kép álneve (alias) van megadva. Ha az álnevet nem ehhez a képhez hozták létre, akkor mindig hivatkozhat a képre Ujjlenyomat amely megjelenik a táblázatban.
  • alp — Beállítja a tároló azonosítóját
  • --storage — Ez a gomb jelzi, hogy melyikben Tároló medence konténer jön létre
  • --profile — Ezek a kulcsok lépcsőzetesen alkalmazzák a konfigurációt a korábban létrehozott konfigurációs profilokból a tárolóra

Elindítjuk a tárolót, amely elindítja a disztribúció init rendszerét:

lxc start alp

Használhatja a parancsot is lxc launch amely lehetővé teszi a csapatok összevonását lxc init и lxc start egy műveletben.

A tartály állapotának ellenőrzése:

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

A tároló konfigurációjának ellenőrzése:

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

A szakaszban profiles megbizonyosodhatunk arról, hogy ez a tároló két konfigurációs profilt használ − default и hddroot. Szakaszban devices csak egy eszközt tudunk észlelni, mert a hálózati eszköz profilszinten jött létre default. A tároló által használt összes eszköz megtekintéséhez hozzá kell adni egy kulcsot --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: ""

Statikus IP-cím beállítása ^

Ha megpróbálunk IP-címet beállítani egy hálózati eszközhöz eth0 csapat lxc config device set alp konténerkonfigurációra szánt, akkor hibaüzenetet kapunk, amely azt jelenti, hogy az eszköz nem létezik, mert az eszköz eth0 amelyet a konténer használ, az a profilhoz tartozik default:

lxc config device set alp eth0 ipv4.address 10.0.5.5

Error: The device doesn't exist

Természetesen beállíthatunk statikus IP-címet eth0 eszközöket a profilban, de ez ugyanaz lesz az összes tárolóban, amely ezt a profilt fogja használni. Ezért adjunk hozzá egy, a tárolóhoz dedikált eszközt:

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

Ezután újra kell indítania a tárolót:

lxc restart alp

Ha most megnézzük a tároló konfigurációját, akkor nem kell használnunk az opciót --expanded a hálózati eszköz megtekintéséhez eth0, mivel a konténer szintjén hoztuk létre, és a profilból ugyanarra az eszközre kaszkádolt 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: ""

Tartály eltávolítása ^

Egy tároló eltávolításához használja a parancsot lxc delete, de a tároló eltávolítása előtt le kell állítani a paranccsal lxc stop:

lxc stop alp

lxc list

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

Miután ellenőriztük, hogy a tároló állapota megtörtént STOPPED, ez eltávolítható Tároló medence:

lxc delete alp

Konténer hozzáférés ^

Ha közvetlenül, a hálózati kapcsolatokat megkerülve, egy tárolóban szeretne parancsokat végrehajtani, használja a parancsot lxc exec amely parancsokat hajt végre a tárolóban a rendszerhéj elindítása nélkül. Ha parancsot kell végrehajtania egy shellben shell-mintákkal, például változókkal, fájlátirányításokkal (pipe) stb., akkor kifejezetten el kell indítania a shellt, és át kell adnia a parancsot kulcsként, például:

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

A parancs egy speciális escape karaktert használt különleges karakterhez $ hogy a változó $HOME nem a gazdagépen volt értelmezve, hanem csak a tárolón belül volt értelmezve.

Az interaktív shell mód elindítása, majd a munkamenet befejezése a gyorsbillentyűk végrehajtásával is lehetséges CTRL+D:

lxc exec alp -- /bin/sh

Konténer erőforrás-kezelés ^

Az LXD-ben a tárolóerőforrásokat speciális konfigurációkészlettel kezelheti. A tároló konfigurációs paramétereinek teljes listája megtalálható a dokumentációban.

RAM erőforrás korlátozás ^

Paraméter limits.memory korlátozza a tároló számára elérhető RAM mennyiségét. Az érték egy szám és egy elérhető utótagok.

Állítsuk be a tároló RAM-korlátját 256 MB-ra:

lxc config set alp limits.memory 256MB

Ezenkívül vannak más paraméterek is a memória korlátozására:

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

Csapat lxc config show lehetővé teszi a teljes tárolókonfiguráció megjelenítését, beleértve a beállított alkalmazott erőforráskorlátot is:

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200220_13:00)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200220_13:00"
  image.type: squashfs
  limits.memory: 256MB
  volatile.base_image: 73a3093d4a5ce0148fd84b95369b3fbecd19a537ddfd2e2d20caa2eef0e8fd60
  volatile.eth0.host_name: veth75b6df07
  volatile.eth0.hwaddr: 00:16:3e:a1:e7:46
  volatile.idmap.base: "0"
  volatile.idmap.current: '[]'
  volatile.idmap.next: '[]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""

CPU erőforrás korlát ^

Számos módja van a CPU erőforrások korlátozásának. típusú korlátozások:

  • limit.cpu - egy tárolót egy vagy több CPU maghoz köt
  • limits.cpu.allowance - kezeli vagy a CFS ütemező kvótákat, amikor lejárt az időkorlát, vagy az univerzális CPU erőforrás-megosztási mechanizmust, amikor a százalék lejárt
  • limits.cpu.priority - ütemező prioritás, ha több, egy processzorkészletet megosztó példányhoz a processzorok azonos százaléka van hozzárendelve

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

Lemezterület korlátozás ^

A korlátozások mellett, mint pl limits.read, limits.write korlátozhatjuk a konténer által elfoglalt lemezterületet is (csak ZFS vagy BTRFS esetén működik):

lxc config device set alp root size=2GB

Telepítés után a paraméterben devices.root.size A beállított határértéket ellenőrizhetjük:

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

A felhasznált lemezkvóták megtekintéséhez a parancsból kaphatunk 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

Annak ellenére, hogy a tároló gyökéreszközének korlátot állítottunk 2 GB-ra, a rendszer segédprogramjai, mint pl. df nem fogja látni ezt a korlátozást. Ehhez egy kis tesztet végzünk, és megtudjuk, hogyan működik.

Hozzunk létre 2 új azonos tárolót ugyanabban Tároló medence (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         |
+------+---------+------------------+------+-----------+-----------+

Hozzon létre egy 1 GB-os fájlt az egyik tárolóban:

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

Győződjön meg arról, hogy a fájl létrejött:

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

Ha a második tárolóban nézünk, ellenőrizzük, hogy van-e fájl ugyanazon a helyen, akkor ez a fájl nem lesz ott, ami várható, mivel a konténerek saját magukban jönnek létre. Tárolási mennyiség ugyanabban a Tároló medence:

lxc exec alp2 -- ls -lh
total 0

De hasonlítsuk össze az általa termelt értékeket df az egyik és a másik tartályon:

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

eszköz /dev/loop1 úgy van felszerelve, mint a gyökérpartíció Tároló medence amelyeket ezek a tárolók használnak, így a térfogatukat ketten osztják meg.

Erőforrás felhasználási statisztikák ^

Egy tároló erőforrás-fogyasztási statisztikáit a következő paranccsal tekintheti meg:

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

Munka pillanatképekkel ^

Az LXD képes pillanatképeket készíteni, és ezekből visszaállítani a tároló állapotát.

Pillanatkép létrehozásához futtassa a következő parancsot:

lxc snapshot alp snapshot1

A csapat lxc snapshot nincs elérhető kulcs list, ezért a pillanatképek listájának megtekintéséhez használja a parancsot, amely általános információkat jelenít meg a tárolóról:

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

A paranccsal visszaállíthat egy tárolót pillanatfelvételből lxc restore megadva a tárolót, amelyre a visszaállítást végrehajtják, és a pillanatkép álnevet:

lxc restore alp snapshot1

A következő parancs a pillanatkép törlésére szolgál. Kérjük, vegye figyelembe, hogy a parancs szintaxisa nem hasonlít az összes többihez; itt meg kell adnia egy perjelet a tároló neve után. Ha a perjel kimarad, akkor a pillanatkép törlésére vonatkozó parancs tároló törlésére szolgáló parancsként értelmeződik!

lxc delete alp/snapshot1

A fenti példában az úgynevezett állapot nélküli pillanatképeket néztük meg. Az LXD egy másik típusú pillanatképet is tartalmaz - állapottartó, amely elmenti a tárolóban lévő összes folyamat aktuális állapotát. Számos érdekes és hasznos funkció kapcsolódik az állapotalapú pillanatképekhez.

Mi más? ^

  • A Python fejlesztők számára elérhető egy modul PyLXD amely API-t biztosít az LXD számára

FRISSÍTÉS 10.04.2020. 15. 00. XNUMX:XNUMX: Navigáció hozzáadva

Forrás: will.com

Hozzászólás