LXD

Tutorial LXD

Tutorial LXD

Nozioni di base su LXD: che cos'è? E come usarlo?

La containerizzazione LXD non ha ottenuto le luci della ribalta di Docker, ma in realtà è molto più vicina all'idea centrale della virtualizzazione del sistema operativo. Ma prima di arrivarci, parliamo della virtualizzazione a livello hardware contemporanea.

Virtualizzazione hardware

Il modo tradizionale con cui funzionano VMware, VirtualBox, KVM e tecnologie simili è questo: hai un computer di livello server, ad esempio un processore Xeon di fascia alta con 512 GB di RAM, noto come bare metal. Installi un sistema operativo su questo, che quindi eseguirà VMware, Virtualbox o KVM.

Questi sono vari hypervisor, e il sistema operativo che li esegue è il sistema operativo host.

Ora, ciò che offre l'hypervisor è questo: emula CPU, interfacce di rete, dischi di archiviazione, memoria, I/O e altre risorse in modo tale che un nuovo sistema operativo possa essere installato su questo set di hardware virtuale. Questo nuovo sistema operativo è il sistema operativo ospite e funziona su hardware virtuale, come se fosse installato su una macchina fisica, ma c'è un problema.

Se stai pensando: "Ma emulare vari dispositivi hardware utilizzando l'hardware reale sembra inefficiente e lento and."Hai assolutamente ragione. La virtualizzazione a livello hardware è lenta e inefficiente.

Inoltre, i sistemi operativi stessi sono maniaci del controllo. Se assegni a un sistema operativo guest 1 GB di RAM e 2 core della CPU, prenderà felicemente tutte le risorse anche se le applicazioni in esecuzione al suo interno ne utilizzano solo una frazione. Queste risorse non saranno disponibili per l'uso da parte dell'hypervisor altrove.

Ciò limita fortemente il numero di VM che possono essere eseguite su un hypervisor. Se sei un provider di cloud hosting, questo significa che i tuoi profitti saranno colpiti gravemente.


Il modo contenitore di fare le cose

L'idea di hardware virtualizzato viene buttata fuori dalla finestra quando iniziamo a parlare di container e in particolare di LXD. Invece di emulare le singole risorse hardware, ciò che cerchiamo di fare è virtualizzare il sistema operativo.

Quando un container LX viene lanciato, il sistema operativo offre se stesso (cioè il kernel, le librerie tutte le risorse a sua disposizione) alle applicazioni in esecuzione all'interno del container. Gli utenti e le app all'interno di questo contenitore non saranno a conoscenza delle applicazioni e dei pacchetti in esecuzione al di fuori di esso e viceversa.

Per quanto riguarda l'allocazione delle risorse, puoi semplicemente prendere nota di non consentire a un particolare contenitore di utilizzare più di, ad esempio, 2 GB di RAM e 2 CPU. In questo modo, quando le app in esecuzione all'interno di un contenitore non fanno nulla di intenso, le risorse possono essere allocate altrove nell'ambiente host.

Tuttavia, quando le app sono in esecuzione sotto carico pesante, ottengono le prestazioni bare metal!

L'ovvio difetto di questo è che non puoi eseguire alcun sistema operativo arbitrario come ospite. Perché diversi sistemi operativi hanno architetture completamente diverse. Fortunatamente per gli utenti GNU/Linux, il kernel Linux offre una compatibilità ABI così stretta che puoi emulare diverse distribuzioni sullo stesso kernel. Quindi puoi eseguire binari CentOS e applicazioni Ubuntu sullo stesso metallo solo in contenitori diversi.


Inizializzazione LXD

La containerizzazione LX è una tecnologia solida e ben collaudata per i sistemi operativi basati su Linux. Ha due componenti principali, uno è LXC che è ciò che gestisce le configurazioni del contenitore, i file di immagine, ecc. E poi c'è LXD che è il demone in esecuzione sul tuo host che garantisce che tutte le politiche impostate per la containerizzazione vengano seguite.

