September 28, 2022 2:34 am

Comment démarrer plusieurs distributions à 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 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 est FreeBSD Jails.

Par exemple, la machine sur laquelle j’écris est un ordinateur portable exécutant Linux Mint 18, alimenté par un processeur Intel Atom et doté d’un maigre 2 Go de RAM. Pourtant, j’exécute trois conteneurs Linux, chacun avec une instance du serveur Web Apache en cours d’exécution, sans grande perte de performances. Ce serait impensable avec une machine virtuelle traditionnelle comme VirtualBox. Donc, si vous vouliez exécuter plusieurs distributions sur votre système Linux, Linux Containers devrait très bien faire le travail pour vous.

Installation et configuration des conteneurs Linux

Nous configurons LXC 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 familiarité avec la ligne de commande et le dépannage général est également supposée.

Conditions préalables

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

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

[sourcecode]sudo apt install lxc lxc-templates uidmap[/sourcecode]

2. Maintenant, vous devez configurer votre profil. Saisissez 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 “$UTILISATEUR veth lxcbr0 2” | sudo tee -a /etc/lxc/lxc-usernet[/sourcecode]

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

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

sudo cgm créer 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 pour configurer le conteneur :

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

[sourcecode]lxc-create –téléchargement du modèle –nom ubu1[/sourcecode]

2. Ici, le paramètre –template indique à lxc de Télécharger une image préconfigurée provenant 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 de images de distribution prises en charge:

distribution-sélection

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

installer-ubuntu

5. Si vous souhaitez installer l’image de manière non interactivela commande suivante produit le même résultat que ci-dessus :

[sourcecode]lxc-create -t ​​download -n ubu1 — –dist ubuntu –release xenial –arch amd64[/sourcecode]

6. LXC va maintenant télécharger et installer une image minimale Ubuntu xenial 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’installationvous verrez un écran comme celui-ci :

ubuntu_installé

Vous êtes maintenant prêt à utiliser votre nouveau conteneur Ubuntu.

Utilisation de plusieurs distributions avec des conteneurs Linux

Démarrage du conteneur

Démarrez votre conteneur à l’aide de la commande lxc-start :

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

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 le fait fonctionner en arrière-plan.

Vous pouvez vérifier que le conteneur a démarré en utilisant la commande lxc-ls :

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

conteneurs-en-cours

Le paramètre -f permet fantaisie rapports. Ici, vous pouvez voir que j’ai deux conteneurs – une Debian (arrêtée) et une Ubuntu (en cours d’exécution).

Accéder et utiliser votre conteneur

Tu peux accéder à la console du conteneur en utilisant la commande lxc-attach :

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

Vous aurez maintenant un coque racine sur votre conteneur. Il est recommandé de configurer un mot de passe pour l’utilisateur root et créer un compte d’utilisateur régulier:

[sourcecode]mot de passe
adduser beebom[/sourcecode]

Remplacer bien sûr beebom avec le nom d’utilisateur que vous voulez. Vous pouvez ensuite installer le logiciel et configurer votre conteneur comme vous le feriez sur un système classique. Par exemple, dans un conteneur Debian ou Ubuntu :

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

Arrêt de votre conteneur

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

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

Cela rendra le conteneur fermé proprement et il ne consommera plus de ressources sur votre système, à l’exception de l’espace disque.

Clonage et instantanés

Cloner

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

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

[sourcecode]lxc-stop -n ubu1

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

Ici le -n option spécifie le conteneur sourceet le L’option -N spécifie le nom du clone. À Vérifier que le conteneur a été cloné, utilisez la commande lxc-ls :

cloner

Instantanés

Supposons que vous êtes sur le point d’apporter 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 d’effectuer 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é, commencez par arrêter le conteneur:

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

Alors, créer un instantané en utilisant la commande lxc-snapshot :

[sourcecode]lxc-instantané -n ubu1[/sourcecode]

Cela crée un instantané appelé snap0. Tous les instantanés ultérieurs que vous créez à l’aide de cette commande seront appelés snap1, snap2etc.

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

[sourcecode]lxc-instantané -r snap0 -n ubu1[/sourcecode]

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, rendez-vous sur fichier de configuration du conteneursitué dans $HOME/.local/share/lxc//config, et ajouter les lignes suivantes:

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

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

Dépannage

Si vous rencontrez des difficultés pour démarrer les conteneurs, la première chose à essayer est d’exécuter la commande lxc-start dans Premier plan mode. Par exemple:

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

Cette volonté vous montrer les erreurs sur la console actuellee, ce qui est très utile pour identifier la nature du problème.

Problèmes d’exécution simultanée de plusieurs conteneurs

Si vous essayez d’exécuter plusieurs conteneurs à la fois, vous pourriez voir des erreurs comme « Quota atteint » ou « Échec de la création du réseau configuré ». C’est parce que vous exécutez plus d’interfaces réseau que ce qui vous est alloué. Tu peux augmenter le nombre de ponts réseau qu’un utilisateur peut exécuter en modifiant le fichier /etc/lxc/lxc-usernet comme racine. Cela pourrait ressembler à ceci :

[sourcecode]#NOM D’UTILISATEUR TYPE BRIDGE COUNT
beebom veth lxcbr0 5[/sourcecode]

Tu peux changer le numéro à la fin (5 dans cet exemple), à ​​un nombre plus grand 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 différentes 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 auxquelles vous ne faites pas confiance – tout dommage causé par une telle application sera limité à son propre conteneur 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 conteneur, 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 mettre des applications en bac à sable sous Linux.

VOIR AUSSI : 7 meilleures alternatives VirtualBox que vous pouvez utiliser

Exécutez plusieurs distributions simultanément avec des conteneurs Linux

Ainsi se termine notre tutoriel 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 conteneurs, n’hésitez pas à nous poser une question dans la section commentaires.

Comments (0)

Leave a Reply

Your email address will not be published.