Come

Come eseguire più distribuzioni contemporaneamente utilizzando i contenitori Linux

Come eseguire più distribuzioni contemporaneamente utilizzando i contenitori Linux

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 // 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 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.

Un cruciverba online interattivo su curiosità Tech-Biz, risolvilo
Abbiamo tutti quell'ego in noi per qualcosa in cui siamo bravi, giusto? Se pensi di essere un Hardcore GEEK dentro, sei bravo con la tua conoscenza t...
I social media hanno reagito per Steve Jobs, ma Dennis Ritchie è morto da solo
Gli omaggi a Dennis Ritchie non corrisponderanno al fiume di lodi che si è riversato sul web dopo la morte di Steve Jobs. Ma dovrebbero.cablata Mentr...
Viaggio da iPhone a iPhone 4s
Questo articolo è un omaggio a un leggendario innovatore iconico che ha cambiato la nostra vita per sempre con alcuni dei gadget impeccabili e futuris...