Viene installato di default su Ubuntu Server 16.04 LTS, se stai usando la distribuzione desktop, esegui:

$ apt install lxd lxd-client

Una volta fatto, ti viene richiesto di inizializzare vari parametri. Il seguente comando ti guiderà attraverso di loro:

$ lxd init

Puoi selezionare le opzioni predefinite da qui in poi.  La cosa più complicata sarebbe la configurazione delle interfacce di rete. Quando viene richiesta la configurazione della rete LXD, selezionare l'opzione predefinita sì.

1 Rispondi di nuovo sì, quando ti viene chiesto di impostare la rete

La finestra successiva chiederà il nome dell'interfaccia di rete (come visto sull'host), lascialo al valore predefinito lxdbr0.

L'impostazione della sottorete IPv4 verrà dopo. Consentirebbe a diversi contenitori LX di comunicare tra loro come se fossero computer diversi su una rete locale. Seleziona sì per questo.

Successivamente ci saranno diversi 10.202.X.X indirizzi mostrati ciascuno con un ruolo diverso su questa sottorete. Puoi premere invio senza bisogno di modificare le opzioni. Quando viene richiesta la configurazione NAT, selezionare sì.

Ciò consente ai tuoi container di ottenere la connettività a Internet, utilizzando l'IP pubblico dell'host, più o meno allo stesso modo del tuo laptop e di altri dispositivi tramite il router di casa (con port forwarding).

L'ultima opzione sulla sottorete IPv6 è completamente facoltativa e ti consiglierei di ometterla per ora. Dire no, quando richiesto per le opzioni IPv6.


Far girare i contenitori

Per eseguire una nuova istanza di, ad esempio, Ubuntu 16.04, esegui il seguente comando:

$lxc lancia Ubuntu: 16tu.04 nome_del_tuo_contenitore

Poiché questa è la prima volta che esegui un server Ubuntu, ci vorrà del tempo per recuperare l'immagine del contenitore dai repository remoti. Fatto ciò, puoi vedere i dettagli sul contenitore lanciato, eseguendo il comando:

$lxc lista

In questo esempio il nome del contenitore è cont1.

Se vuoi entrare nel contenitore, esegui il comando;

$lxc exec nome_del_tuo_contenitore bash

Questo ti farà cadere nella shell bash in esecuzione all'interno di quel contenitore. Avrebbe l'odore e la sensazione di una nuova installazione di Ubuntu 16.04 e puoi installare liberamente i pacchetti al suo interno e fare vari esperimenti che non rischieresti la tua installazione principale.

Ora che hai il file immagine memorizzato localmente sul tuo sistema host, puoi far girare i contenitori Ubuntu molto rapidamente e usarli come sistemi usa e getta.

Per fermare ed eliminare un contenitore LX, esegui;

$lxc stop Nome_contenitore $lxc cancella nome_contenitore 

Usa il comando di avvio lxc, come hai fatto la prima volta per creare nuovi contenitori.


Dove andare da qui?

Ora che sai qual è l'architettura di LXD potresti voler iniziare a esplorare argomenti come il networking e lo storage per i container e come configurarli per adattarli al tuo carico di lavoro.

Potresti anche voler conoscere le principali differenze tra Docker e LXD e cosa potrebbe effettivamente adattarsi meglio alle tue esigenze. Se desideri utilizzare ZFS come backend di archiviazione (come dovresti!) potresti voler dare un'occhiata a questo tutorial sulle basi di ZFS.

Come scaricare e giocare a Sid Meier's Civilization VI su Linux
Introduzione al gioco Civilization 6 è una versione moderna del concetto classico introdotto nella serie dei giochi Age of Empires. L'idea era abbasta...
Come installare e giocare a Doom su Linux
Introduzione a Doom La serie Doom è nata negli anni '90 dopo l'uscita dell'originale Doom. È stato un successo immediato e da quel momento in poi la s...
Vulkan per utenti Linux
Con ogni nuova generazione di schede grafiche, vediamo gli sviluppatori di giochi spingere i limiti della fedeltà grafica e avvicinarsi di un passo al...