Recommandé, 2024

Choix De L'Éditeur

Comment exécuter plusieurs distributions simultanément à l'aide de conteneurs Linux

Les conteneurs Linux (LXC) sont 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 compromis entre un chroot et des technologies de virtualisation complètes telles que VirtualBox, KVM ou Xen. Les technologies JBS FreeBSD sont une technologie similaire présente dans le monde BSD.

Par exemple, la machine sur laquelle j'écris est un ordinateur portable sous Linux Mint 18, alimenté par un processeur Intel Atom et disposant de 2 Go de RAM. Cependant, j'utilise trois conteneurs Linux, chacun avec une instance du serveur Web Apache en cours d'exécution, sans grande perte de performances. Cela serait impensable avec une machine virtuelle traditionnelle telle que VirtualBox. Donc, si vous vouliez exécuter plusieurs distributions sur votre système Linux, les conteneurs Linux devraient faire l'affaire pour vous.

Installation et configuration de conteneurs Linux

Nous installons LXC sur Linux Mint 18 64 bits. Les instructions d’installation fournies ici fonctionneront également sans modification sur Ubuntu 16.04 et les versions ultérieures. Si vous utilisez une autre distribution, veuillez vous reporter à la documentation officielle de votre distribution si quelque chose ne fonctionne pas comme prévu. Une familiarité avec la ligne de commande et un dépannage général sont également supposés.

Conditions préalables

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

1. Installez LXC et d’autres logiciels prérequis en utilisant:

[code source] sudo apte installer lxc lxc-templates uidmap [/ code source]

2. Vous devez maintenant configurer votre profil . Entrez les commandes suivantes pour le configurer:

[code source] mkdir -p ~ / .config / lxc
echo "lxc.id_map = u 0 100000 65536" & amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; amp; gt; & amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.type = veth" & amp; gt; & amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.link = lxcbr0" & amp; amp; gt; & amp; amp; gt; ~ / .config / lxc / default.conf
echo "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ code de source]

3. Ensuite, vous devez configurer les autorisations utilisateur comme suit:

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

sudo cgm crée tous les utilisateurs
sudo cgm chown tous les utilisateurs $ (id -u) $ (id -g)
cgm movepid tous les utilisateurs $$ [/ sourcecode]

Configuration de votre conteneur

Maintenant que LXC Container est installé avec d'autres logiciels prérequis, voici les étapes à suivre pour configurer le conteneur:

1. Dans cet exemple, nous allons configurer un conteneur Ubuntu, nommé ubu1 . Pour ce faire, exécutez la commande suivante:

[code source] lxc-create - modèle de téléchargement - nom ubu1 [/ code source]

2. Ici, le paramètre –template indique à lxc de télécharger une image préconfigurée à partir d'Internet, tandis que le paramètre –name spécifie le nom du conteneur - ubu1 dans ce cas. Vous pouvez utiliser le nom de votre choix.

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

4. Entrez les détails de la distribution que vous souhaitez installer. Je vais installer la version 64 bits d'Ubuntu 16.04 (nom de code xenial) ici:

5. Si vous souhaitez installer l'image de manière non interactive, la commande suivante permet d'obtenir le même résultat.

[code source] lxc-create -t ​​télécharger -n ubu1 - –dist ubuntu –release xenial –arch amd64 [/ code source]

6. LXC va maintenant télécharger et installer une image xenial 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:

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

Utilisation de plusieurs Distros avec des conteneurs Linux

Démarrer le conteneur

Démarrez votre conteneur en utilisant la commande lxc-start :

[code source] lxc-start -n ubu1 -d [/ code_source]

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

Vous pouvez vérifier que le conteneur a démarré à l'aide de la commande lxc-ls :

[code source] lxc-ls -f [/ code_source]

Le paramètre -f active les rapports de fantaisie . Ici, vous pouvez voir que j'ai deux conteneurs - un Debian (arrêté) et un Ubuntu (en cours d'exécution).

Accéder à et utiliser votre conteneur

Vous pouvez accéder à la console du conteneur à l' aide de la commande lxc-attach :

[code source] lxc-attach -n ubu1 [/ code_source]

Vous allez maintenant avoir un shell root sur votre conteneur. Il est recommandé de définir un mot de passe pour l'utilisateur root et de créer un compte d'utilisateur normal :

[code source] passwd
adduser beebom [/ sourcecode]

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

[code source] apte à installer wget openssh-server htop tmux nano iptables [/ code_source]

Arrêter votre conteneur

