LXD è descritto come il gestore di container e macchine virtuali di nuova generazione che offre un'esperienza immersiva per i sistemi Linux in esecuzione all'interno di container o come macchine virtuali.
Fornisce immagini per un numero spropositato di distribuzioni Linux con supporto per un'ampia selezione di backend di archiviazione e tipi di rete. Fornisce inoltre la possibilità di installare le immagini su un singolo PC/laptop e persino su un'istanza cloud.
LXD ti consente di gestire container e VM in tre modi. Puoi sfruttare il client lxc o uno strumento da riga di comando, un'API REST o persino integrazioni di terze parti.
Caratteristiche LXD
Notevole LXD le caratteristiche includono:
- LXD è basato su immagini con immagini per un'ampia selezione di distribuzioni Linux.
- È costruito con la sicurezza come una priorità assoluta.
- Fornisce un'API REST e uno strumento da riga di comando lxc per interagire con i container.
- Fornisce supporto per un'ampia gamma di backend di archiviazione, volumi di archiviazione e pool di archiviazione.
- La gestione della rete avviene attraverso la creazione di reti bridge e tunnel cross-host.
- Controllo avanzato di risorse come CPU, RAM, utilizzo del disco, I/O a blocchi e risorse del kernel.
- Flessibile e scalabile:puoi distribuire container sul tuo PC e configurare un cluster in grado di aggregare migliaia di container su vari nodi.
Cos'è LXC?
Da non confondere con lxc strumento client da riga di comando fornito da LXD , LXC (Contenitore Linux ) è una popolare tecnologia di virtualizzazione a livello di sistema operativo che utilizza una potente API e altri strumenti per consentire agli utenti di creare e gestire senza problemi contenitori e macchine virtuali in un unico host. Comprende modelli, linguaggio degli strumenti e associazioni di librerie.
Caratteristiche LXC
LXC sfrutta le seguenti funzionalità del kernel per gestire i processi:
- Spazi dei nomi del kernel:pid, mount, uts network e user.
- CGroups (gruppi di controllo).
- Croots – Utilizzo di pivot_root.
- Norme Seccomp.
- Profili SELinux e Apparmor.
Linuxcontainers.org è il progetto ombrello dietro entrambi LXD e LXC . Il suo obiettivo è offrire una piattaforma indipendente dalla distribuzione e dal fornitore per le tecnologie dei container Linux.
Con questa introduzione fuori mano, ora dimostreremo come creare e gestire LXC container su distribuzioni Linux basate su RHEL come CentOS , Linux roccioso, e AlmaLinux .
Requisiti
Un sistema operativo Linux funzionante con installazione minima:
- Installazione di RHEL Linux
- Installazione di CentOS Linux
- Installazione di Rocky Linux
- Installazione di AlmaLinux
Passaggio 1:imposta SELinux in modalità permissiva
Iniziamo subito configurando SELinux e impostandolo su permissivo. Ma prima di farlo, aggiorniamo i pacchetti di sistema come segue:
$ sudo dnf update
Per impostare SELinux per consentire, eseguire il comando:
$ sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Affinché ciò abbia effetto, riavvia il server.
$ sudo reboot
E conferma lo stato di SELinux .
$ getenforce
Fase 2:installa il repository EPEL
EPEL è un repository del Progetto Fedora che fornisce una serie di pacchetti di alta qualità per RedHat Enterprise Linux e altre distribuzioni basate su RHEL.
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm OR $ sudo yum install epel-release
Passaggio 3:aggiungi i parametri del kernel
Prima di installare LXD , sono necessari alcuni parametri aggiuntivi. Passa quindi all'utente root:
$ su -
E aggiungi i parametri come segue.
$ 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
Una volta impostati i parametri, procedi e abilita Snap.
Fase 4:installa e abilita Snap
Il modo più semplice per installare LXD su RHEL 8 è installarlo come uno scatto pacchetto. Ma prima installiamo snap come segue.
$ sudo dnf install snapd
Questo installerà snapd demone o servizio insieme ad altre dipendenze Python come mostrato.
Con lo snap installato, procedi e abilita lo snap principale presa di comunicazione.
$ sudo systemctl enable --now snapd.socket
Inoltre, abilita il supporto classico creando un collegamento simbolico da /var/lib/snapd/snap a /scatta .
$ sudo ln -s /var/lib/snapd/snap /snap
Per aggiornare lo snap percorsi, riavvia il sistema.
$ sudo reboot
Passaggio 5:installa LXD Containerization Manager
Esistono due modi per installare LXD da uno scatto . Puoi installare l'ultima versione di LXD come mostrato.
$ sudo snap install —-classic lxd
In alternativa, puoi installare l'ultimo LTS stabile versione come segue:
$ sudo snap install lxd --channel=4.0/stable
Per essere in grado di eseguire lxc comandi senza passare a sudo user, aggiungi l'utente attualmente connesso a lxd gruppo.
$ sudo usermod -aG lxd $USER
Verifica che l'utente sia stato aggiunto a lxd gruppo elencando tutti i gruppi a cui appartiene l'utente.
$ groups tecmint
Quindi, esegui newgrp comando come segue.
$ newgrp lxd
Il comando modifica l'ID del gruppo corrente durante una sessione di accesso. Imposta l'ID del gruppo corrente sul gruppo denominato che è lxd .
Passaggio 6:inizializzazione dell'ambiente LXD
Prima di iniziare a creare e gestire LXD container, dobbiamo inizializzare LXD ambiente eseguendo il comando.
$ lxc init
Quello che segue è una serie di prompt che ti permetteranno di configurare il tuo ambiente. Le impostazioni predefinite funzioneranno perfettamente, ma sentiti libero di specificare le tue preferenze.
Abbiamo creato uno storage pool chiamato tec-pool con il lvm opzione come backend.
Per verificare la LXD ambiente che hai appena configurato, ci sono una serie di comandi che puoi usare. Ad esempio, per visualizzare il profilo LXD predefinito eseguire:
$ lxc profile show default
Per visualizzare le schede di rete e l'IPv4 e IPv6 indirizzi, eseguire:
$ lxc network list
Puoi restringerlo ulteriormente e visualizzare informazioni più dettagliate su lxdbr0 interfaccia come segue.
$ lxc network show lxdbr0
Puoi anche verificare lo storage pool.
$ lxc storage list
Puoi ottenere ulteriori dettagli complessi sullo storage pool.
$ lxc storage show tec-pool
Per elencare lxc in esecuzione contenitori, eseguire il comando:
$ lxc list
Al momento, non abbiamo ancora alcun container in esecuzione. Quindi otterrai una tabella vuota con solo le etichette delle colonne.
Passaggio 7:elenco delle immagini container LXC predefinite
Proprio come Docker , il LXC la piattaforma fornisce un repository di immagini predefinite da cui è possibile creare contenitori. Per elencare tutte le immagini predefinite per tutti i sistemi operativi, comprese le macchine virtuali, eseguire il comando:
$ lxc image list images:
In questo modo viene compilato un enorme elenco di immagini contenitore e macchine virtuali per tutti i sistemi operativi. Per restringere il campo a una specifica distribuzione Linux, usa la sintassi:
$ lxc image list images: grep -i os-type
Ad esempio, per cercare le immagini disponibili per Rocky Linux , esegui il comando:
$ lxc image list images: grep -i rocky
Se stai cercando Debian immagini, esegui il comando:
$ lxc image list images: grep -i debian
Fase 8:lancio dei container LXC
Per avviare lxc contenitori, utilizzare la sintassi:
$ lxc launch images:{distro}/{version}/{arch} {container-name-here}
Qui lanceremo 2 container:tec-container1 da Debian 10 e tec-container2 da Rocky Linux 8 .
$ lxc launch images:debian/10/amd64 tec-container1 $ lxc launch images:rockylinux/8/amd64 tec-container2
Per elencare il lxc contenitori, eseguire il comando:
$ lxc list
L'output visualizza una serie di informazioni sui contenitori. Ciò include il nome dei contenitori, lo stato, in esecuzione o arrestato, gli indirizzi IPv4 e IPv6, il tipo (contenitore o macchina virtuale) e un numero di snapshot.
Per elencare solo i contenitori in esecuzione, esegui il comando:
$ lxc list | grep -i running
Allo stesso modo, per i contenitori fermi, eseguire:
$ lxc list | grep -i stopped
Puoi sondare le informazioni e le metriche di un container come processi in esecuzione, utilizzo di CPU e memoria e larghezza di banda per citarne alcuni usando il comando:
$ lxc info tec-container1
Fase 9:ottieni l'accesso Shell a un container LXC
Puoi ottenere l'accesso bash a un contenitore usando la sintassi:
$ lxc exec container-name name-of-the-shell
Per ottenere l'accesso shell a tec-container1 , eseguiremo il comando:
$ lxc exec tec-container1 bash
Una volta ottenuto l'accesso alla shell, puoi iniziare a interagire con il container come utente root eseguendo i comandi della shell comuni, incluso l'aggiornamento del sistema come mostrato:
$ apt update
Per uscire dal contenitore, esegui il comando:
$ exit
In alternativa, puoi eseguire i comandi direttamente sul contenitore senza accedere alla shell utilizzando il seguente formato:
$ lxc exec container-name command
Ad esempio, puoi eseguire i seguenti comandi che aggiorneranno gli elenchi dei pacchetti, controllano la versione del sistema operativo in esecuzione sul contenitore Debian e controllano la data.
$ lxc exec tec-container1 apt update $ lxc exec tec-container1 cat /etc/debian_version $ lxc exec tec-container1 date
Fase 10:estrai/spingi uno o più file in un contenitore LXC
Un'altra operazione che puoi eseguire è trasferire file da e verso il contenitore. Per dimostrarlo, creeremo una nuova directory in LXD contenitore e naviga al suo interno.
# mkdir data && cd data
Successivamente, creeremo un file di esempio e aggiungeremo alcuni dati. Per farlo creeremo un file di esempio con vim editore
# vim file1.txt
Successivamente, digiteremo del testo di esempio e salveremo il file.
Hello World, Welcome to LXD containers.
Per eseguire il pull del file dal contenitore al sistema host locale, utilizzeremo la sintassi:
$ lxc file pull {container-name}/{path/to/file} {/path/to/local/dest}
In questo caso, il comando sarà:
$ lxc file pull tec-container2/root/data/file1.txt /home/tecmint
Per eseguire il push o copiare un file dalla directory locale al contenitore, utilizzare la sintassi:
$ lxc file push {/path/to/file} {container-nane} /path/to/dest/dir/
In questo caso, abbiamo un file di esempio nella home directory chiamato file2.txt copiato in /root/data/ percorso nel tec-container2 contenitore.
$ lxc file push /home/tecmint/file2.txt tec-container2/root/data/
Per confermare l'esistenza del file nel contenitore, eseguiremo:
$ lxc exec tec-container2 ls /root/data
Fase 11:Arresta/Avvia/Riavvia ed elimina i contenitori LXC
Con lxc utilità della riga di comando puoi eseguire attività di gestione dei contenitori come l'arresto, l'avvio, il riavvio e l'eliminazione dei contenitori.
Per fermare un lxc contenitore, usa la sintassi:
$ lxc stop container-name
Ad esempio, per interrompere tec-container1 , eseguiremo il comando:
$ lxc stop tec-container1
Per avviare lxc contenitore, usa la sintassi:
$ lxc start container-name
Ad esempio, per avviare tec-container1 , eseguiremo:
$ lxc start tec-container1
Per riavviare entrambi lxc contenitori, eseguiremo il comando:
$ lxc restart tec-container1 $ lxc restart tec-container2
Per eliminare un lxc container, devi prima fermare il container e poi cancellarlo. Ad esempio, per eliminare, eseguiremo i comandi:
$ lxc stop tec-container1 $ lxc delete tec-container1
In alternativa, puoi combinare questi due comandi come mostrato.
$ lxc stop tec-container1 && lxc delete tec-container1
Passaggio 12:ottieni assistenza sulle opzioni della riga di comando di LXC
Per ottenere assistenza su altre opzioni di comando fornite da LXC , esegui semplicemente il comando:
$ lxc --help OR $ lxc command --help e.g $ lxc file --help
Conclusione
È stato un tuffo in profondità in LXD contenitori e come crearli e gestirli utilizzando lxc strumento di utilità della riga di comando. Confidiamo che tu abbia trovato utile questa guida.