GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare e configurare i contenitori Linux LXC su CentOS / RHEL / Ubuntu

LXC sta per Linux Containers.

I container Linux sono metodi di "virtualizzazione" leggeri che eseguono più unità virtuali contemporaneamente su un singolo host di controllo su un singolo kernel Linux.

Il kernel Linux contiene cgroups per l'isolamento delle risorse (CPU, memoria, block I/O, rete, ecc.), che non richiede l'avvio di macchine virtuali.

Cgroups fornisce anche l'isolamento dello spazio dei nomi per isolare completamente l'applicazione visualizzazione dell'ambiente operativo, inclusi alberi di processo, reti, ID utente e filesystem montati.

LXC è un software open source e concesso in licenza con licenza GNU LGPLv2.1+.

I container utilizzano effettivamente le funzionalità del kernel chiamate namespace, cgroups e chroots, per ritagliarsi un'area contenuta.

Quindi, il risultato finale di LXC assomiglia molto a una macchina virtuale, ma senza hypervisor.

1. Prerequisito per l'installazione di LXC

Prima di installare LXC, assicurati che il tuo sistema sia aggiornato utilizzando yum update come mostrato di seguito.

# yum update

LXC dipende da due librerie; libpcap e libcgroup. Ciò richiede anche le utility Busybox e Bridge.

Installa i seguenti pacchetti richiesti per la nostra installazione LXC.

# yum install libcap-devel libcgroup busybox wget bridge-utils

Assicuriamoci di avere tutti i compilatori e i relativi strumenti di sviluppo necessari per compilare e installare qualsiasi software dal codice sorgente.

# yum groupinstall "Development tools"

Per ulteriori informazioni sui gruppi yum, consulta il nostro articolo sui comandi yum.

2. Scarica i container Linux LXC

Scarica l'ultima versione di LXC da Linux Containers Project.

Usa wget per scaricare il tar ball dell'ultima versione stabile di LXC sulla tua macchina come mostrato di seguito.

# cd /

# wget http://linuxcontainers.org/downloads/lxc-1.1.5.tar.gz

Se ricevi un messaggio di errore relativo al certificato durante l'utilizzo di wget sopra, usa l'opzione no-check-certificate come mostrato di seguito.

# wget --no-check-certificate https://linuxcontainers.org/downloads/lxc-1.1.5.tar.gz

In alternativa, se preferisci, puoi anche utilizzare git clone per scaricare l'ultima versione di sviluppo o la versione stabile come mostrato di seguito.

git clone git://github.com/lxc/lxc -b {branch}

Nel comando precedente, {branch} può essere "master" per il ramo di sviluppo corrente o "stable-1.0" per il ramo di aggiornamento stabile della versione 1.0.

3. Configura l'adattatore con ponte

Quindi, crea un adattatore con bridge e configura l'IP statico sull'adattatore con bridge come mostrato nell'esempio ifcfg-eth0 seguente. Assicurati che il tuo adattatore fisico punti a questo adattatore con ponte in ifcfg-eth0.

# cd /etc/sysconfig/network-scripts	

# vi ifcfg-br0
DEVICE="br0"
BOOTPROTO="static"
IPADDR="xxx.xxx.xxx.xxx"
NETMASK="255.255.255.xxx"
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"

Sostituisci tutti i "xxx" nel file sopra con i valori che corrispondono al tuo indirizzo IP e maschera di rete. Ad esempio, cambia il valore IPADDR nel file sopra con l'indirizzo IP della tua macchina.

4. Installa LXC Linux Container

Quindi, decomprimi il tar ball LXC, che abbiamo scaricato in precedenza, esegui ./configure e fai make e make install, per installare LXC sul tuo sistema come mostrato di seguito.

Per impostazione predefinita, questo installerà tutti i binari lxc nella directory /usr/local/bin.

# cd /

# tar xvfz lxc-1.1.5.tar.gz

# cd lxc-1.1.5/

# ./configure

# make && make install

Di seguito sono riportate alcune delle ultime righe dall'output del comando ./configure precedente.

# ./configure
...
...
config.status: creating src/python-lxc/setup.py
config.status: creating src/lua-lxc/Makefile
config.status: executing depfiles commands
config.status: executing default commands
----------------------------
Environment:
 - compiler: gcc
 - distribution: centos
 - init script type(s): sysvinit
 - rpath: no
 - GnuTLS: no
 - Bash integration: yes
Security features:
 - Apparmor: no
 - Linux capabilities: yes
 - seccomp: no
 - SELinux: no
 - cgmanager: no
Bindings:
 - lua: no
 - python3: no
Documentation:
 - examples: yes
 - API documentation: yes
 - user documentation: no
Debugging:
 - tests: no
 - mutex debugging: no
Paths:
 - Logs in configpath: no