Une fois que vous avez fini de jouer avec le conteneur, utilisez la commande exit pour revenir au système hôte . Maintenant, utilisez la commande lxc-stop pour arrêter votre conteneur :

[code source] lxc-stop -n ubu1 [/ code source]

Cela fermera proprement le conteneur et ne consommera plus de ressources sur votre système, sauf de l'espace disque.

Clonage et instantanés

Clones

Une fois que vous avez installé les programmes dans un conteneur et que vous l'avez configuré à votre guise, vous pouvez en créer une ou plusieurs copies pour faciliter le provisionnement. Vous pouvez le faire en créant un clone, qui est une réplique exacte d'un conteneur.

Par exemple, pour créer un clone du conteneur ubu1 (appelons-le ubu2 ), arrêtez-le d'abord à l' aide de lxc-stop, puis utilisez la commande lxc-copy :

[code source] lxc-stop -n ubu

lxc-copy -n ubu1 -N ubu2 [/ code de source]

Ici, l' option -n spécifie le conteneur source et l' option -N spécifie le nom du clone . Pour vérifier que le conteneur a été cloné, utilisez la commande lxc-ls :

Instantanés

Supposons que vous êtes sur le point d'effectuer des modifications potentiellement dangereuses ou difficiles à récupérer à partir d'un conteneur, telles que la reconfiguration d'un serveur Web. Pour minimiser les dommages, vous pouvez créer un instantané du conteneur avant de procéder à une telle modification. En cas de problème lors de la configuration, vous pouvez simplement arrêter le conteneur et le restaurer à son état de fonctionnement précédent en restaurant un instantané.

Pour créer l'instantané, arrêtez d' abord le conteneur :

[code source] lxc-stop -n ubu1 [/ code source]

Ensuite, créez un instantané à l'aide de la commande lxc-snapshot :

[code source] lxc-snapshot -n ubu1 [/ code_source]

Cela crée un instantané appelé snap0 . Les instantanés suivants que vous créez à l'aide de cette commande seront appelés snap1, snap2, etc.

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

[code source] lxc-snapshot -r snap0 -n ubu1 [/ code_source]

Cela restaurera l'instantané snap0 dans le conteneur ubu1 .

Démarrage automatique des conteneurs au démarrage

Vous pouvez faire en sorte qu'un conteneur, par exemple un conteneur de serveur Web, démarre automatiquement lorsque vous démarrez votre système. Pour ce faire, accédez au fichier de configuration du conteneur, situé dans $HOME/.local/share/lxc//config, puis ajoutez les lignes suivantes :

[code source] lxc.start.auto = 1
lxc.start.delay = 5 [/ code source]

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

Dépannage

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

[code source] lxc-start -n ubu1 -F [/ code_source]

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

Problèmes liés à l'exécution simultanée de plusieurs conteneurs

Si vous essayez d'exécuter plusieurs conteneurs à la fois, des erreurs telles que «Quota atteint» ou «Impossible de créer le réseau configuré» peuvent s'afficher. En effet, vous exécutez plus d'interfaces réseau que celles qui vous sont attribuées. Vous pouvez augmenter le nombre de ponts réseau qu'un utilisateur peut exécuter en modifiant le fichier /etc/lxc/lxc-usernet en tant que root . Cela pourrait ressembler à quelque chose comme ça:

[code source] # COMPTE DE PONT TYPE DE NOM D'UTILISATEUR
beebom veth lxcbr0 5 [/ code source]

Vous pouvez modifier le nombre à la fin (5 dans cet exemple), en un nombre plus important tel que 10. Cela vous permettra d'exécuter jusqu'à 10 conteneurs à la fois.

Autres utilisations des conteneurs Linux

Les conteneurs Linux 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 d'un serveur 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 des applications auxquelles vous ne faites pas confiance - les dommages causés par une telle application seront limités à son propre conteneur et n'affecteront pas le système hôte. Veuillez noter que s'il est possible d'exécuter des applications graphiques dans un conteneur, cela prend beaucoup de temps et d'effort, et n'est donc pas recommandé. Si vous souhaitez exécuter des applications graphiques dans un bac à sable, reportez-vous à notre article sur la procédure d'application des bacs à sable sous Linux.

Exécuter plusieurs Distros simultanément avec des conteneurs Linux

Ainsi se termine notre guide sur l’exécution de plusieurs distributions Linux sur un seul ordinateur, sans les frais généraux 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 lors de la configuration des conteneurs, n'hésitez pas à nous poser une question dans la section commentaires.

Top