I-install ang LXC (Linux Containers) sa RHEL, Rocky & AlmaLinux


Ang LXD gihulagway nga sunod nga henerasyon nga sudlanan ug virtual machine manager nga nagtanyag usa ka immersive alang sa mga sistema sa Linux nga nagdagan sa sulod sa mga sudlanan o ingon mga virtual machine.

Naghatag kini og mga imahe alang sa usa ka daghan nga mga distribusyon sa Linux nga adunay suporta alang sa usa ka halapad nga pagpili sa mga backend sa pagtipig ug mga tipo sa network. Naghatag usab kini og kapilian sa pag-install sa mga imahe sa usa ka indibidwal nga PC/laptop ug bisan sa usa ka pananglitan sa panganod.

Ang LXD nagtugot kanimo sa pagdumala sa mga sudlanan ug mga VM gamit ang tulo ka paagi. Mahimo nimong magamit ang lxc client o command-line tool, usa ka REST API, o bisan ang mga panagsama sa ikatulo nga partido.

Ang mga bantog nga bahin sa LXD naglakip sa:

  • Ang LXD gibase sa hulagway nga adunay mga hulagway alang sa halapad nga pagpili sa mga distribusyon sa Linux.
  • Gitukod kini uban ang seguridad isip nag-unang prayoridad.
  • Naghatag kini og REST API ug lxc command-line tool aron makig-interact sa mga sudlanan.
  • Naghatag kini og suporta alang sa usa ka halapad nga mga backend sa pagtipig, gidaghanon sa pagtipig, ug mga pool sa pagtipig.
  • Ang pagdumala sa network kay pinaagi sa paghimo sa mga bridge network ug cross-host tunnels.
  • Abante nga pagkontrol sa mga kahinguhaan sama sa CPU, RAM, paggamit sa disk, block I/O, ug mga kahinguhaan sa kernel.
  • Flexible ug scalable – Mahimo nimong i-deploy ang mga sudlanan sa imong PC ug i-configure ang usa ka cluster nga mahimong mag-ipon og liboan ka mga sudlanan sa lain-laing mga node.

Dili malibog sa lxc command-line nga himan sa kliyente nga gihatag sa LXD, ang LXC (Linux Container) usa ka sikat nga OS-level virtualization nga teknolohiya nga naggamit sa usa ka gamhanan nga API ug uban pang mga himan aron ang mga tiggamit makahimo ug hapsay nga paghimo ug pagdumala sa mga sudlanan ug mga virtual machine sa usa ka host. Naglangkob kini sa mga templates, mga himan nga pinulongan, ug library bindings.

Gigamit sa LXC ang mosunod nga mga bahin sa kernel aron madumala ang mga proseso:

  • Kernel namespaces: pid, mount, uts network, ug user.
  • CGroup (kontrol nga mga grupo).
  • Chroots – Gamit ang pivot_root.
  • Mga palisiya sa Seccomp.
  • SELinux ug Apparmor nga mga profile.

Ang Linuxcontainers.org mao ang payong nga proyekto luyo sa LXD ug LXC. Ang tumong niini mao ang pagtanyag og distro ug vendor-neutral nga plataporma para sa mga teknolohiya sa container sa Linux.

Kung wala na kana nga pasiuna, ipakita na namon kung giunsa paghimo ug pagdumala ang mga sulud sa LXC sa mga distribusyon sa Linux nga nakabase sa RHEL sama sa CentOS, Rocky Linux, ug AlmaLinux.

Usa ka nagtrabaho nga operating system sa Linux nga adunay gamay nga pag-install:

  • Pag-instalar sa RHEL Linux
  • Pag-instalar sa CentOS Linux
  • Pag-instalar sa Rocky Linux
  • Pag-instalar sa AlmaLinux

Lakang 1: Ibutang ang SELinux sa Permissive Mode

Diha-diha dayon, magsugod kita pinaagi sa pag-configure sa SELinux ug pagpahimutang niini sa permissive. Apan sa dili pa nato kini buhaton, atong i-update ang mga pakete sa sistema sama sa mosunod:

