octobre 1, 2020

Linux Containers: Comment exécuter plusieurs Distributeurs linux simultanément 2020

Linux Containers (LXC) est une technologie de virtualisation légère et ils ont diverses utilisations. Il fait partie du noyau Linux et peut vous permettre d’émuler une ou plusieurs distributions Linux sur un seul hôte Linux. Considérez-le comme un juste milieu entre un chroot et des technologies de virtualisation complètes telles que VirtualBox, KVM ou Xen. Une technologie similaire présente dans le monde BSD sont les prisons FreeBSD.

À titre d’exemple, la machine sur laquelle j’écris est un ordinateur portable fonctionnant sous Linux Mint 18, alimenté par un processeur Intel Atom, et dispose d’un maigre 2 Go de RAM. Pourtant, j’exécute trois Linux Containers, chacun avec une instance du serveur Web Apache en cours d’exécution, sans un gros coup de performances. Cela serait impensable avec une machine virtuelle traditionnelle comme VirtualBox. Donc, si vous avez voulu exécuter plusieurs distributions sur votre système Linux, les Linux Containers devraient très bien faire le travail pour vous.

Comment Installer et configure Linux Containers

Nous mettons en place Linux Containers sur Linux Mint 18 64 bits. Les instructions d’installation fournies ici fonctionneront également sans modification sur Ubuntu 16.04 et supérieur. Si vous utilisez une autre distribution, veuillez vous référer à la documentation officielle de votre distribution si quelque chose ne fonctionne pas comme prévu. Une connaissance de la ligne de commande et du dépannage général est également supposée.

Conditions préalables

Voici quelques éléments que vous devez configurer pour commencer à utiliser plusieurs distributions:

  1. Install Linux Containers et autres logiciels prérequis utilisant:
[sourcecode]sudo apt install lxc lxc-templates uidmap[/sourcecode]
  1. Vous devez maintenant configurer votre profil. Entrez les commandes suivantes pour le configurer:
[sourcecode]mkdir -p ~/.config/lxc
echo "lxc.id_map = u 0 100000 65536" > ~/.config/lxc/default.conf
echo "lxc.id_map = g 0 100000 65536" >> ~/.config/lxc/default.conf
echo "lxc.network.type = veth" >> ~/.config/lxc/default.conf
echo "lxc.network.link = lxcbr0" >> ~/.config/lxc/default.conf
echo "$USER veth lxcbr0 2" | sudo tee -a /etc/lxc/lxc-usernet[/sourcecode]
  1. Ensuite, vous devez configurer les autorisations utilisateur comme suit:

 

[sourcecode]sudo usermod –add-subuids 100000-165536 $USER
sudo usermod –add-subgids 100000-165536 $USER

sudo cgm create all user
sudo cgm chown all user $(id -u) $(id -g)
cgm movepid all user $$[/sourcecode]

Configuration de votre Linux Containers

Maintenant que Linux Containers est installé avec d’autres logiciels prérequis, voici les étapes pour configurer le Containers:

  1. Dans cet exemple, nous allons configurer un Containers Ubuntu, nommé <code> ubu1 </code>. Pour ce faire, exécutez la commande suivante:
[sourcecode]lxc-create –template download –name ubu1[/sourcecode]
  1. Ici, le paramètre <code> –template </code> indique à Linux Containers de télécharger une image préconfigurée depuis Internet, tandis que le paramètre <code> –name </code> spécifie le nom du conteneur – <code> ubu1 </ code > dans ce cas. Vous pouvez utiliser le nom de votre choix.

  2. Vous verrez maintenant une liste des images de distribution prises en charge:

linux containers

  1. Saisissez les spécificités de la distribution que vous souhaitez installer. J’installerai ici la version 64 bits d’Ubuntu 16.04 (nom de code xenial):

install-ubuntu

  1. Si vous souhaitez installer l’image de manière non interactive, la commande suivante obtient le même résultat que ci-dessus:
[sourcecode]lxc-create -t download -n ubu1 — –dist ubuntu –release xenial –arch amd64[/sourcecode]

