Questa guida discute di tutto su LXD. Vedremo come installare LXD e creare e gestire i contenitori.
Cos'è LXD?
Quando si parla di contenitori, la maggior parte dell'attenzione è stata su Docker e Kubernetes. Tuttavia, un modello di contenitore più vecchio, il Linux Container Project (LXC), è ancora utile, in particolare il suo set di strumenti LXD.
La virtualizzazione può essere ottenuta utilizzando un hypervisor o un contenitore.
Hypervisor come Oracle VM offrono un livello di astrazione, consentendo alla macchina virtuale ospite di avere un accesso isolato all'hardware e alle risorse del sistema host. Pertanto, gli hypervisor richiedono più spazio e scarica le risorse del sistema host per eseguire una macchina virtuale.
Al contrario, i contenitori Linux condividono il kernel del sistema operativo host, il che significa che i contenitori non sprecano le risorse e la memoria dell'host. Pertanto, è possibile avere molti contenitori in esecuzione su un server e la velocità e le prestazioni per i contenuti non sono eguali. Per creare e gestire questi contenitori, è necessario un modello di contenitore, come LXD.
LXD offre supporto container simulando una versione virtuale del sistema operativo host. In questo modo, il contenitore può funzionare senza influire sulle risorse dell'host.
Lavorare con contenitori LXD
Questa guida approfondirà la creazione di un contenitore Linux su Ubuntu usando LXD. Avremo due sezioni, installazione e creazione del contenitore.
1. Installazione di LXD
Per installare LXD, dobbiamo prima aggiornare il repository APT.
$ sudo apt update && sudo apt upgrade
Una volta aggiornato il repository APT, possiamo installare LXD come pacchetto SNAP. È possibile installare l'ultima versione stabile o specificare la versione LXD che si desidera installare
$ sudo snap install lxd -channel = 4.0/stabile
O
$ SNAP INSTALL LXD --Channel = ultimo/stabile
Questo esempio installa l'ultima versione stabile. Il pacchetto snap scaricerà il pacchetto.
Una volta completato il download, LXD verrà installato e visualizzerà un messaggio che conferma che l'installazione ha avuto successo.
Con LXD installato, è possibile gestire il server LXD aggiungendo l'utente al gruppo LXD. In questo modo, non dovrai essere root per gestire i contenitori LXD. Il comando seguente aggiunge l'utente corrente al gruppo LXD.
$ sudo adduser $ utente lxd
Supponiamo che l'utente sia già aggiunto, riceverai un messaggio che conferma che l'utente è già un membro del gruppo LXD.
Se si desidera aggiungere un altro utente a questo gruppo, utilizzare la sintassi di seguito.
$ sudo adduser nome utente lxd
Si noti che l'appartenenza al gruppo LXD si applicherà al successivo accesso. Puoi iniziare una nuova sessione SH per essere applicata. In alternativa, puoi eseguire il newgrp comando, che raggiunge lo stesso della creazione di una nuova sessione SSH.
Successivamente, dobbiamo confermare l'appartenenza al gruppo LXD utilizzando il id comando per accertare il membro che abbiamo aggiunto riflette nel gruppo. L'esempio seguente conferma che l'utente attuale per il nostro esempio è stato aggiunto correttamente al gruppo LXD.
Con ciò, possiamo creare e gestire i nostri contenitori LXD.
2. Creazione e gestione dei contenitori
La prima cosa è verificare se ci sono contenitori LXD esistenti sul server. Per questo, utilizzare l'opzione Elenco. Sebbene stiamo interrogando i contenitori LXD, noterai che stiamo usando LXC Perché LXD è un set di strumenti per il progetto LXC progettato per gestire l'API LXC.
Elenco $ LXC
In questo caso, abbiamo una nuova installazione LXD e noterai nell'output che non abbiamo alcun contenitore creato. Supponiamo di avere un contenitore, sarebbe stato elencato nella tabella seguente insieme ai suoi dettagli.
Il primo passo è inizializzare l'ambiente LXC utilizzando il dentro opzione.
$ sudo lxd init
In questo modo, LXC imposterà automaticamente l'ambiente spingendoti con diverse domande da aiutare nel processo di configurazione. Se non sei sicuro di come rispondere, ti consiglio di premere il tasto Invio per utilizzare le opzioni predefinite. Fungeranno bene. In alternativa, è possibile configurare l'installazione e scegliere le opzioni per questo tutorial, come nell'immagine seguente.
Una volta impostato l'ambiente LXC, sei pronto per creare il tuo primo contenitore.
Inoltre, puoi verificare varie informazioni sui contenitori LXD. Ad esempio, puoi controllare i profili disponibili elencandoli.
Elenco dei profili $ LXC
Il nome per il profilo è quello specificato quando inizializza l'ambiente LXC. Se vai con la denominazione predefinita, il tuo elenco di profili apparirà come quello sotto.
Per controllare le informazioni di archiviazione, utilizzare il comando di seguito.
$ LXC Elenco di archiviazione
Quando si dispone di più profili, è possibile specificare il nome del profilo che si desidera recuperare le informazioni di archiviazione utilizzando il spettacolo Opzione seguita dal nome del profilo. Per il nostro caso, il nostro profilo è chiamato predefinito e possiamo estrarre i suoi dettagli con il comando di seguito.
$ lxc Storage mostra impostazione predefinita
Otterrai informazioni di archiviazione, come le dimensioni, il nome del pool creato, ecc.
La buona notizia è che LXD supporta la creazione di contenitori per diverse distribuzioni Linux. Tutto ciò che serve è scaricare l'immagine per la distro che desideri, quindi installarla. Le immagini disponibili che puoi scaricare sono nel repository di LXC.
Il repository contiene diverse versioni di ogni distribuzione, quindi puoi selezionare quale versione e architettura funzionano meglio per il tuo caso. Usa il comando seguente per elencare tutte le immagini disponibili per tutte le distro.
$ LXC Immagini dell'elenco delle immagini:
Supponiamo di voler elencare le immagini per una distribuzione specifica, usa il grep comanda per filtrare il nome e la versione della distribuzione, se necessario. Qui, stiamo filtrando le immagini per Ubuntu.
$ LXC Elenco delle immagini Immagini: | grep -i ubuntu
Noterai nell'output di seguito che stiamo ottenendo diverse versioni e architetture per le immagini Ubuntu. È possibile creare un contenitore per una qualsiasi delle immagini elencate.
Per questo tutorial, creiamo rapidamente un contenitore per Alpino/3.14. Alpine è piccolo e puoi eseguire il comando qui sotto per creare un contenitore per esso. A seconda del tuo obiettivo, sei libero di usare qualsiasi distribuzione per il tuo caso.
$ LXC Immagini di lancio: Alpine/3.14/AMD64 Linuxhint1
Quando si crea il contenitore, è necessario specificare il nome del contenitore. Quindi, sostituire LinuxHint1 con il nome da utilizzare per il contenitore. Riceverai un messaggio che conferma che il contenitore è stato creato e avviato.
Verifichiamo che il nostro contenitore alpino sia creato elencando i contenitori disponibili utilizzando il comando Elenco.
In questo output, possiamo vedere il contenitore creato e il suo stato è attualmente in esecuzione, il che significa che il contenitore è attivo e possiamo usarlo. Al contenitore creato viene inoltre assegnato un IPv4 e IPv6. La creazione del contenitore dipende dalla velocità di Internet e dalle dimensioni della distribuzione per cui stai creando un contenitore.
Per utilizzare il contenitore creato, possiamo accedervi in una sessione di radice non login utilizzando il Exec comando. Per Alpine, useremo il sh interprete. Per Centos o Ubuntu, il /bin /bash funzionerebbe meglio.
Quindi, accedi al contenitore creato specificando il suo nome come mostrato.
$ sudo LXC EXEC Linuxhint1 SH
Immettere la password per il sistema host per autorizzare l'accesso al contenitore. Si noti che ora siamo nel contenitore come utente root e possiamo eseguire qualsiasi comando come root.
Quando si desidera chiudere la sessione, digita Uscita e premere Invio. Si noti che l'uscita di una sessione del contenitore non interrompe la sessione. Funziona ancora in background.
È possibile aggiungere un'interfaccia di rete virtuale ai contenitori specificando il loro nome. Facciamo prima elencare l'interfaccia di rete disponibile per il nostro sistema con il comando di seguito.
$ LXC Network LS
Supponiamo che volessimo aggiungere una nuova interfaccia virtuale per ENP0S3 per il nostro contenitore, potremmo ottenerlo attaccando l'interfaccia come segue.
$ LXC Network Colleg ENP0S3 LinuxHint1
Dopo aver aggiunto l'interfaccia di rete, apri una nuova sessione SH e controlla se la tua nuova interfaccia virtuale si rifletterà.
Con LXD, puoi anche controllare lo stato e le istanze del tuo contenitore per vedere se è in esecuzione o fermato. Per questo, usa il elenco -fast comando.
Elenco $ LXC -Fast
Nell'output di seguito, possiamo vedere che il nostro contenitore LinuxHint1 è in esecuzione nella colonna dello stato. Supponiamo di avere più contenitori. Tutti i casi avrebbero i loro stati e altri dettagli nella tabella seguente.
Puoi iniziare, fermarti o riavviare il contenitore in qualsiasi momento. Per fermare il contenitore, utilizzare il fermare Parola chiave seguita dal contenitore che si desidera interrompere.
$ lxc stop linuxhint1
Supponiamo di controllare lo stato attuale del nostro contenitore. Noteremo che è fermato. In tal caso, possiamo avviarlo con il comando qui sotto.
$ LXC Avvia Linuxhint1
Se abbiamo problemi con il contenitore, possiamo riavviarlo rapidamente con il comando di riavvio.
$ LXC Riavvia Linuxhint1
Quando si lavora con i contenitori, è possibile visualizzare le informazioni dei server LXD utilizzando il informazioni comando. Se non si specifica il nome del contenitore, l'output visualizzerà le informazioni per tutti i contenitori disponibili. Tuttavia, possiamo specificare il contenitore che vogliamo estrarre le sue informazioni.
$ LXC Info Linuxhint1
Le informazioni recuperate contiene tutti i dettagli del contenitore, come il nome del contenitore, il suo stato, il tipo, il PID e le risorse che il contenitore sta utilizzando. Queste informazioni sono fondamentali per la gestione del contenitore.
Tuttavia, LXD supporta la condivisione di file da e verso un contenitore. Potrebbe essere che vuoi spingere un determinato file che hai creato per renderlo accessibile dal contenitore o estrarre un file dal contenitore al sistema host. In tal caso, usa il spingere O tiro Parole chiave seguite dal percorso del file.
Nel primo esempio, stiamo uscendo dal contenitore e creando un file denominato nomi.TXT Sul sistema host. Successivamente, spingiamo il file creato al contenitore. Tuttavia, stiamo accedendo al contenitore e confermiamo che il nostro file è stato spinto correttamente.
Ecco la sintassi per spingere un file da un host a un contenitore.
$ lxc File Push /path/ Container/DestinationPath/on-container
Allo stesso modo, l'esempio seguente crea uno script sul contenitore. Quindi estraiamo lo script creato dal contenitore al sistema host nella directory corrente. L'ultimo comando elenca il contenuto della directory corrente sull'host per confermare che abbiamo estratto il file correttamente.
$ lxc file pull contenitore/path/to-file path/to-destination-on-host
L'ultima cosa è sapere come eliminare il contenitore creato quando non è più necessario. Innanzitutto, devi fermare il contenitore in esecuzione.
Una volta fermato, eliminalo usando il comando qui sotto.
$ LXC Elimina il nome container
Si tratta di creare e gestire i contenitori usando LXD. Se rimani bloccato a lavorare con LXD, apri la pagina di aiuto per vedere quale comando puoi usare a scopo un determinato scopo. Inoltre, puoi visualizzare la pagina di aiuto per un comando specifico.
Conclusione
LXD è un modello di container che offre un'API REST per supportare la gestione dei contenitori LXC. È possibile installare LXD come pacchetto snap e inizializzare un ambiente LXC ideale per la creazione di contenitori LXD. Questo post ha offerto un tutorial pratico su tutto di LXD. Abbiamo discusso di cosa significhi LXD, la sua installazione, la creazione e la gestione dei contenitori e come eliminare il contenitore creato.