$ sudo dnf update

Aron itakda ang SELinux sa permissive, ipatuman ang sugo:

$ sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Aron matuman kini, i-reboot ang imong server.

$ sudo reboot

Ug kumpirmahi ang kahimtang sa SELinux.

$ getenforce

Lakang 2: I-install ang EPEL Repository

Ang EPEL usa ka repositoryo gikan sa Fedora Project nga naghatag ug set sa mga dekalidad nga pakete para sa RedHat Enterprise Linux ug uban pang RHEL-based distributions.

$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
$ sudo yum install epel-release

Lakang 3: Idugang ang Kernel Parameters

Sa dili pa namo i-install ang LXD, gikinahanglan ang pipila ka dugang nga mga parameter. Busa balhin sa root user:

$ su -

Ug idugang ang mga parameter sama sa mosunod.

$ grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
$ grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)"
$ echo "user.max_user_namespaces=3883" | sudo tee -a /etc/sysctl.d/99-userns.conf

Kung naa na ang mga parameter, ipadayon ug i-enable ang Snap.

Lakang 4: I-install ug I-enable ang Snap

Ang pinakasimple nga paagi sa pag-instalar sa LXD sa RHEL 8 mao ang pag-instalar niini isip snap package. Apan una, atong i-install ang snap sama sa mosunod.

$ sudo dnf install snapd

Kini mag-instalar sa snapd daemon o serbisyo kauban sa ubang mga dependency sa Python sama sa gipakita.

Sa na-install nga snap, ipadayon ug i-enable ang main snap communication socket.

$ sudo systemctl enable --now snapd.socket

Dugang pa, mahimo ang klasiko nga suporta pinaagi sa paghimo og usa ka symlink gikan sa /var/lib/snapd/snap to /snap.

$ sudo ln -s /var/lib/snapd/snap  /snap

Aron ma-update ang mga snap path, i-restart ang imong sistema.

$ sudo reboot

Lakang 5: I-install ang LXD Containerization Manager

Adunay duha ka paagi sa pag-instalar sa LXD gikan sa usa ka snap. Mahimo nimong i-install ang pinakabag-o nga bersyon sa LXD sama sa gipakita.

$ sudo snap install —-classic lxd

Sa laing bahin, mahimo nimong i-install ang pinakabag-o nga stable nga bersyon sa LTS sama sa mosunod:

$ sudo snap install lxd --channel=4.0/stable

Aron makahimo sa pag-execute sa lxc commands nga dili mobalhin sa sudo user, idugang ang kasamtangang naka-log-in nga user sa lxd group.

$ sudo usermod -aG lxd $USER

Tinoa nga ang user gidugang sa lxd nga grupo pinaagi sa paglista sa tanang grupo nga sakop sa user.

$ groups tecmint

Sunod, pagdagan ang newgrp nga sugo sama sa mosunod.

$ newgrp lxd

Ang sugo nagbag-o sa kasamtangan nga ID sa grupo atol sa sesyon sa pag-login. Gitakda niini ang kasamtangan nga ID sa grupo sa ginganlan nga grupo nga mao ang lxd.

Lakang 6: Pagsugod sa LXD Environment

Sa dili pa kita magsugod sa paghimo ug pagdumala sa LXD nga mga sudlanan, kinahanglan natong unahon ang LXD environment pinaagi sa pagpadagan sa command.

$ lxc init

Ang mosunod usa ka serye sa mga pag-aghat nga magtugot kanimo sa pag-set up sa imong palibot. Ang mga default molihok nga maayo, apan ayaw pagduhaduha sa pagtino sa imong kaugalingon nga mga gusto.

Naghimo kami og storage pool nga gitawag og tec-pool nga adunay opsyon sa lvm isip backend.

Aron mapamatud-an ang LXD nga palibot nga bag-o lang nimo na-configure, adunay daghang mga sugo nga imong magamit. Pananglitan, aron ipakita ang default nga LXD profile ipatuman:

$ lxc profile show default

