LXD ialah pengurus kontena sistem generasi akan datang, demikian katanya sumber. Ia menawarkan antara muka pengguna yang serupa dengan mesin maya, tetapi sebaliknya menggunakan bekas Linux.
Teras LXD ialah daemon istimewa (perkhidmatan yang berjalan dengan hak akar) yang menyediakan API REST melalui soket unix tempatan, serta melalui rangkaian jika konfigurasi yang sesuai dipasang. Pelanggan, seperti alat baris arahan yang disediakan dengan LXD, membuat permintaan melalui REST API ini. Ini bermakna sama ada anda mengakses hos tempatan atau hos jauh, semuanya berfungsi sama.
Dalam artikel ini, kami tidak akan membincangkan secara terperinci tentang konsep LXD, kami tidak akan mempertimbangkan semua keupayaan tersedia yang digariskan dalam dokumentasi, termasuk pelaksanaan terkini dalam versi terkini sokongan LXD untuk mesin maya QEMU selari dengan bekas. Sebaliknya, kami akan mempelajari hanya asas pengurusan kontena - menyediakan kumpulan storan, rangkaian, menjalankan bekas, menggunakan had sumber dan cara menggunakan syot kilat supaya anda boleh mendapatkan pemahaman asas tentang LXD dan menggunakan bekas di Linux.
Ini bermakna dua pakej akan dipasang serentak, satu sebagai pakej sistem dan satu lagi sebagai pakej snap. Memasang dua pakej pada sistem mungkin menimbulkan beberapa masalah di mana pakej sistem mungkin menjadi yatim piatu jika pakej snap dialih keluar oleh pengurus pakej snap.
Cari pakej lxd dalam repositori snap anda boleh menggunakan arahan berikut:
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
Dengan menjalankan arahan list anda boleh memastikan bahawa pakej lxd belum dipasang:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalβ core
Walaupun fakta bahawa LXD adalah pakej snap, ia mesti dipasang melalui pakej sistem lxd, yang akan mewujudkan kumpulan yang sepadan dalam sistem, utiliti yang diperlukan dalam /usr/bin dan lain-lain
sudo apt update
sudo apt install lxd
Mari pastikan bahawa pakej dipasang sebagai pakej snap:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalβ core
lxd 3.21 13474 stable/β¦ canonicalβ -
Untuk memasang pakej LXD pada sistem, anda perlu menjalankan arahan berikut, yang pertama akan mengemas kini senarai pakej pada sistem yang tersedia dalam repositori, yang kedua akan memasang pakej secara langsung:
sudo pacman -Syyu && sudo pacman -S lxd
Selepas memasang pakej, untuk mengurus LXD oleh pengguna biasa, ia mesti ditambahkan pada kumpulan sistem lxd:
sudo usermod -a -G lxd user1
Mari pastikan pengguna user1 ditambah kepada kumpulan lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Jika kumpulan lxd tidak kelihatan dalam senarai, maka anda perlu mengaktifkan sesi pengguna sekali lagi. Untuk melakukan ini, anda perlu log keluar dan log masuk di bawah pengguna yang sama.
Aktifkan dalam systemd memuatkan perkhidmatan LXD pada permulaan sistem:
Sebelum permulaan bermula, kita perlu memahami bagaimana storan dalam LXD disusun secara logik.
Penyimpanan (Pada Suhu Ambien) terdiri daripada daripada satu atau lebih Kolam Storan yang menggunakan salah satu sistem fail yang disokong seperti ZFS, BTRFS, LVM atau direktori biasa. Setiap Kolam Storan dibahagikan kepada jilid (Jumlah simpanan) yang mengandungi imej, bekas atau data untuk tujuan lain.
Imej - ini adalah pengedaran yang dipasang khas tanpa kernel Linux dan boleh didapati daripada sumber luaran
Kontena - ini adalah pengedaran yang digunakan daripada imej, sedia untuk digunakan
Syot kilat - ini ialah syot kilat keadaan bekas yang boleh anda kembalikan
Untuk mengurus storan dalam LXD, gunakan arahan lxc storage sijil yang anda boleh dapatkan dengan menyatakan kunci - lxc storage --help
Perintah berikut memaparkan senarai semua Kolam Storan dalam storan LXD:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Untuk melihat senarai semua Jumlah simpanan dalam yang dipilih Kolam Storan berkhidmat kepada pasukan 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 |
+-----------+----------------------------------+-------------+---------+
Juga, jika untuk Kolam Storan Apabila mencipta, sistem fail BTRFS telah dipilih, kemudian dapatkan senarai Jumlah simpanan atau subvolume dalam tafsiran BTRFS, anda boleh menggunakan kit alat sistem fail ini:
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
Sebelum mencipta dan menggunakan bekas, anda mesti melakukan pemulaan LXD am yang mencipta dan mengkonfigurasi rangkaian dan storan. Ini boleh dilakukan secara manual menggunakan arahan klien standard yang tersedia dalam senarai dengan memanggil arahan lxc --help atau menggunakan wizard permulaan lxd init menjawab beberapa soalan.
Semasa permulaan, LXD bertanya beberapa soalan, termasuk menentukan jenis sistem fail untuk lalai Kolam Storan. Secara lalai, sistem fail BTRFS dipilih untuknya. Ia adalah mustahil untuk menukar kepada FS lain selepas penciptaan. Untuk memilih FS adalah dicadangkan jadual perbandingan ciri:
Ciri
Direktori
Btrfs
LVM
ZFS
CEPH
Storan imej yang dioptimumkan
tidak
yes
yes
yes
yes
Penciptaan contoh yang dioptimumkan
tidak
yes
yes
yes
yes
Penciptaan syot kilat yang dioptimumkan
tidak
yes
yes
yes
yes
Pemindahan imej yang dioptimumkan
tidak
yes
tidak
yes
yes
Pemindahan contoh yang dioptimumkan
tidak
yes
tidak
yes
yes
Salin pada tulisan
tidak
yes
yes
yes
yes
Berasaskan blok
tidak
tidak
yes
tidak
yes
Pengklonan segera
tidak
yes
yes
yes
yes
Pemacu storan boleh digunakan di dalam bekas
yes
yes
tidak
tidak
tidak
Pulihkan daripada syot kilat lama (bukan terkini)
yes
yes
yes
tidak
yes
Kuota simpanan
ya(*)
yes
yes
yes
tidak
Memulakan rangkaian dan Kolam Storan menggunakan wizard ^
Perintah seterusnya yang akan kita lihat mencadangkan menyediakan komponen utama LXD dengan menjawab soalan mudah menggunakan wizard permulaan.
Jalankan arahan lxc init dan masukkan jawapan kepada soalan selepas titik bertindih seperti yang ditunjukkan dalam contoh di bawah atau ubahnya mengikut syarat anda:
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]:
Pada langkah sebelumnya yang kami buat Kolam Storan yang diberi nama ssdpool dan fail yang terletak pada sistem saya di /var/lib/lxd/disks/ssdpool.img. Alamat sistem fail ini sepadan dengan pemacu SSD fizikal dalam PC saya.
Tindakan berikut, untuk meluaskan pemahaman tentang peranan yang dimainkan oleh Kolam Storan dalam repositori, kami akan membuat yang kedua Kolam Storan yang akan ditempatkan secara fizikal pada jenis cakera yang berbeza, HDD. Masalahnya ialah LXD tidak membenarkan anda mencipta Kolam Storan keluar dari alamat /var/lib/lxd/disks/ malah pautan simbolik tidak akan berfungsi, lihat respons pembangun. Kami boleh memintas had ini semasa pemulaan/pemformatan Kolam Storan dengan menentukan nilai sebagai peranti blok dan bukannya laluan ke fail gelung balik dengan menyatakan ini dalam kekunci source.
Jadi, sebelum mencipta Kolam Storan anda perlu menentukan fail loopback atau partition sedia ada pada sistem fail anda yang akan digunakan. Untuk melakukan ini, kami akan membuat dan menggunakan fail yang kami hadkan saiznya kepada 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
Mari sambungkan fail gelung balik ke peranti gelung balik percuma:
Terima kasih kepada kunci --show melaksanakan arahan itu mengembalikan ke skrin nama peranti di mana fail gelung balik kami disambungkan. Jika perlu, kami boleh memaparkan senarai semua peranti sibuk jenis ini untuk memastikan tindakan kami adalah betul:
Daripada senarai anda boleh mendapati bahawa peranti mempunyai /dev/loop1 fail loopback disertakan /mnt/work/lxd/hddpool.img, dan dalam peranti /dev/loop0 fail loopback disertakan /var/lib/lxd/disks/ssdpool.img yang sepadan dengan lalai Kolam Storan.
Perintah berikut mencipta yang baharu Kolam Storan dalam LXD berdasarkan fail loopback yang baru kami sediakan. LXD akan memformat fail gelung balik /mnt/work/lxd/hddpool.img dalam peranti /dev/loop1 untuk sistem fail BTRFS:
Penyisipan automatik fail gelung balik ke dalam slot peranti gelung balik ^
Kami mempunyai satu masalah kecil, apabila but semula sistem hos, fail /mnt/work/lxd/hddpool.img akan "terbang" keluar dari peranti /dev/loop1 dan perkhidmatan LXD akan ranap apabila memuatkan kerana ia tidak akan melihatnya dalam peranti ini. Untuk menyelesaikan masalah ini, anda perlu mencipta perkhidmatan sistem yang akan memasukkan fail ini ke dalam peranti /dev/loop1 apabila sistem hos but.
Jom buat unit jenis fail perkhidmatan Π² /etc/systemd/system/ untuk sistem permulaan 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
Aktifkan perkhidmatan:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service β /etc/systemd/system/lxd-hddpool.service.
Selepas memulakan semula sistem hos, kami menyemak status perkhidmatan:
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).
Daripada output kita boleh mengesahkan bahawa keadaan perkhidmatan adalah aktif, walaupun pada hakikatnya pelaksanaan skrip kami dari satu arahan telah selesai, pilihan itu membenarkan kami melakukan ini RemainAfterExit=true.
Memandangkan semua proses kontena sebenarnya berjalan secara berasingan pada sistem hos menggunakan kernelnya, untuk terus melindungi akses proses kontena kepada sistem hos, LXD menawarkan keistimewaan proses, di mana:
Bekas-bekas Istimewa - ini adalah bekas di mana proses dengan UID dan GID sepadan dengan pemilik yang sama seperti pada sistem hos. Sebagai contoh, proses yang berjalan dalam bekas dengan UID 0 mempunyai semua hak akses yang sama seperti proses pada sistem hos dengan UID 0. Dengan kata lain, pengguna akar dalam bekas mempunyai semua hak bukan sahaja dalam bekas, tetapi juga pada sistem hos jika dia boleh pergi ke luar ruang nama terpencil bekas itu.
Bekas yang tidak bernasib baik - ini adalah bekas di mana proses kepunyaan pemilik UID dan GID dengan nombor dari 0 hingga 65535, tetapi untuk sistem hos pemilik bertopeng menggunakan bit SubUID dan SubGID yang ditambahkan, masing-masing. Sebagai contoh, pengguna dengan UID=0 dalam bekas akan dilihat pada sistem hos sebagai SubUID + UID. Ini melindungi sistem hos kerana jika mana-mana proses dalam bekas dapat melepaskan ruang nama terpencilnya, ia hanya boleh berkomunikasi dengan sistem hos sebagai proses dengan UID/GID yang sangat tinggi yang tidak diketahui.
Secara lalai, bekas yang baru dibuat mempunyai status yang tidak mendapat keistimewaan dan oleh itu kita mesti menentukan SubUID dan SubGID.
Mari kita buat dua fail konfigurasi di mana kita akan menetapkan topeng untuk SubUID dan SubGID, masing-masing:
Memandangkan kami sebelum ini memulakan rangkaian menggunakan wizard pemula lxd init dan mencipta peranti rangkaian lxdbr0, maka dalam bahagian ini kita hanya akan berkenalan dengan rangkaian dalam LXD dan cara membuat suis maya (jambatan) menggunakan arahan klien.
Rajah berikut menunjukkan cara suis (jambatan) menghubungkan hos dan bekas ke dalam rangkaian:
Bekas boleh berkomunikasi melalui rangkaian dengan bekas lain atau hos tempat bekas ini dihidangkan. Untuk melakukan ini, anda perlu memautkan kad rangkaian maya bekas dengan suis maya. Kami akan membuat suis terlebih dahulu dan antara muka rangkaian bekas akan dipautkan dalam bab seterusnya, selepas bekas itu sendiri dibuat.
Perintah berikut mencipta suis dengan subnet 10.0.5.0/24 dan alamat IPv4 10.0.5.1/24, dan juga termasuk ipv4.nat supaya bekas boleh mengakses Internet melalui hos menggunakan perkhidmatan NAT:
Setiap bekas dalam LXD mempunyai konfigurasi sendiri dan boleh memanjangkannya dengan konfigurasi yang diisytiharkan secara global dipanggil profil konfigurasi. Menggunakan profil konfigurasi pada bekas mempunyai model lata, contoh berikut menunjukkan ini:
Dalam contoh ini, tiga profil telah dibuat dalam sistem LXD: default, hddpool ΠΈ hostfs. Ketiga-tiga profil digunakan pada bekas yang mempunyai konfigurasi setempat (kawasan kelabu). Profil default mempunyai peranti root yang mempunyai parameter pool sama dengan ssdpool, tetapi terima kasih kepada model aplikasi konfigurasi lata, kami boleh menggunakan profil pada bekas hddpool yang mempunyai parameter pool akan mengatasi parameter yang sama daripada profil default dan bekas akan menerima konfigurasi peranti root dengan parameter pool sama hddpool, dan profil hostfs hanya menambah peranti baharu pada bekas.
Untuk melihat senarai profil konfigurasi yang tersedia, gunakan arahan berikut:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
Senarai lengkap arahan yang tersedia untuk bekerja dengan profil boleh diperolehi dengan menambah kunci --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
Profil konfigurasi lalai default tidak mempunyai konfigurasi kad rangkaian untuk bekas dan semua bekas yang baru dibuat tidak mempunyai rangkaian, bagi mereka adalah perlu untuk mencipta peranti rangkaian tempatan (berdedikasi) dengan arahan yang berasingan, tetapi kita boleh mencipta peranti rangkaian global dalam konfigurasi profil yang akan dikongsi antara semua bekas menggunakan profil ini. Dengan cara ini, sejurus selepas arahan untuk mencipta bekas baharu, mereka akan mempunyai rangkaian dengan akses rangkaian. Pada masa yang sama, tiada sekatan; kami sentiasa boleh membuat peranti rangkaian tempatan kemudian jika perlu.
Perintah berikut akan menambah peranti pada profil konfigurasi eth0 jenis nic disambungkan ke rangkaian lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Adalah penting untuk ambil perhatian bahawa memandangkan kami sebenarnya menambahkan peranti pada profil konfigurasi, jika kami menetapkan alamat IP statik dalam peranti, maka semua bekas yang akan menggunakan profil ini akan berkongsi alamat IP yang sama. Jika terdapat keperluan untuk mencipta bekas dengan alamat IP statik yang diperuntukkan untuk bekas, maka anda harus membuat konfigurasi peranti rangkaian pada tahap kontena (konfigurasi setempat) dengan parameter alamat IP, dan bukan pada tahap profil.
Jom semak profil:
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: []
Dalam profil ini kita dapat melihat bahawa untuk semua bekas yang baru dibuat dua peranti akan dibuat:
eth0 - Jenis peranti nic disambungkan ke suis (jambatan rangkaian) lxdbr0
root - Jenis peranti disk yang menggunakan kolam simpanan ssdpool
Untuk menggunakan yang dibuat sebelum ini Kolam Storan bekas, buat profil konfigurasi ssdroot di mana kami akan menambah peranti seperti disk dengan titik pelekap / (root) menggunakan yang dibuat sebelum ini Kolam Storan - ssdpool:
Bekas dicipta daripada imej yang merupakan pengedaran yang dipasang khas yang tidak mempunyai kernel Linux. Oleh itu, sebelum menjalankan bekas, ia mesti digunakan daripada imej ini. Sumber imej ialah repositori tempatan di mana imej dimuat turun dari repositori luaran.
Untuk memaparkan bilangan lajur yang terhad, kami menggunakan pilihan -c dengan parameter dasut, dan juga mengehadkan panjang senarai dengan arahan head.
Penapisan tersedia untuk memaparkan senarai imej. Perintah berikut akan menyenaraikan semua seni bina pengedaran yang tersedia AlpineLinux:
Untuk mula menggunakan bekas, anda perlu menambah imej daripada repositori global kepada yang tempatan local:. Sekarang repositori tempatan kosong, arahan akan memastikan ini lxc image list. Jika kaedah list jangan nyatakan repositori, maka repositori tempatan akan digunakan secara lalai - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Imej dalam repositori diurus menggunakan kaedah berikut:
Pasukan
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
imej lxc alias
Urus alias imej
imej lxc salinan
Salin imej antara pelayan
imej lxc memadam
Padamkan gambar
imej lxc mengedit
Edit sifat imej
imej lxc mengeksport
Eksport dan muat turun imej
imej lxc mengimport
Import imej ke dalam stor imej
imej lxc maklumat
Tunjukkan maklumat berguna tentang imej
imej lxc senarai
Senaraikan imej
imej lxc refresh
Muat semula imej
imej lxc Menunjukkan
Tunjukkan sifat imej
Salin imej ke repositori tempatan daripada yang global images::
Sebagai tambahan kepada mod interaktif, LXD juga menyokong mod pemasangan konfigurasi bukan interaktif, ini adalah apabila konfigurasi ditentukan dalam bentuk fail YAML, format khas yang membolehkan anda memasang keseluruhan konfigurasi sekaligus, memintas pelaksanaan daripada banyak arahan interaktif yang dibincangkan di atas dalam artikel ini, termasuk konfigurasi rangkaian, penciptaan profil konfigurasi, dsb. Kami tidak akan meliputi kawasan ini di sini, anda boleh menyemaknya sendiri. dalam dokumentasi.
Perintah interaktif seterusnya lxc config yang akan kami lihat membolehkan anda menetapkan konfigurasi. Contohnya, untuk memastikan imej yang dimuat turun ke repositori tempatan tidak dikemas kini secara automatik daripada repositori global, kami boleh mendayakan tingkah laku ini dengan arahan berikut:
Untuk membuat bekas gunakan arahan lxc init kepada mana nilai diluluskan ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:ΠΎΠ±ΡΠ°Π· dan kemudian ID yang diingini untuk bekas. Repositori boleh ditentukan sebagai tempatan local: begitu juga dengan mana-mana yang global. Jika repositori tidak ditentukan, maka secara lalai repositori tempatan digunakan untuk mencari imej. Jika imej ditentukan daripada repositori global, maka imej itu akan dimuat turun terlebih dahulu ke repositori tempatan dan kemudian digunakan untuk mencipta bekas.
Mari jalankan arahan berikut untuk mencipta bekas pertama kami:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Mari lihat kekunci arahan yang kami gunakan di sini mengikut urutan:
alpine3 β Alias ββ(alias) ditentukan untuk imej yang sebelum ini dimuat naik ke repositori tempatan. Jika alias tidak dicipta untuk imej ini, maka anda sentiasa boleh merujuk imej itu mengikut imejnya cap jari yang dipaparkan dalam jadual.
alp β Tetapkan pengecam untuk bekas
--storage β Kekunci ini menunjukkan di mana Kolam Storan satu bekas akan dibuat
--profile β Lata kekunci ini menggunakan konfigurasi daripada profil konfigurasi yang dibuat sebelum ini kepada bekas
Kami melancarkan bekas, yang mula melancarkan sistem init pengedaran:
lxc start alp
Anda juga boleh menggunakan arahan lxc launch yang membolehkan anda menggabungkan pasukan lxc init ΠΈ lxc start dalam satu operasi.
Memeriksa keadaan bekas:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
Dalam bahagian profiles kita boleh memastikan bahawa bekas ini menggunakan dua profil konfigurasi β default ΠΈ hddroot. Dalam bahagian devices kami hanya dapat mengesan satu peranti kerana peranti rangkaian telah dibuat pada peringkat profil default. Untuk melihat semua peranti yang digunakan oleh bekas, anda perlu menambah kunci --expanded:
Jika kita cuba menetapkan alamat IP untuk peranti rangkaian eth0 pasukan lxc config device set alp bertujuan untuk konfigurasi bekas, maka kami akan menerima ralat yang akan melaporkan bahawa peranti itu tidak wujud kerana peranti itu eth0 yang digunakan oleh bekas adalah kepunyaan profil default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Kita sudah tentu boleh menetapkan alamat IP statik untuk eth0 peranti dalam profil, tetapi ia akan menjadi sama untuk semua bekas yang akan menggunakan profil ini. Oleh itu, mari tambah peranti khusus untuk bekas:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Kemudian anda perlu memulakan semula bekas:
lxc restart alp
Jika kita melihat konfigurasi kontena sekarang, kita tidak perlu menggunakan pilihan tersebut --expanded untuk melihat peranti rangkaian eth0, kerana kami menciptanya pada tahap bekas dan ia melata pada peranti yang sama daripada profil default:
Untuk melaksanakan arahan dalam bekas secara langsung, memintas sambungan rangkaian, gunakan arahan lxc exec yang melaksanakan arahan dalam bekas tanpa melancarkan shell sistem. Jika anda perlu melaksanakan perintah dalam shell menggunakan corak shell seperti pembolehubah, ubah hala fail (paip), dll., maka anda perlu melancarkan shell secara eksplisit dan lulus arahan sebagai kunci, contohnya:
lxc exec alp -- /bin/sh -c "echo $HOME"
Perintah itu menggunakan watak melarikan diri khas untuk watak istimewa $ supaya pembolehubah $HOME tidak ditafsirkan pada mesin hos, tetapi hanya ditafsirkan di dalam bekas.
Ia juga mungkin untuk memulakan mod shell interaktif, dan kemudian menamatkan sesi dengan melaksanakan hotkey CTRL+D:
Dalam LXD, anda boleh mengurus sumber kontena menggunakan set konfigurasi khas. Senarai lengkap parameter konfigurasi kontena boleh didapati dalam dokumentasi.
Terdapat beberapa cara untuk mengehadkan sumber CPU. jenis sekatan:
limit.cpu - mengikat bekas kepada satu atau lebih teras CPU
limits.cpu.allowance - mengurus sama ada kuota penjadual CFS apabila had masa telah berlalu, atau mekanisme perkongsian sumber CPU universal apabila peratusan telah berlalu
limits.cpu.priority - keutamaan penjadual apabila berbilang kejadian berkongsi set pemproses diberikan peratusan pemproses yang sama
Selain sekatan seperti itu limits.read, limits.write kami juga boleh mengehadkan jumlah ruang cakera yang digunakan oleh bekas (hanya berfungsi dengan ZFS atau BTRFS):
lxc config device set alp root size=2GB
Selepas pemasangan, dalam parameter devices.root.size Kami boleh mengesahkan had yang ditetapkan:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
Untuk melihat kuota cakera yang digunakan kita boleh dapatkan daripada arahan 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
Walaupun fakta bahawa kami telah menetapkan had untuk peranti akar kontena kepada 2GB, utiliti sistem seperti df tidak akan melihat sekatan ini. Untuk melakukan ini, kami akan menjalankan ujian kecil dan mengetahui cara ia berfungsi.
Mari buat 2 bekas serupa baharu dalam bekas yang sama Kolam Storan (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Jika kita melihat dalam bekas kedua, semak kewujudan fail di lokasi yang sama, maka fail ini tidak akan berada di sana, yang dijangka, kerana bekas dibuat dalam mereka sendiri Jumlah simpanan dalam yang sama Kolam Storan:
lxc exec alp2 -- ls -lh
total 0
Tetapi mari kita bandingkan nilai yang dihasilkannya df pada satu dan bekas yang lain:
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% /
...
peranti /dev/loop1 dipasang sebagai partition root Kolam Storan yang digunakan oleh bekas ini, jadi mereka berkongsi volumnya antara dua.
LXD mempunyai keupayaan untuk mencipta syot kilat dan memulihkan keadaan bekas daripadanya.
Untuk membuat syot kilat, jalankan arahan berikut:
lxc snapshot alp snapshot1
Pasukan lxc snapshot tiada kunci tersedia list, oleh itu, untuk melihat senarai syot kilat anda perlu menggunakan arahan yang memaparkan maklumat umum tentang bekas:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
Anda boleh memulihkan bekas daripada syot kilat menggunakan arahan lxc restore menyatakan bekas yang mana pemulihan akan dilakukan dan alias syot kilat:
lxc restore alp snapshot1
Perintah berikut digunakan untuk memadam syot kilat. Sila ambil perhatian bahawa sintaks arahan tidak serupa dengan semua yang lain; di sini anda perlu menentukan garis miring ke hadapan selepas nama bekas. Jika garis miring ditinggalkan, maka perintah untuk memadamkan syot kilat ditafsirkan sebagai perintah untuk memadam bekas!
lxc delete alp/snapshot1
Dalam contoh di atas, kami melihat apa yang dipanggil syot kilat tanpa kewarganegaraan. LXD mempunyai satu lagi jenis syot kilat - stateful, yang menyimpan keadaan semasa semua proses dalam bekas. Terdapat beberapa ciri menarik dan berguna yang dikaitkan dengan syot kilat stateful.