6. Linux Containers va maintenant télécharger et installer une image xéniale Ubuntu minimale sur votre système hôte. Le téléchargement et l’installation peuvent prendre un peu de temps en fonction de votre connexion Internet et de la vitesse de votre PC. Après l’installation, vous verrez un écran comme celui-ci:

linux containers

Vous êtes maintenant prêt à utiliser votre conteneur Ubuntu nouvellement configuré.

Utilisation de plusieurs distribution avec Linux Containers

Démarrage du Container

Démarrez votre conteneur en utilisant le <code>lxc-start</code> commander:

[sourcecode]lxc-start -n ubu1 -d[/sourcecode]

Ici, le paramètre <code> -n </code> spécifie le nom du container que vous souhaitez démarrer (<code> ubu1 </code> dans ce cas), et le paramètre <code> -d </code> le fait fonctionner en arrière-plan.

Vous pouvez vérifier que le container a démarré à l’aide de la commande <code> lxc-ls </code>:

[sourcecode]lxc-ls -f[/sourcecode]

 

Le paramètre <code> -f </code> permet des rapports fantaisistes. Ici, vous pouvez voir que j’ai deux container – un Debian (arrêté) et un Ubuntu (en cours d’exécution).

Accéder et utiliser votre Container

Vous pouvez accéder à la console du container à l’aide de la commande <code> lxc-attach </code>:

[sourcecode]lxc-attach -n ubu1[/sourcecode]

Vous aurez maintenant un shell root sur votre container. Il est recommandé de configurer un mot de passe pour l’utilisateur root et de créer un compte utilisateur normal:

[sourcecode]passwd
adduser zuatutos[/sourcecode]

Bien sûr, remplacez zuatutos par le nom d’utilisateur que vous souhaitez. Vous pouvez ensuite installer le logiciel et configurer votre container comme vous le feriez sur un système normal. Par exemple, dans un container Debian ou Ubuntu:

 

[sourcecode]apt install wget openssh-server htop tmux nano iptables[/sourcecode]

Arrêter votre Container

Une fois que vous avez fini de jouer avec le container, utilisez la commande <code> exit </code> pour revenir au système hôte. Utilisez maintenant la commande <code> lxc-stop </code> pour arrêter votre container:

[sourcecode]lxc-stop -n ubu1[/sourcecode]

Cela entraînera l’arrêt correct du container et ne consommera plus de ressources sur votre système, à l’exception de l’espace disque.

 

Clonage et snapshot

Clones

Une fois que vous avez installé des programmes dans un container et que vous l’avez configuré à votre guise, vous souhaiterez peut-être en créer une ou plusieurs copies pour un approvisionnement facile. Vous pouvez le faire en créant un clone, qui est une réplique exacte d’un container.

Par exemple, pour créer un clone du container <code> ubu1 </code> (appelons-le <code> ubu2 </code>), arrêtez d’abord le container en utilisant <code> lxc-stop </code>, puis utilisez la commande <code> lxc-copy </code>:

[sourcecode]lxc-stop -n ubu1

lxc-copy -n ubu1 -N ubu2[/sourcecode]

Ici, l’option -n spécifie le container source et l’option -N spécifie le nom du clone. Pour vérifier que le container a été cloné, utilisez la commande <code> lxc-ls </code>:

 

snapshot

Supposons que vous êtes sur le point de rendre certains éléments potentiellement dangereux ou difficiles à récupérer à la suite de modifications apportées à un container, comme la reconfiguration d’un serveur Web. Pour minimiser les dommages, vous pouvez créer un snapshot du container avant d’effectuer une telle modification. En cas de problème lors de la configuration, vous pouvez simplement arrêter le container et le restaurer à son état de fonctionnement précédent en restaurant un snapshot.

Pour créer le snapshot, arrêter d’abord le container:

[sourcecode]lxc-stop -n ubu1[/sourcecode]

Ensuite, créez un snapshot en utilisant le <code>lxc-snapshot</code> commande:

[sourcecode]lxc-snapshot -n ubu1[/sourcecode]

Cela crée un snapshot utiliser <code>snap0</code>. Tous les snapshot suivants que vous créez à l’aide de cette commande:

will be called snap1, snap2, etc.

Après cela, vous pouvez démarrer le conteneur et apporter les modifications souhaitées. Si à tout moment vous souhaitez revenir à un snapshot que vous avez créé, arrêtez le container et utilisez la commande <code> lxc-snapshot </code> avec le paramètre <code> -r </code> pour restaurer un snapshot:

[sourcecode]lxc-snapshot -r snap0 -n ubu1[/sourcecode]

Cela restaurera la snapshot <code>snap0</code> à la <code>ubu1</code> container.

Container à démarrage automatique au démarrage

Vous pouvez faire en sorte qu’un container, par exemple un container de serveur Web, démarre automatiquement lorsque vous démarrez votre système. Pour ce faire, accédez au fichier de configuration du container, situé dans <code> $ HOME / .local / share / lxc / <NAME OF CONTAINER> / config </code>, et ajoutez les lignes suivantes:

[sourcecode]lxc.start.auto = 1
lxc.start.delay = 5[/sourcecode]

La première ligne spécifie que le container doit être démarré au démarrage. La seconde indique au système d’attendre 5 secondes avant de démarrer le prochain container, le cas échéant.

Dépannage

Si vous rencontrez des problèmes pour démarrer des containers, la première chose à faire est d’exécuter la commande <code> lxc-start </code> en mode Premier plan. Par exemple:

[sourcecode]lxc-start -n ubu1 -F[/sourcecode]

Cela vous montrera les erreurs sur la console actuelle, ce qui est très utile pour identifier la nature du problème.

Problèmes avec l’exécution simultanée de plusieurs Linux containers

Si vous essayez d’exécuter plusieurs linux containers à la fois, vous risquez de voir des erreurs telles que «quota atteint» ou «échec de création du réseau configuré». En effet, vous exécutez plus d’interfaces réseau que ce qui vous est alloué. Vous pouvez augmenter le nombre de ponts réseau qu’un utilisateur peut exécuter en modifiant le fichier <code> / etc / lxc / lxc-usernet </code> en tant que root. Cela pourrait ressembler à ceci:

[sourcecode]# USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5[/sourcecode]

Vous pouvez changer le nombre à la fin (5 dans cet exemple), en un plus grand nombre tel que 10. Cela vous permettra d’exécuter jusqu’à 10 linux containers à la fois.

Autres utilisations de Linux Containers

Linux containers ont diverses utilisations. Vous pouvez les utiliser comme boîtes de test légères, par exemple, pour tester diverses configurations d’un serveur Web ou de base de données avant de les valider sur un serveur de production. Un autre cas d’utilisation consiste à tester le fonctionnement d’une application sur différentes versions de différentes distributions.

Vous pouvez également les utiliser pour isoler les applications aux quelles vous ne faites pas confiance – tout dommage causé par une telle application sera limité à son propre containers et n’affectera pas le système hôte. Veuillez noter que bien qu’il soit possible d’exécuter des applications GUI dans un containers, cela prend beaucoup de temps et d’efforts et n’est donc pas recommandé. Si vous souhaitez exécuter des applications GUI dans un bac à sable, reportez-vous à notre article sur la façon de bac à sable des applications sous Linux.

 

Exécuter plusieurs distributeur simultanément avec Linux Containers

Ainsi se termine notre How-To sur l’exécution de plusieurs distributions Linux sur un seul ordinateur, sans la surcharge d’une machine virtuelle de taille normale. L’utilité de cette technologie n’est limitée que par votre créativité, alors n’hésitez pas à expérimenter et à découvrir de nouveaux cas d’utilisation. Si vous rencontrez des difficultés pour configurer des containers, n’hésitez pas à nous poser une question dans la section commentaires.

Une réflexion sur « Linux Containers: Comment exécuter plusieurs Distributeurs linux simultanément 2020 »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *