
Linux container (LXC), è un software di virtualizzazione a livello di sistema operativo leggero e open source che ci aiuta a eseguire più sistemi Linux isolati (container) su un singolo host Linux. LXC fornisce un ambiente Linux simile a un'installazione Linux standard ma senza la necessità di un kernel separato. LXC non sostituisce i software di virtualizzazione standard come VMware, VirtualBox e KVM, ma è abbastanza buono da fornire un ambiente isolato dotato di CPU, memoria, I/O a blocchi e rete propri.
LXC è rilasciato con licenza GNU LGPLv2.1+. Il progetto LXC è sponsorizzato da Canonical Ltd, che è dietro il sistema operativo Ubuntu.
In questa guida, ti mostrerò come installare LXC su Ubuntu 16.04 e creare e gestire LXC usando la riga di comando oltre che usando LXC Web Portal .
Questo tutorial dovrebbe funzionare anche su versioni precedenti di Ubuntu, come Ubuntu 14.04 / 14.10 / 15.04 / 15.10
Prerequisiti:
I container LXC utilizzano la rete bridge per avere accesso a/da una rete esterna, prima di avviare il container dobbiamo creare un bridge di rete su Ubuntu.
Segui i passaggi per configurare il bridging su Ubuntu; Sto creando un'interfaccia con bridge "br0 ” utilizzando la scheda ethernet “ens33 ”
file $ sudo nano /etc/network/interfaces# interfaces(5) utilizzato da ifup(8) e ifdown(8)auto loiface lo inet loopback##Bridge Name ### auto br0### Informazioni sul ponte iface br0 inet staticbridge_ports ens33bridge_stp offbridge_fd 9### Bridge IP ### indirizzo 192.168.12.15netmask 255.255.255.0network 192.168.12.0broadcast 192.168.12.255gateway 192.168.12.2dns-nameserver 8.8.8.8
Installa LXC su Ubuntu 16.04:
Ora è il momento di installare LXC. Installa LXC e altri pacchetti affinché i container funzionino correttamente.
$ sudo apt-get install lxc lxc-templates wget bridge-utils
Emetti il comando seguente per verificare che tutto sia a posto per eseguire i container.
$ sudo lxc-checkconfig Configurazione del kernel non trovata in /proc/config.gz; ricerca...Configurazione del kernel trovata in /boot/config-4.4.0-15-generic--- Spazi dei nomi ---Spazi dei nomi:enabledUtsSpazio dei nomi:enabledSpazio dei nomi Ipc:enabledSpazio dei nomi Pid:enabledSpazio dei nomi utente:enabledSpazio dei nomi di rete:enabledIstanze multiple /dev/pts :abilitato--- Gruppi di controllo ---Cgroup:abilitatoCgroup clone_children flag:abilitatoCgruppo dispositivo:abilitatoCgroup sched:abilitatoCaccount cpu gruppo:abilitatoCgroup memory controller:abilitatoCgroup cpuset:abilitato--- Misc ---Dispositivo coppia Veth:abilitatoMacvlan:abilitatoVlan:abilitatoBridges :enabledAdvanced netfilter:enabledCONFIG_NF_NAT_IPV4:enabledCONFIG_NF_NAT_IPV6:enabledCONFIG_IP_NF_TARGET_MASQUERADE:enabledCONFIG_IP6_NF_TARGET_MASQUERADE:enabledCONFIG_NETFILTER_XT_TARGET_CHECKSUM:enabledFUSE (per l'uso con lxcfs):attivato --- Checkpoint / ripristino --- checkpoint di ripristino:enabledCONFIG_FHANDLE:enabledCONFIG_EVENTFD:enabledCONFIG_EPOLL:enabledCONFIG_UNIX_DIAG:enabledCONFIG_INET_DIAG:enabledCONFIG_PACKET_DIAG:enabledCONFIG_NETLINK_DIAG:it Capacità del file abilitato:abilitatoNota:prima di avviare un nuovo kernel, puoi verificarne la configurazioneutilizzo:CONFIG=/path/to/config /usr/bin/lxc-checkconfig
Configurazione della rete LXC:
Disabilita il bridge predefinito "lxcbr0 ", è stato creato come parte dell'installazione di LXC.
$ sudo nano /etc/default/lxc-net
Imposta "USE_LXC_BRIDGE ” a “falso “.
USE_LXC_BRIDGE="false"
Configura LXC per utilizzare il bridge "br0 “, che abbiamo creato in precedenza. Se hai già configurato un altro bridge, puoi impostarlo nel file sottostante.
$ sudo nano /etc/lxc/default.conf
lxc.network.type =vethlxc.network.link =br0 # Sostituisci con il nome del bridge lxc.network.flags =uplxc.network.hwaddr =00:16:3e:xx:xx:xxRiavvia il server per abilitare il Bridge di rete
Creazione del primo container Linux:
LXC ti fornisce i modelli già pronti per una facile installazione dei container Linux. I modelli si trovano in genere in /usr/share/lxc/templates .
$ sudo ls /usr/share/lxc/templates/lxc-alpine lxc-archlinux lxc-centos lxc-debian lxc-fedora lxc-openmandriva lxc-oracle lxc-slackware lxc-sshd lxc-ubuntu-cloudlxc-altlinux lxc -busybox lxc-cirros lxc-download lxc-gentoo lxc-opensuse lxc-plamo lxc-sparclinux lxc-ubuntu
Creiamo il nostro primo container Ubuntu, immettiamo il seguente comando nel terminale
$ sudo lxc-create -n ubuntu_lxc -t ubuntu
Dove,
-n
-t
LXC inizierà a creare il contenitore "ubuntu_lxc ", otterresti un output simile a quello di seguito.
Risultato di esempio:
Verifica del download della cache in /var/cache/lxc/xenial/rootfs-amd64 ...Installazione dei pacchetti nel modello:ssh,vim,language-pack-enDownload di ubuntu xenial minimal ...I:Recupero di InReleaseI:Verifica della firma di rilascioI :Firma di rilascio valida (ID chiave 790BC7277767219C42C86F933B4FE6ACC0B21F32)I:Recupero dei pacchettiI:Convalida dei pacchettiI:Recupero dei pacchettiI:Convalida dei pacchettiI:Risoluzione delle dipendenze dei pacchetti richiesti...I:Risoluzione delle dipendenze dei pacchetti di base... . . . Scarica completeCopy /var/cache/lxc/xenial/rootfs-amd64 in /var/lib/lxc/ubuntu_lxc/rootfs ...Copia di rootfs in /var/lib/lxc/ubuntu_lxc/rootfs ...Generazione delle impostazioni locali (potrebbe richiedere un po')... it_IN.UTF-8... doneGeneration complete.Creating SSH2 RSA key; Questo potrebbe richiedere un po 'di tempo ... 2048 Sha256:2GY+KOAVDYEFBKZSJUEMTV5PXUMNVPILTXCAZRYSPJA ROOT@raj-virtual-machine (RSA) creando chiave SSH2 DSA; Questo potrebbe richiedere un po 'di tempo ... 1024 sha256:+pxvakgv7kuds2inf7akbyhme58oiopjftnfwj1fpk0 root@raj-virtual-machine (DSA) creando chiave SSH2 ECDSA; Questo potrebbe richiedere un po 'di tempo ... 256 Sha256:VH1U7WGEMPMEZTWVIDZT34ftSQ+OqukBPJZAZJP1KHC root@raj-virtual-machine (ECDSA) Creazione di SSH2 ED25519 Key; Questo può richiedere un po 'di tempo ... 256 sha256:qzvwvynmjusdzhq5ij/r8uswbkrshug2vwcevmjgfzk root@raj-virtual-machine (eD25519) invoke-rc.d:politiche-rc.d Execution di start.Current Deafault Time Fomone:' UTC ' L'ora locale è ora: Thu Apr 7 17:53:19 UTC 2016. L'ora universale è ora: Thu Apr 7 17:53:19 UTC 2016.### L'utente predefinito è "ubuntu" con password "ubuntu" !# Usa il comando 'sudo' per eseguire attività come root nel contenitore.##
Prendi nota dei dettagli di accesso, avresti bisogno di queste informazioni per accedere ai contenitori.
Se vuoi creare un contenitore basato su Ubuntu 14.04, usa il seguente comando.
$ sudo lxc-create -t ubuntu -n trusty_lxc -- -r trusty -a amd64
-r
-a
Avvio di container Linux:
Dopo aver creato i contenitori, avvialo utilizzando il comando seguente, -d per eseguire i contenitori in background.
$ sudo lxc-start -n ubuntu_lxc -d
Ora prendi una console del container usando il seguente comando.
$ sudo lxc-console -n ubuntu_lxc
Inserisci il nome utente (ubuntu) e la password (ubuntu) per accedere. Puoi trovare la credenziale predefinita alla fine dell'output durante la creazione di un container.
Risultato di esempio:
Connesso a tty 1Digitareper uscire dalla console, per accedere a Ctrl+a stessoUbuntu Xenial Xerus (ramo di sviluppo) ubuntu_lxc pts/0ubuntu_lxc login:ubuntu Password: Benvenuto in Ubuntu Xenial Xerus (ramo di sviluppo) (GNU/Linux 4.4.0-15-generic x86_64) * Documentazione: https://help.ubuntu.com/I programmi inclusi nel sistema Ubuntu sono software gratuiti; i termini esatti di distribuzione per ogni programma sono descritti nei singoli file in /usr/share/doc/*/copyright. Ubuntu viene fornito ASSOLUTAMENTE NESSUNA GARANZIA, nella misura consentita dalla legge applicabile. Per eseguire un comando come amministratore (utente "root"), utilizzare "sudo ".Vedi "man sudo_root" per i dettagli.ubuntu@ubuntu_lxc:~$
Puoi eseguire tutto il tuo lavoro in questo contenitore come su un server Linux.
Per uscire dalla console del contenitore, premi "Ctrl+a" seguito da "q" . Ora verrai riportato al terminale del computer host.
Se vuoi connetterti di nuovo alla console del container (il container è ancora in esecuzione), esegui il comando seguente.
$ sudo lxc-console -n ubuntu_lxc
Lavorare con i container Linux:
Per elencare i contenitori disponibili sulla macchina host, utilizzare il comando seguente.
$ sudo lxc-lsubuntu_lxc
Utilizzare il comando seguente per elencare i contenitori attualmente in esecuzione sul computer host.
$ sudo lxc-ls --activeubuntu_lxc
Potresti vedere lo stesso output per entrambi i comandi poiché ho un solo contenitore attualmente in esecuzione.
È possibile utilizzare il comando seguente per elencare i contenitori con informazioni dettagliate.
$ sudo lxc-ls -fNAME STATE AUTOSTART GROUPS IPV4 IPV6ubuntu_lxc RUNNING 0 - 192.168.12.18 -
Per ottenere i dettagli del contenitore in esecuzione, immetti il seguente comando.
$ sudo lxc-info -n ubuntu_lxcName: ubuntu_lxcState: RUNNINGPID: 2933IP: 192.168.12.18 Utilizzo CPU: 0.90 secondi Utilizzo BlkIO: 20.96 MiB Utilizzo memoria: 31.67 Utilizzo MiBKMem: 0 bytesLink: vethFLQOYF Byte TX: 3.21 KiB Byte RX: 6.41 KiB 9.2 Ki pre.Puoi utilizzare l'indirizzo IP per connetterti ai container.
Puoi interrompere l'esecuzione dei contenitori utilizzando il comando "lxc-stop", utilizzare il comando seguente per interrompere "ubuntu_lxc".
$ sudo lxc-stop -n ubuntu_lxcContenitori di clonazione:
LXC offre una funzionalità di clonazione di un contenitore dal contenitore esistente, esegui il comando seguente per clonare un contenitore "ubuntu_lxc" esistente in un nuovo contenitore "ubuntu_lxc_clone".
Nota:devi fermare un container prima di avviare il clone.
$ sudo lxc-copy -n ubuntu_lxc -N ubuntu_lxc_cloneVerifica se un container è stato creato correttamente.
$ sudo lxc-lsubuntu_lxc ubuntu_lxc_clonePuoi avviare il contenitore clonato e iniziare a lavorarci.
$ sudo lxc-start -n ubuntu_lxc_clone$ sudo lxc-console -n ubuntu_lxc_cloneConnesso a tty 1Digitareper uscire dalla console, per accedere a Ctrl+a stessoUbuntu Xenial Xerus (ramo di sviluppo) ubuntu_lxc_clone pts/0ubuntu_lxc_clone login:ubuntuPassword:Ultimo accesso:sabato 9 aprile 16:15:22 UTC 2016 da 192.168.12.1 su pts/4Benvenuto in Ubuntu Xenial Xerus (ramo di sviluppo) (GNU/Linux 4.4.0-15-generic x86_64) * Documentazione: https:/ /help.ubuntu.com/Per eseguire un comando come amministratore (utente "root"), usa "sudo ".Vedi "man sudo_root" per i dettagli.ubuntu@ubuntu_lxc_clone:~$ Spegni il container dalla console LXC.
ubuntu@ubuntu_lxc_clone:~$ sudo poweroffScattare un'istantanea:
LXC offre anche un'altra funzione chiamata snapshot, segui i passaggi seguenti per eseguire lo snapshot.
Nota:prima di acquisire uno snapshot, assicurati che il contenitore non sia in esecuzione. Arresta un container in esecuzione utilizzando il comando seguente.
$ sudo lxc-stop -n ubuntu_lxc_clonePer una demo, prendiamo un'istantanea di ubuntu_lxc_clone.
$ sudo lxc-snapshot -n ubuntu_lxc_cloneEsempio di output:
lxc-snapshot:lxccontainer.c:do_lxcapi_snapshot:3371 Istantanea del contenitore supportato da directory richiesta.lxc-snapshot:lxccontainer.c:do_lxcapi_snapshot:3372 Creazione di una copia-clone. Se vuoi snapshot, quindilxc-snapshot:lxccontainer.c:do_lxcapi_snapshot:3373 crea prima un clone aufs o overlayfs, snapshot thatlxc-snapshot:lxccontainer.c:do_lxcapi_snapshot:3374 e mantieni il contenitore originale intatto.Per sapere dove viene salvata l'istantanea, esegui il comando seguente.
$ sudo lxc-snapshot -L -n ubuntu_lxc_clonesnap0 (/var/lib/lxc/ubuntu_lxc_clone/snaps) 2016:04:09 22:35:16In Ubuntu, gli snapshot LXC sono archiviati in "/var/lib/lxc/
/snaps ”Ripristino dell'istantanea:
Per ripristinare un container dall'istantanea che abbiamo preso in precedenza, usa il comando seguente.
$ sudo lxc-snapshot -r snap0 -n ubuntu_lxc_cloneDistruggere i contenitori:
Per rimuovere un contenitore, usa il seguente comando.
Nota:devi rimuovere le istantanee prima di distruggere i contenitori. ($ sudo lxc-snapshot -d snap0 -n ubuntu_lxc_clone)
$ sudo lxc-destroy -n ubuntu_lxc_cloneEseguire un contenitore CentOS su Ubuntu 16.04:
Installa il pacchetto "yum" per i contenitori basati su Redhat.
$ sudo apt-get install yumCrea un contenitore CentOS 7 usando il comando seguente.
$ sudo lxc-create -n centos_lxc -t centos -- -R 7 -a x86_64ID CPE host da /etc/os-release:Controllo del download della cache in /var/cache/lxc/centos/x86_64/7/rootfs ... Download Centros Minimal ... Base | 3,6 kb 00:00base/primario_db | 5.3 MB 12:26updates | 3.4 kb 00:00updates/primary_db | 3.9 MB 02:17Configurazione del processo di installazioneRisoluzione delle dipendenze--> Esecuzione del controllo della transazione---> Il pacchetto chkconfig.x86_64 0:1.3.61-5.el7 verrà installato Completato!Correzione della posizione di rpmdb ...Download completo.Copia /var/ cache/lxc/centos/x86_64/7/rootfs in /var/lib/lxc/centos_lxc/rootfs ...Copiando rootfs in /var/lib/lxc/centos_lxc/rootfs ...sed:impossibile leggere /var/ lib/lxc/centos_lxc/rootfs/etc/init/tty.conf:nessun file o directory di questo tipo Memorizzazione della password di root in '/var/lib/lxc/centos_lxc/tmp_root_pass'Password in scadenza per l'utente root.passwd:Operazione riuscita:impossibile leggere /var/lib/lxc/centos_lxc/rootfs/etc/rc.sysinit:nessun file o directory di questo tipo:impossibile leggere /var/lib/lxc/centos_lxc/rootfs/etc/rc.d/rc.sysinit:no tale file o directoryContainer rootfs e config sono stati creati.Modifica il file di configurazione per verificare/abilitare la configurazione della rete.La password di root temporanea è archiviata in: '/var/lib/lxc/centos_lxc/tmp_root_pass' La password di root è impostata come scaduta e richiederà che venga modificata al primo accesso, cosa che dovresti fare il prima possibile. Se perdi la password di root o desideri cambiarla senza avviare il container, puoi cambiarla dall'host eseguendo il seguente comando (che ripristinerà anche il flag scaduto): chroot /var/lib/lxc/centos_lxc/rootfs passwdPuoi ottenere le credenziali predefinite alla fine dell'output.
Avvia e prendi una console del contenitore Ubuntu con il seguente comando. Devi cambiare la password di root al primo accesso.
$ sudo lxc-start -n centos_lxc -d$ sudo lxc-console -n centos_lxcConnesso a tty 1Digitareper uscire dalla console, per entrare Ctrl+a stessoCentOS Linux 7 (Core)Kernel 4.4.0-15-generico su un accesso x86_64centos_lxc:root Password: Ti viene richiesto di cambiare immediatamente la tua password (applicazione root) Modifica password per root. Password UNIX (attuale): Nuova password: Ridigita la nuova password: [root@centos_lxc ~]# È tutto! grazie per aver letto. Sii social, condividi questo con i tuoi amici.