I contenitori Linux (LXC) sono una tecnologia di virtualizzazione leggera e hanno vari usi. Fa parte del kernel Linux e può consentire di emulare una o più distribuzioni 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 sono le Jail di FreeBSD.
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, i contenitori Linux dovrebbero fare il lavoro per te bene.
Installazione e configurazione di contenitori Linux
Stiamo configurando LXC su Linux Mint 18 a 64 bit. Le istruzioni di installazione fornite qui funzioneranno anche senza modifiche su Ubuntu 16.04 e versioni successive. Se stai usando un'altra distribuzione, fai riferimento alla documentazione ufficiale della tua distribuzione se qualcosa non funziona come previsto. Si presuppone inoltre 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 prerequisiti software che utilizzano:
[codice sorgente] sudo apt install 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; amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.type = veth" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.link = lxcbr0" & amp; amp; amp; gt;& amp; 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 tutti gli utenti $ (id -u) $ (id -g)
cgm movepid tutti gli utenti $$ [/ sourcecode]
Configurazione del contenitore
Ora che hai LXC Container installato insieme ad altri prerequisiti software, ecco i passaggi per configurare il Container:
1. In questo esempio, imposteremo un contenitore Ubuntu, di nome ubu1
. Per farlo, esegui il seguente comando:
[codice sorgente] lxc-create -template download -name ubu1 [/ sourcecode]
2. Qui, il file -modello
parametro dice a lxc Scarica un'immagine preconfigurata da Internet, mentre il -nome
parametro specifica il nome del contenitore - ubu1
in questo caso. Puoi usare il nome che preferisci.
3. Verrà ora visualizzato un elenco di file 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 del precedente:
[codice sorgente] lxc-create -t download -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]
6. LXC ora scaricherà e installerà un'immagine xenial minima di Ubuntu sul tuo 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 utilizzare il contenitore Ubuntu appena configurato.
Utilizzo di più distribuzioni con contenitori Linux
Avvio del container
Avvia il tuo contenitore usando il lxc-start
comando:
[codice sorgente] lxc-start -n ubu1 -d [/ sourcecode]
Qui, il file -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 file lxc-ls
comando:
[codice sorgente] lxc-ls -f [/ codice sorgente]
Il -f
abilitazione dei parametri fantasia rendicontazione. Qui puoi vedere che ce l'ho due contenitori - una Debian (interrotta) e una 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 [/ sourcecode]
Ora avrai un file guscio di radice sul tuo contenitore. Si consiglia di impostare una password per l'utente root e creare un account utente normale:
[codice 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 normale sistema. Ad esempio, in un contenitore Debian o Ubuntu:
[codice sorgente] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]
Fermare il tuo contenitore
Dopo aver finito di giocare con il contenitore, usa il Uscita
comando per tornare al sistema host. Ora usa il file lxc-stop
comando per fermare il tuo container:
[codice sorgente] lxc-stop -n ubu1 [/ codice sorgente]
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
Dopo aver installato i programmi in un contenitore e averlo configurato a proprio piacimento, potresti volerlo fare crearne una o più copie per un facile provisioning. Puoi farlo creando un file 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 usa il lxc-copy
comando:
[codice sorgente] lxc-stop -n ubu1
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
Qui, il file -n opzione specifica il contenitore di origine, e il -L'opzione N specifica il nome del clone. Per verificare che il contenitore è stato clonato, usa il file lxc-ls
comando:
Istantanee
Supponiamo che tu stia per rendere alcune modifiche potenzialmente pericolose o difficili da ripristinare da 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, puoi semplicemente arrestare il contenitore e ripristinarlo al suo 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 [/ sourcecode]
Questo crea un'istantanea chiamata snap0
. Verranno richiamati tutti gli snapshot successivi creati utilizzando questo comando snap1, snap2, eccetera.
Dopo questo, puoi inizio il contenitore e apporta le modifiche desiderate. Se in qualsiasi momento vuoi tornare a un'istantanea che hai creato, fermare il contenitore e utilizzare il lxc-snapshot
comando con il -r
parametro a ripristinare un'istantanea:
[codice sorgente] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
Ciò ripristinerà l'istantanea snap0
al ubu1
contenitore.
Contenitori con avvio automatico 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 al file di configurazione del contenitore, situato in $ HOME / .local / share / lxc /
, 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 farlo attendere 5 secondi prima di avviare il contenitore successivo, se presente.
Risoluzione dei problemi
Se hai problemi ad avviare i container, la prima cosa da provare è eseguire il file lxc-start
comando in Primo piano modalità. Per esempio:
[codice sorgente] lxc-start -n ubu1 -F [/ sourcecode]
Questo sarà mostrarti gli errori sulla console attualee, che è molto utile per identificare la natura del problema.
Problemi con l'esecuzione simultanea di più contenitori
Se provi a eseguire più contenitori contemporaneamente, potresti vedere degli errori come "Quota raggiunta" o "Impossibile creare la rete configurata". Questo perché stai utilizzando più interfacce di rete di quelle che ti sono state assegnate. Puoi aumentare il numero di bridge di rete che un utente può eseguire modificando il file / etc / lxc / lxc-usernet
file come radice. Potrebbe assomigliare a questo:
[codice sorgente] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]
Puoi cambiare il numero alla fine (5 in questo esempio), a un numero maggiore come 10. Ciò consentirà di eseguire fino a 10 contenitori contemporaneamente.
Altri usi dei contenitori Linux
I contenitori Linux hanno vari usi. È possibile utilizzarli come test box leggeri, ad esempio, per testare varie configurazioni di un server Web o di database prima di inviarli a 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 influenzerà il sistema host. Si noti che sebbene sia possibile eseguire applicazioni GUI in un contenitore, richiede una notevole quantità di tempo e impegno e pertanto non è consigliato. Se desideri eseguire app GUI in una sandbox, fai riferimento al nostro articolo su come eseguire le app in sandbox in Linux.
VEDERE ANCHE: 7 migliori alternative a VirtualBox che è possibile utilizzare
Esegui più distribuzioni contemporaneamente con i 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 contenitori, non esitare a farci una domanda nella sezione commenti.