Aron ipakita ang mga adapter sa network ug ang mga adres sa IPv4 ug IPv6, pagdagan:

$ lxc network list

Mahimo nimo kini dugang nga pig-ot ug ipakita ang labi ka maayo nga kasayuran bahin sa interface sa lxdbr0 sama sa mosunod.

$ lxc network show lxdbr0

Mahimo usab nimo mapamatud-an ang storage pool.

$ lxc storage list

Makuha nimo ang dugang nga makuti nga mga detalye bahin sa storage pool.

$ lxc storage show tec-pool

Aron ilista ang nagdagan nga mga sudlanan sa lxc, padagana ang mando:

$ lxc list

Sa pagkakaron, wala pa mi nagdagan nga mga sudlanan. Mao nga makakuha ka usa ka walay sulod nga lamesa nga adunay mga label sa kolum.

Lakang 7: Paglista sa Prebuilt LXC Container Images

Sama sa Docker, ang LXC nga plataporma naghatag usa ka repositoryo sa mga pre-built nga mga imahe nga mahimo nimong maghimo mga sulud. Aron ilista ang tanang prebuilt nga mga hulagway para sa tanang operating system lakip na ang mga virtual machine, padagana ang command:

$ lxc image list images: 

Gipuno niini ang usa ka dako nga lista sa mga imahen sa sulud ug mga virtual machine alang sa tanan nga mga operating system. Aron makit-an ang usa ka piho nga pag-apod-apod sa Linux, gamita ang syntax:

$ lxc image list images: grep -i os-type

Pananglitan, aron makapangita alang sa magamit nga mga imahe alang sa Rocky Linux, padagana ang mando:

$ lxc image list images: grep -i rocky

Kung nangita ka alang sa mga imahe sa Debian, padagana ang mando:

$ lxc image list images: grep -i debian

Lakang 8: Paglunsad sa LXC Container

Sa paglansad sa mga sudlanan sa lxc, gamita ang syntax:

$ lxc launch images:{distro}/{version}/{arch} {container-name-here}

Dinhi, maglunsad kami og 2 ka sudlanan: tec-container1 gikan sa Debian 10 ug tec-container2 gikan sa Rocky Linux 8.

$ lxc launch images:debian/10/amd64 tec-container1
$ lxc launch images:rockylinux/8/amd64 tec-container2 

Aron ilista ang mga sudlanan sa lxc, ipatuman ang mando:

$ lxc list

Ang output nagpakita sa usa ka panon sa impormasyon mahitungod sa mga sudlanan. Naglakip kini sa ngalan sa mga sudlanan, estado - nagdagan man o mihunong - IPv4 ug IPv6 nga mga adres, tipo (kon sudlanan o virtual machine), ug daghang mga snapshot.

Aron ilista ang nagdagan nga mga sudlanan lamang, padagana ang mando:

$ lxc list | grep -i running

Ingon usab, alang sa nahunong nga mga sudlanan, ipatuman:

$ lxc list | grep -i stopped

Mahimo nimong susihon ang kasayuran ug sukatan sa usa ka sudlanan sama sa mga proseso sa pagpadagan, paggamit sa CPU ug memorya, ug bandwidth aron mahisgutan ang pipila gamit ang mando:

$ lxc info tec-container1 

Lakang 9: Pagbaton og Shell Access sa LXC Container

Mahimo nimong makuha ang pag-access sa bash sa usa ka sudlanan gamit ang syntax:

$ lxc exec container-name  name-of-the-shell

Aron maka-access sa shell sa tec-container1, among ipadagan ang command:

$ lxc exec tec-container1 bash

Kung nakuha na nimo ang pag-access sa shell, mahimo ka magsugod sa pagpakig-uban sa sudlanan ingon usa ka gamut nga tiggamit pinaagi sa pagpadagan sa mga sagad nga shell nga mga sugo lakip ang pag-update sa sistema sama sa gipakita:

$ apt update

Aron makagawas gikan sa sudlanan, padagana ang sugo:

$ exit

Sa laing paagi, mahimo nimong ipatuman ang mga sugo direkta sa sudlanan nga dili ma-access ang kabhang gamit ang mosunod nga format:

$ lxc exec container-name command

Pananglitan, mahimo nimong ipadagan ang mosunod nga mga sugo nga mag-update sa mga lista sa pakete, susihon ang bersyon sa OS nga nagdagan sa sudlanan sa Debian ug susihon ang petsa.

$ lxc exec tec-container1 apt update
$ lxc exec tec-container1 cat /etc/debian_version
$ lxc exec tec-container1 date

Lakang 10: Ibira/Iduso ang (mga) File ngadto sa LXC Container

Ang laing operasyon nga imong mahimo mao ang pagbalhin sa mga file ngadto ug gikan sa sudlanan. Aron ipakita kini, maghimo kami usa ka bag-ong direktoryo sa sudlanan sa LXD ug mag-navigate niini.

# mkdir data && cd data

Sunod, maghimo kami usa ka sample file ug idugang ang pipila nga datos. Aron mahimo kini maghimo kami usa ka sample file nga adunay vim editor

# vim file1.txt

Sunod, mag-type kami pipila ka sample nga teksto ug i-save ang file.

Hello World, Welcome to LXD containers.

Aron makuha ang file gikan sa sudlanan ngadto sa lokal nga sistema sa host, among gamiton ang syntax:

$ lxc file pull {container-name}/{path/to/file} {/path/to/local/dest}

Sa kini nga kaso, ang mando mahimong:

$ lxc file pull tec-container2/root/data/file1.txt /home/tecmint

Sa pagduso o pagkopya sa usa ka file gikan sa lokal nga direktoryo ngadto sa sudlanan gamita ang syntax:

$ lxc file push {/path/to/file} {container-nane} /path/to/dest/dir/

Niini nga kaso, aduna kitay sample file sa home directory nga gitawag og file2.txt nga gikopya ngadto sa /root/data/ path sa tec-container2 container.

$ lxc file push /home/tecmint/file2.txt tec-container2/root/data/

Aron makumpirma ang pagkaanaa sa file sa sulud, kami modagan:

$ lxc exec tec-container2 ls /root/data

Lakang 11: Hunong/Pagsugod/Pag-restart ug Pagtangtang sa mga Kontainer sa LXC

Uban sa lxc command-line utility mahimo nimong buhaton ang mga buluhaton sa pagdumala sa sulud sama sa paghunong, pagsugod, pag-restart ug pagtangtang sa mga sulud.

Aron mapahunong ang usa ka sudlanan sa lxc, gamita ang syntax:

$ lxc stop container-name

Pananglitan, aron mahunong ang tec-container1, atong ipadagan ang sugo:

$ lxc stop tec-container1

Aron masugdan ang lxc nga sudlanan, gamita ang syntax:

$ lxc start container-name

Pananglitan, aron masugdan ang tec-container1, atong ipatuman ang:

$ lxc start tec-container1

Aron ma-restart ang duha nga mga sulud sa lxc, ipadagan namon ang mando:

$ lxc restart tec-container1
$ lxc restart tec-container2

Aron matangtang ang usa ka sudlanan sa lxc, kinahanglan nimo, una, hunongon ang sudlanan ug pagkahuman kini tangtangon. Pananglitan, aron mapapas, atong ipadagan ang mga sugo:

$ lxc stop tec-container1
$ lxc delete tec-container1

Sa laing paagi, mahimo nimong ikombinar kining duha ka mga sugo sama sa gipakita.

$ lxc stop tec-container1 && lxc delete tec-container1

Lakang 12: Pagkuha og Tabang sa LXC Command-line Options

Aron makakuha og tabang sa ubang mga opsyon sa command nga gihatag sa LXC, padagana lang ang command:

$ lxc --help
OR
$ lxc command --help e.g
$ lxc file --help

Kana usa ka lawom nga pag-dive sa mga sudlanan sa LXD ug kung giunsa nimo paghimo ug pagdumala kini gamit ang lxc command-line utility tool. Kami misalig nga imong nakita nga kini nga giya makatabang.