Come avviare distribuzioni multiple utilizzando contenitori Linux

I contenitori Linux (LXC) sono una tecnologia di virtualizzazione leggera e hanno vari usi. Fa parte del kernel Linux e ti consente di emulare una o più distribuzioni Linux su un singolo host Linux. Pensala come una via di mezzo tra un chroot e tecnologie di virtualizzazione complete come VirtualBox, KVM o Xen. Una tecnologia simile presente nel mondo BSD sono FreeBSD Jails.

Ad esempio, la macchina su cui sto scrivendo è un laptop con Linux Mint 18, alimentato da un processore Intel Atom e ha solo 2 GB di RAM. Tuttavia, sto eseguendo tre container Linux, ciascuno con un’istanza del server Web Apache in esecuzione, senza un grande calo delle prestazioni. Questo sarebbe impensabile con una macchina virtuale tradizionale come VirtualBox. Quindi, se desideri eseguire più distribuzioni sul tuo sistema Linux, Linux Containers dovrebbe fare il lavoro per te bene.

Installazione e configurazione di container Linux

Stiamo configurando LXC su Linux Mint 18 a 64 bit. Le istruzioni di installazione fornite qui funzioneranno senza modifiche anche su Ubuntu 16.04 e versioni successive. Se stai utilizzando un’altra distribuzione, fai riferimento alla documentazione ufficiale della tua distribuzione se qualcosa non funziona come previsto. Si presuppone anche una familiarità con la riga di comando e la risoluzione dei problemi generali.

Prerequisiti

Ecco alcune cose che dovresti impostare per iniziare a utilizzare più distribuzioni:

1. Installa LXC e altri software prerequisiti che utilizzano:

[sourcecode]sudo apt install lxc lxc-templates uidmap[/sourcecode]

2. Ora devi farlo configura il tuo profilo. Immettere i seguenti comandi per configurarlo:

[sourcecode]mkdir -p ~/.config/lxc
echo “lxc.id_map = u 0 100000 65536” > ~/.config/lxc/default.conf
echo “lxc.id_map = g 0 100000 65536” >> ~/.config/lxc/default.conf
echo “lxc.network.type = veth” >> ~/.config/lxc/default.conf
echo “lxc.network.link = lxcbr0” >> ~/.config/lxc/default.conf
echo “$USER veth lxcbr0 2” | sudo tee -a /etc/lxc/lxc-usernet[/sourcecode]

3. Quindi, è necessario impostare i permessi utente come segue:

[sourcecode]sudo usermod –add-subids 100000-165536 $USER
sudo usermod –add-subgids 100000-165536 $USER

sudo cgm crea tutti gli utenti
sudo cgm chown all utente $(id -u) $(id -g)
cgm movepid tutti gli utenti $$[/sourcecode]

Configurare il tuo contenitore

Ora che hai installato LXC Container insieme ad altri software prerequisiti, ecco i passaggi per configurare il Container:

1. In questo esempio, imposteremo un contenitore Ubuntu, denominato ubu1. Per farlo, esegui il seguente comando:

[sourcecode]lxc-create –template download –name ubu1[/sourcecode]

2. Qui, il parametro –template dice a lxc di farlo Scarica un’immagine preconfigurata da Internet, mentre il parametro –name specifica il nome del contenitore – ubu1 in questo caso. Puoi usare il nome che preferisci.

3. Ora vedrai un elenco di immagini di distribuzione supportate:

selezione della distribuzione

4. Inserisci le specifiche della distribuzione che desideri installare. Installerò la versione a 64 bit di Ubuntu 16.04 (nome in codice xenial) qui:

install-ubuntu

5. Se lo desideri installare l’immagine in modo non interattivoil comando seguente ottiene lo stesso risultato del precedente:

[sourcecode]lxc-create -t ​​download -n ubu1 — –dist ubuntu –release xenial –arch amd64[/sourcecode]

6. LXC ora scaricherà e installerà un’immagine xenial Ubuntu minima sul tuo sistema host. Il download e l’installazione potrebbero richiedere un po’ di tempo a seconda della tua connessione Internet e della velocità del tuo PC. Dopo l’installazionevedrai una schermata come questa:

ubuntu_installed

Ora sei pronto per usare il tuo contenitore Ubuntu appena configurato.

Utilizzo di più distribuzioni con contenitori Linux

Avviare il container

Avvia il tuo container usando il comando lxc-start:

[sourcecode]lxc-inizio -n ubu1 -d[/sourcecode]

Qui, il parametro -n specifica il nome del contenitore che si desidera avviare (ubu1 in questo caso) e il parametro -d lo fa girare in background.

Puoi verificare che il contenitore sia stato avviato utilizzando il comando lxc-ls:

[sourcecode]lxc-ls -f[/sourcecode]

contenitori da corsa

Il parametro -f si abilita fantasia segnalazione. Qui puoi vedere che ce l’ho due contenitori – una Debian (fermata) e una Ubuntu (in esecuzione).

Accesso e utilizzo del tuo container

Puoi accedere alla console del contenitore usando il comando lxc-attach:

[sourcecode]lxc-attach -n ubu1[/sourcecode]

Ora avrai un guscio di radice sul tuo contenitore Si consiglia di impostare una password per l’utente root e creare un normale account utente:

[sourcecode]passwd
adduser beebom[/sourcecode]

Ovviamente sostituisci beebom con il nome utente che desideri. È quindi possibile installare il software e configurare il container come si farebbe su un sistema normale. Ad esempio, in un contenitore Debian o Ubuntu:

[sourcecode]apt install wget openssh-server htop tmux nano iptables[/sourcecode]