Le seguenti sono le ultime righe dall'output del comando make sopra.

# make
...
Building full member lists recursively...
Adding members to member groups.
...
Generating style sheet...
Generating index page...
Generating page index...
Generating example documentation...
Generating file sources...
Generating code for file /usr/save/lxc-1.1.5/src/lxc/attach_options.h...
Generating code for file /usr/save/lxc-1.1.5/src/lxc/lxccontainer.h...
Generating code for file /usr/save/lxc-1.1.5/src/lxc/lxclock.h...
Generating file documentation...
Generating docs for file /usr/save/lxc-1.1.5/src/lxc/attach_options.h...
...
Generating file member index...
make[2]: Leaving directory `/usr/save/lxc-1.1.5/doc/api'
make[2]: Entering directory `/usr/save/lxc-1.1.5/doc'
...
Making all in hooks
make[1]: Entering directory `/usr/save/lxc-1.1.5/hooks'
make[1]: Nothing to be done for `all'.
...

Le seguenti sono le ultime righe dall'output per il comando make install sopra.

# make install
...
Making install in hooks
make[1]: Entering directory `/usr/save/lxc-1.1.5/hooks'
 /bin/mkdir -p '/usr/local/share/lxc/hooks'
 /usr/bin/install -c clonehostname mountecryptfsroot ubuntu-cloud-prep squid-deb-proxy-client '/usr/local/share/lxc/hooks'
...
/bin/mkdir -p /usr/local/var/lib/lxc
/bin/mkdir -p /usr/local/var/cache/lxc
 /bin/mkdir -p '/usr/local/lib/pkgconfig'
 /usr/bin/install -c -m 644 lxc.pc '/usr/local/lib/pkgconfig'
...

5. Crea soft link per le librerie condivise LXC

Esegui lxc-info per verificare che LXC sia installato correttamente. Se tutto è installato correttamente, vedremo un messaggio che dice che il nome del contenitore fornito (ad esempio, test) non esiste. Non abbiamo creato alcun contenitore in questa fase. Vogliamo solo assicurarci che questo comando non generi errori relativi alla libreria condivisa.

# lxc-info --name test
test doesn't exist

A seconda di come sono state configurate le cose sul tuo sistema, potresti anche ricevere il seguente messaggio di errore relativo alla libreria liblxc.so.1.

# lxc-info --name test
lxc-info: error while loading shared libraries: liblxc.so.1: cannot open shared object file: No such file or directory

In questo caso, per risolverlo, crea un collegamento chiamato libxc.so.1 come mostrato di seguito, che punterà alla versione corretta del file liblxc.so.x.x.x.

# ln -s /usr/local/lib/liblxc.so.1.1.5 /lib64/liblxc.so.1

# ls -l /lib64/liblxc.so.1
lrwxrwxrwx. 1 root root 30 Jan 20 09:17 /lib64/liblxc.so.1 -> /usr/local/lib/liblxc.so.1.1.5

6. Verifica l'impostazione e la configurazione di LXC

Successivamente, puoi anche eseguire lxc-checkconfig per verificare che il tuo ambiente lxc sia configurato correttamente.

Quanto segue avrà l'output in quattro diverse sezioni:1) Spazi dei nomi, 2) Gruppi di controllo 3) Varie e 4) Checkpoint/Ripristino. L'output parziale è mostrato di seguito.

# lxc-checkconfig
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-2.6.32-431.el6.x86_64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled
--- Control groups ---
Cgroup: enabled
Cgroup namespace: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
..
--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
Bridges: enabled
Advanced netfilter: enabled
..
--- Checkpoint/Restore ---
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
..
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/local/bin/lxc-checkconfig

Se tutto è configurato correttamente sul tuo sistema, nell'output sopra, tutte le opzioni nei gruppi sopra dovrebbero dire "abilitate".

Domani, nella prossima parte della serie di articoli LXC, spiegheremo come creare, avviare e utilizzare i container lxc linux usando vari comandi lxc.


Linux
  1. Che cos'è Podman e come installare Podman in Linux

  2. Come installare VMware Player su CentOS/RHEL e Ubuntu

  3. Come installare Go in Fedora e Rocky Linux/Centos/RHEL

  4. Come installare e configurare Suricata IDS su Ubuntu 20.04

  5. Come installare e configurare OpenLDAP su CentOS / RHEL Linux

Come installare e configurare Smartctl su CentOS/RHEL 8 e Ubuntu 20.04

Come installare Zabbix su RHEL/CentOS e Debian/Ubuntu

Come installare TeamViewer 15 su RHEL/CentOS/Fedora e Debian/Ubuntu

Come installare e configurare Memcached su Ubuntu Linux

Come installare Java 14 su Linux, Ubuntu, CentOS

Come installare e configurare Sendmail su Ubuntu