Come eseguire più distribuzioni simultaneamente usando i contenitori Linux

  • Oliver Matthews
  • 0
  • 4819
  • 1194

I Linux Containers (LXC) sono una tecnologia di virtualizzazione leggera e hanno vari usi. Fa parte del kernel Linux e può consentire di emulare una o più distro Linux su un singolo host Linux. Pensalo 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 è Jail FreeBSD.

Ad esempio, la macchina su cui sto scrivendo è un laptop con Linux Mint 18, alimentato da un processore Intel Atom, e ha uno scarso 2 GB di RAM. Eppure, sto eseguendo tre container Linux, ciascuno con un'istanza del server web Apache in esecuzione, senza un grande successo di prestazioni. Ciò sarebbe impensabile con una macchina virtuale tradizionale come VirtualBox. Quindi, se hai voluto eseguire più distro sul tuo sistema Linux, Linux Containers dovrebbe fare il lavoro per te bene.

Installazione e configurazione di contenitori Linux

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

Prerequisiti

Ecco alcune cose che dovresti impostare per iniziare a usare più distro:

1. Installa LXC e altri software prerequisiti utilizzando:

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

2. Ora è necessario configura il tuo profilo. Immettere i seguenti comandi per configurarlo:

[codice sorgente] mkdir -p ~ / .config / lxc
echo "lxc.id_map = u 0 100000 65536" & amp; gt; ~ / .Config / LXC / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; gt;& amp; gt; ~ / .Config / LXC / default.conf
echo "lxc.network.type = veth" & amp; gt;& amp; gt; ~ / .Config / LXC / default.conf
echo "lxc.network.link = lxcbr0" & amp; gt;& 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 $ UTENTE

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

Installazione del contenitore

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

1. In questo esempio, installeremo un contenitore Ubuntu, di nome ubu1. Per farlo, esegui il seguente comando:

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

2. Qui, il -modello Il parametro dice a lxc di Scarica un'immagine preconfigurata da Internet, mentre il -nome Il parametro specifica il nome del contenitore - ubu1 in questo caso. Puoi usare il nome che preferisci.

3. Ora vedrai un elenco di immagini distro supportate:

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

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

[codice sorgente] 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 sistema host. Il download e l'installazione potrebbero richiedere del 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 contenitore Ubuntu appena configurato.

Utilizzo di più distribuzioni con i contenitori Linux

Avvio del contenitore

Inizia il tuo contenitore usando il LXC-start comando:

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

Qui, il -n parametro specifica il nome del contenitore che desideri iniziare (ubu1 in questo caso) e il -d parametro lo fa funzionare in background.

È possibile verificare che il contenitore sia stato avviato utilizzando il LXC-LS comando:

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

Il -f il parametro abilita fantasia segnalazione. Qui, puoi vedere che ho due contenitori - un Debian (arrestato) e un Ubuntu (in esecuzione).

Accesso e utilizzo del contenitore

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

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

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

[Sorgente] passwd
adduser beebom [/ sourcecode]

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

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

Arresto del contenitore

Dopo aver finito di giocare con il contenitore, utilizzare entrambi Uscita comando per tornare al sistema host. Ora usa il LXC-stop comando per fermare il tuo contenitore:

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

Questo farà chiudere il contenitore in modo pulito e non consumerà più risorse sul 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 provisioning. Puoi farlo creando un clone, che è una replica esatta di un contenitore.

Ad esempio, per creare un clone di ubu1 container (chiamiamolo ubu2), prima fermare il contenitore utilizzando LXC-stop, quindi utilizzare il LXC-copy comando:

[codice sorgente] lxc-stop -n ubu1

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

Qui, il -L'opzione n specifica il contenitore di origine, e il -L'opzione N specifica il nome del clone. Per verificare che il contenitore è stato clonato, utilizzare il LXC-LS comando:

istantanee

Supponiamo che stai per rendere alcuni potenzialmente pericolosi o difficili da recuperare dalle modifiche a un contenitore, come la riconfigurazione di un server web. Per ridurre al minimo il danno, è possibile creare un'istantanea del contenitore prima di apportare tale modifica. Nel caso in cui qualcosa vada storto durante la configurazione, è possibile semplicemente arrestare il contenitore e ripristinarlo allo stato di lavoro precedente ripristinando un'istantanea.

Per creare l'istantanea, prima fermare il contenitore:

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

Poi, creare un'istantanea usando il LXC-snapshot comando:

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

Questo crea un'istantanea chiamata snap0. Verranno chiamate tutte le istantanee successive create utilizzando questo comando snap1, snap2, eccetera.

Dopo questo, puoi inizio il contenitore e apporta le modifiche desiderate. Se in qualsiasi momento si desidera tornare a un'istantanea creata, fermare il contenitore e utilizzare il LXC-snapshot comando con il -r parametro a ripristinare un'istantanea:

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

Ciò ripristinerà l'istantanea snap0 al ubu1 contenitore.

Avvio automatico dei contenitori all'avvio

È possibile creare un contenitore, ad esempio un contenitore di server Web, avviarsi automaticamente all'avvio del sistema. Per fare questo, vai su file di configurazione del contenitore, situato in $ HOME / .local / share / LXC // config, e aggiungi le seguenti righe:

[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 dice al sistema di attendere 5 secondi prima di avviare il contenitore successivo, se presente.

Risoluzione dei problemi

In caso di problemi durante l'avvio dei contenitori, la prima cosa da provare è eseguire il LXC-start entrare Primo piano modalità. Per esempio:

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

Questo sarà mostrarti 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 a te. Puoi aumentare il numero di bridge di rete che un utente può eseguire modificando il / Etc / LXC / LXC-Usernet file come radice. Potrebbe assomigliare a questo:

[codice sorgente] # USERNAME TIPO PONTE DEL PONTE
beebom veth lxcbr0 5 [/ sourcecode]

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

Altri usi dei contenitori Linux

I container Linux hanno vari usi. È possibile utilizzarli come scatole di prova leggere, ad esempio, per testare varie configurazioni di un server Web o di database prima di eseguirne il commit in 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 tale applicazione sarà limitato al proprio contenitore e non influirà sul sistema host. Si noti che mentre è possibile eseguire applicazioni GUI in un contenitore, ci vuole un notevole dispendio di tempo e fatica e quindi non è raccomandato. Se desideri eseguire app GUI in un sandbox, fai riferimento al nostro articolo su come eseguire il sandboxing di app in Linux.

VEDERE ANCHE: 7 migliori alternative a VirtualBox che è possibile utilizzare

Esegui più distribuzioni contemporaneamente con i contenitori Linux

Termina così il nostro How-To sull'esecuzione di più distro 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 con la configurazione dei container, non esitare a farci una domanda nella sezione commenti.




Nessun utente ha ancora commentato questo articolo.

Guide per gadget, tecnologie che contano
Pubblichiamo la guida dettagliata per di attrezzature, creiamo elenchi interessanti dei migliori prodotti sul mercato, copriamo le notizie dal mondo della tecnologia