Raccomandato, 2021

Scelta Del Redattore

Come eseguire più distribuzioni simultaneamente utilizzando i contenitori Linux

Linux Containers (LXC) sono una tecnologia di virtualizzazione leggera e hanno vari usi. Fa parte del kernel Linux e ti consente di emulare uno o più distro Linux su un singolo host Linux. Consideralo 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 un magro 2 GB di RAM. Tuttavia, sono in esecuzione tre contenitori Linux, ognuno con un'istanza del server Web Apache in esecuzione, senza un grande successo di prestazioni. Questo sarebbe impensabile con una macchina virtuale tradizionale come VirtualBox. Quindi, se hai intenzione di eseguire più distro sul tuo sistema Linux, Linux Containers dovrebbe fare il lavoro per te.

Installazione e configurazione dei contenitori Linux

Stiamo configurando LXC su Linux Mint 18 64-bit. Le istruzioni di installazione fornite qui funzioneranno anche non modificate 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 presume 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ù distro:

1. Installare LXC e altri software prerequisiti utilizzando:

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

2. Ora devi configurare il tuo profilo . Inserisci i seguenti comandi per configurarlo:

[codice sorgente] mkdir -p ~ / .config / lxc
echo "lxc.id_map = u 0 100000 65536" & amp; amp; gt; ~ / .Config / LXC / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; gt; & amp; amp; gt; ~ / .Config / LXC / default.conf
echo "lxc.network.type = veth" & amp; gt; & amp; amp; gt; ~ / .Config / LXC / default.conf
echo "lxc.network.link = lxcbr0" & amp; gt; & amp; amp; gt; ~ / .Config / LXC / default.conf
echo "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]

3. Quindi, è necessario impostare le autorizzazioni utente come segue:

[codice sorgente] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ USER

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

Impostazione del contenitore

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

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

[codice sorgente] lxc-create -template download -name ubu1 [/ sourcecode]

2. Qui, il parametro –template dice a lxc di scaricare un'immagine preconfigurata da internet, mentre il parametro –name specifica il nome del contenitore - ubu1 in questo caso. Puoi usare qualunque nome ti piaccia.

3. Verrà ora visualizzato un elenco di immagini di distribuzione supportate :

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

5. Se si desidera installare l'immagine in modo non interattivo, il comando seguente ottiene lo stesso risultato di cui sopra:

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

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

Ora sei pronto per usare il tuo nuovo contenitore Ubuntu.

Utilizzo di più distribuzioni con contenitori Linux

Avvio del contenitore

Avvia il tuo contenitore usando il comando lxc-start :

[codice sorgente] lxc-start -n ubu1 -d [/ codice sorgente]

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

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

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

Il parametro -f abilita il reporting di fantasia . Qui, puoi vedere che ho due contenitori : uno Debian (fermo) e uno Ubuntu (in esecuzione).

Accesso e utilizzo del contenitore

È possibile accedere alla console del contenitore utilizzando il comando lxc-attach :

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

Ora avrai una shell di root sul tuo contenitore. Si consiglia di impostare una password per l'utente root e creare un account utente regolare :

[Sorgente] passwd
adduser beebom [/ sourcecode]

Ovviamente, sostituisci beebom con il nome utente che desideri. È quindi possibile installare il software e configurare il contenitore 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, utilizzare il comando exit per tornare al sistema host . Ora usa il comando lxc-stop per fermare il tuo contenitore :

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

In questo modo il contenitore si spegnerà in modo pulito e non consumerà più risorse sul sistema, ad eccezione dello spazio su disco.

Clonazione e istantanee

cloni

Una volta installati i programmi in un contenitore e configurati a proprio piacimento, è possibile crearne una o più copie per un facile provisioning. Puoi farlo creando un clone, che è una replica esatta di un contenitore.

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

[codice sorgente] lxc-stop -n ubu

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

Qui, l' opzione -n ​​specifica il contenitore di origine e l' opzione -N specifica il nome del clone . Per verificare che il contenitore è stato clonato, utilizzare il comando lxc-ls :

istantanee

Supponiamo che stai per rendere alcuni potenzialmente pericolosi o difficili da ripristinare dalle 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, è sufficiente arrestare il contenitore e ripristinarlo allo stato operativo precedente ripristinando uno snapshot.

Per creare l'istantanea, prima interrompi il contenitore :

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

Quindi, creare uno snapshot usando il comando lxc-snapshot :

[codice sorgente] lxc-snapshot -n ubu1 [/ sourcecode]

Questo crea un'istantanea chiamata snap0 . Qualsiasi istantanea successiva creata con questo comando verrà chiamata snap1, snap2, ecc.

Dopo questo, puoi avviare il contenitore e apportare le modifiche desiderate. Se in qualsiasi momento si desidera tornare a un'istantanea creata, interrompere il contenitore e utilizzare il comando lxc-snapshot con il parametro -r per ripristinare un'istantanea :

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

Ciò ripristinerà lo snapshot snapshot nel contenitore ubu1 .

Avvia automaticamente i contenitori all'avvio

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

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

La prima riga specifica che il contenitore deve essere avviato all'avvio. Il secondo indica al sistema di attendere 5 secondi prima di avviare il contenitore successivo, se presente.

Risoluzione dei problemi

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

[codice sorgente] lxc-start -n ubu1 -F [/ codice sorgente]

Questo ti mostrerà gli errori sulla console corrente, che è molto utile per identificare la natura del problema.

Problemi con l'esecuzione di più contenitori contemporaneamente

Se si tenta di eseguire più contenitori contemporaneamente, è possibile che vengano visualizzati errori come "Quota raggiunta" o "Impossibile creare la rete configurata". Questo perché esegui più interfacce di rete di quelle a te assegnate. È possibile aumentare il numero di bridge di rete che un utente può eseguire modificando il /etc/lxc/lxc-usernet come root . Potrebbe sembrare qualcosa del genere:

[codice sorgente] # NUMERO DEL PONTE DEL TIPO DI NOME UTENTE
beebom veth lxcbr0 5 [/ sourcecode]

È possibile modificare il numero alla fine (5 in questo esempio), in un numero più grande come 10. Ciò consentirà di eseguire fino a 10 contenitori contemporaneamente.

Altri usi dei contenitori Linux

I contenitori di Linux hanno vari usi. È possibile utilizzarli come test box leggeri, ad esempio, per testare varie configurazioni di un server Web o database prima di trasferirli su un server di produzione. Un altro caso d'uso è quello di verificare come un'applicazione viene eseguita su versioni diverse di varie distribuzioni.

Puoi anche usarli per isolare le applicazioni di cui non ti fidi: qualsiasi danno che tale applicazione si limiterà al proprio contenitore e non influirà sul sistema host. Si noti che mentre è possibile eseguire applicazioni GUI in un contenitore, è necessario molto tempo e impegno, e quindi non è raccomandato. Se desideri eseguire applicazioni GUI in una sandbox, consulta il nostro articolo su come installare le app sandbox in Linux.

Eseguire più distribuzioni simultaneamente con i contenitori Linux

Così termina il nostro How-To sull'esecuzione di più distribuzioni Linux su un singolo computer, senza l'overhead di una macchina virtuale di dimensioni reali. L'utilità di questa tecnologia è limitata solo dalla tua creatività, quindi sentiti libero di sperimentare e scoprire nuovi casi d'uso. Se hai problemi nella configurazione dei contenitori, non esitare a farci una domanda nella sezione commenti.

Top