GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer et configurer les conteneurs Linux LXC sur CentOS / RHEL / Ubuntu

LXC signifie Conteneurs Linux.

Les conteneurs Linux sont des méthodes de "virtualisation" légères qui exécutent plusieurs unités virtuelles simultanément sur un seul hôte de contrôle sur un seul noyau Linux.

Le noyau Linux contient des cgroups pour l'isolation des ressources (CPU, mémoire, bloc d'E/S, réseau, etc.), qui ne nécessite le démarrage d'aucune machine virtuelle.

Cgroups fournit également une isolation d'espace de noms pour isoler complètement l'application vue de l'environnement d'exploitation, y compris les arborescences de processus, les réseaux, les ID utilisateur et les systèmes de fichiers montés.

LXC est un logiciel open source et sous licence GNU LGPLv2.1+.

Les conteneurs utilisent en fait des fonctionnalités du noyau appelées espaces de noms, cgroups et chroots, pour découper une zone confinée.

Ainsi, le résultat final de LXC ressemble beaucoup à une machine virtuelle, mais sans aucun hyperviseur.

1. Prérequis pour l'installation de LXC

Avant d'installer LXC, assurez-vous que votre système est à jour en utilisant yum update comme indiqué ci-dessous.

# yum update

LXC dépend de deux bibliothèques ; libpcap et libcgroup. Cela nécessite également les utilitaires busybox et bridge.

Installez les packages requis suivants pour notre installation LXC.

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

Assurons-nous d'avoir tous les compilateurs et outils de développement associés nécessaires pour compiler et installer n'importe quel logiciel à partir du code source.

# yum groupinstall "Development tools"

Pour plus d'informations sur les groupes yum, consultez notre article sur les commandes yum.

2. Télécharger les conteneurs Linux LXC

Téléchargez la dernière version de LXC à partir de Linux Containers Project.

Utilisez wget pour télécharger l'archive tar de la dernière version stable de LXC sur votre machine, comme indiqué ci-dessous.

# cd /

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

Si vous obtenez un message d'erreur lié au certificat lors de l'utilisation du wget ci-dessus, utilisez l'option no-check-certificate comme indiqué ci-dessous.

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

Alternativement, si vous préférez, vous pouvez également utiliser git clone pour télécharger la dernière version de développement ou la version stable, comme indiqué ci-dessous.

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

Dans la commande ci-dessus, la {branche} peut être soit "maître" pour la branche de développement actuelle, soit "stable-1.0" pour la branche de mise à jour stable de la version 1.0.

3. Configurer l'adaptateur ponté

Ensuite, créez un adaptateur ponté et configurez l'adresse IP statique sur l'adaptateur ponté comme indiqué dans l'exemple ifcfg-eth0 suivant. Assurez-vous que votre adaptateur physique pointe vers cet adaptateur ponté dans 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"

Remplacez tous les "xxx" dans le fichier ci-dessus par les valeurs qui correspondent à votre adresse IP et à votre masque de réseau. Par exemple, remplacez la valeur IPADDR dans le fichier ci-dessus par l'adresse IP de votre machine.

4. Installer le conteneur Linux LXC

Ensuite, décompressez la boule de goudron LXC, que nous avons téléchargée précédemment, exécutez le ./configure, et faites make et make install, pour installer le LXC sur votre système comme indiqué ci-dessous.

Par défaut, cela installera tous les binaires lxc sous le répertoire /usr/local/bin.

# cd /

# tar xvfz lxc-1.1.5.tar.gz

# cd lxc-1.1.5/

# ./configure

# make && make install

Voici quelques-unes des dernières lignes de la sortie de la commande ./configure ci-dessus.

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

Voici les dernières lignes de la sortie de la commande make ci-dessus.

# 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'.
...

Voici les dernières lignes de la sortie de la commande make install ci-dessus.

# 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. Créer un lien symbolique pour les bibliothèques partagées LXC

Exécutez lxc-info pour vérifier que LXC est installé avec succès. Si tout est installé correctement, nous verrons un message indiquant que le nom du conteneur donné (par exemple, test) n'existe pas. Nous n'avons créé aucun conteneur à ce stade. Nous voulons simplement nous assurer que cette commande ne génère aucune erreur liée à la bibliothèque partagée.

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

Selon la configuration de votre système, vous pouvez également obtenir le message d'erreur suivant lié à la bibliothèque 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

Dans ce cas, pour résoudre ce problème, créez un lien appelé libxc.so.1 comme indiqué ci-dessous, qui pointera vers la version correcte du fichier 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. Vérifier l'installation et la configuration de LXC

Ensuite, vous pouvez également exécuter lxc-checkconfig pour vérifier que votre environnement lxc est correctement configuré.

Les éléments suivants auront une sortie dans quatre sections différentes :1) Espaces de noms, 2) Groupes de contrôle 3) Divers et 4) Point de contrôle/restauration. La sortie partielle est illustrée ci-dessous.

# 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

Si tout est correctement configuré sur votre système, dans la sortie ci-dessus, toutes les options des groupes ci-dessus doivent indiquer "activé".

Demain, dans la prochaine partie de la série d'articles LXC, nous expliquerons comment créer, démarrer et utiliser des conteneurs Linux lxc à l'aide de diverses commandes lxc.


Linux
  1. Qu'est-ce que Podman et comment installer Podman sous Linux

  2. Comment installer VMware Player sur CentOS/RHEL et Ubuntu

  3. Comment installer Go dans Fedora et Rocky Linux/Centos/RHEL

  4. Comment installer et configurer Suricata IDS sur Ubuntu 20.04

  5. Comment installer le package zip/unzip sous Linux CentOS/RHEL 7 et 8

Comment installer et configurer Smartctl sur CentOS/RHEL 8 et Ubuntu 20.04

Comment installer Zabbix sur RHEL/CentOS et Debian/Ubuntu

Comment installer TeamViewer 15 sur RHEL/CentOS/Fedora et Debian/Ubuntu

Comment installer et configurer Memcached sur Ubuntu Linux

Comment installer Java 14 sur Linux, Ubuntu, CentOS

Comment installer et configurer Sendmail sur Ubuntu