Fermare il tuo contenitore

Dopo aver finito di giocare con il contenitore, usa il comando exit per tornare al sistema host. Ora usa il comando lxc-stop per fermare il tuo contenitore:

[sourcecode]lxc-stop -n ubu1[/sourcecode]

Ciò farà spegnere il contenitore in modo pulito e non consumerà più risorse sul tuo sistema, ad eccezione dello spazio su disco.

Clonazione e istantanee

Cloni

Dopo aver installato i programmi in un contenitore e averlo configurato a tuo piacimento, potresti volerlo crearne una o più copie per un facile approvvigionamento. Puoi farlo creando un cloneche è una replica esatta di un contenitore.

Ad esempio, per creare un clone del contenitore ubu1 (chiamiamolo ubu2), prima fermare il contenitore usando lxc-stop, quindi usa il comando lxc-copy:

[sourcecode]lxc-stop -n ubu1

lxc-copia -n ubu1 -N ubu2[/sourcecode]

Ecco, il -n opzione specifica il contenitore di originee il L’opzione -N specifica il nome del clone. Per verificare che il contenitore è stato clonato, usa il comando lxc-ls:

clone

Istantanee

Supponiamo che tu stia per apportare alcune modifiche potenzialmente pericolose o difficili da ripristinare a seguito di modifiche a un contenitore, come la riconfigurazione di un server Web. Per ridurre al minimo il danno, puoi creare un’istantanea del contenitore prima di apportare tale modifica. Nel caso in cui qualcosa vada storto durante la configurazione, puoi semplicemente fermare il contenitore e ripristinarlo allo stato di lavoro precedente ripristinando uno snapshot.

Per creare l’istantanea, prima fermare il contenitore:

[sourcecode]lxc-stop -n ubu1[/sourcecode]

Quindi, creare un’istantanea usando il comando lxc-snapshot:

[sourcecode]lxc-istantanea -n ubu1[/sourcecode]

Questo crea uno snapshot chiamato snap0. Verranno richiamate tutte le istantanee successive create utilizzando questo comando scatto1, scatto2eccetera.

Dopo questo, puoi inizio il contenitore e apportare le modifiche desiderate. Se in qualsiasi momento desideri tornare a uno snapshot che hai creato, fermare il contenitore e usa il comando lxc-snapshot con il parametro -r per ripristinare uno snapshot:

[sourcecode]lxc-snapshot -r snap0 -n ubu1[/sourcecode]

Questo ripristinerà lo snapshot snap0 nel contenitore ubu1.

Avvia automaticamente i contenitori all’avvio

È possibile creare un contenitore, ad esempio un contenitore di server Web, che si avvii automaticamente all’avvio del sistema. Per fare ciò, vai su il file di configurazione del contenitoreche si trova in $HOME/.local/share/lxc//config e aggiungi le seguenti righe:

[sourcecode]lxc.start.auto = 1
lxc.start.delay = 5[/sourcecode]

La prima riga specifica che il contenitore deve essere avviato all’avvio. Il secondo dice al sistema di farlo aspetta 5 secondi prima di iniziare il contenitore successivo, se presente.

Risoluzione dei problemi

Se hai problemi ad avviare i container, la prima cosa da provare è eseguire il comando lxc-start in Primo piano modalità. Per esempio:

[sourcecode]lxc-inizio -n ubu1 -F[/sourcecode]

Questo sarà mostra gli errori sulla console correntee, che è molto utile per identificare la natura del problema.

Problemi con l’esecuzione simultanea di più contenitori

Se si tenta di eseguire più contenitori contemporaneamente, potresti vedere errori come “Quota raggiunta” o “Impossibile creare la rete configurata”. Questo perché stai eseguendo più interfacce di rete di quelle assegnate. Puoi aumentare il numero di bridge di rete che un utente può eseguire modificando il file /etc/lxc/lxc-usernet come radice. Potrebbe assomigliare a questo:

[sourcecode]# NOME UTENTE TIPO PONTE COUNT
beebom veth lxcbr0 5[/sourcecode]

Puoi cambia il numero alla fine (5 in questo esempio), a un numero maggiore come 10. Ciò ti consentirà di eseguire fino a 10 contenitori contemporaneamente.

Altri usi dei container Linux

I container Linux hanno vari usi. È possibile utilizzarli come test box leggeri, ad esempio, per testare varie configurazioni di un server Web o database prima di eseguirne il commit su un server di produzione. Un altro caso d’uso è testare il modo in cui un’applicazione viene eseguita su versioni diverse di varie distribuzioni.

Puoi anche usarli per isolare le applicazioni di cui non ti fidi: qualsiasi danno causato da un’applicazione di questo tipo sarà limitato al proprio contenitore e non influirà sul sistema host. Tieni presente che, sebbene sia possibile eseguire applicazioni GUI in un contenitore, richiede una notevole quantità di tempo e fatica e pertanto non è consigliato. Se desideri eseguire app della GUI in una sandbox, fai riferimento al nostro articolo su come creare app sandbox in Linux.

GUARDA ANCHE: 7 migliori alternative a VirtualBox che puoi utilizzare

Esegui più distribuzioni contemporaneamente con contenitori Linux

Così termina il nostro How-To sull’esecuzione di più distribuzioni Linux su un singolo computer, senza il sovraccarico di una macchina virtuale di dimensioni standard. L’utilità di questa tecnologia è limitata solo dalla tua creatività, quindi sentiti libero di sperimentare e scoprire nuovi casi d’uso. Se hai problemi a configurare i container, sentiti libero di farci una domanda nella sezione commenti.

Leave a Comment

Your email address will not be published.