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 terrain d'entente entre un chroot et des technologies de virtualisation complète 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 dispose 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 grand impact sur les performances. Ce serait impensable avec une machine virtuelle traditionnelle comme VirtualBox. Donc, si vous avez voulu exécuter plusieurs distributions sur votre système Linux, les conteneurs Linux devraient faire le travail pour vous très bien.
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 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. Installez LXC et d'autres logiciels prérequis utilisant:
[code source] sudo apt 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; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.type = veth" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.link = lxcbr0" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
echo "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ code source]
3. Ensuite, vous devez configurer les autorisations des utilisateurs comme suit:
[code source] 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 all user $$ [/ sourcecode]
Configuration de votre conteneur
Maintenant que LXC Container est installé avec d'autres logiciels prérequis, voici les étapes pour configurer le Container:
1. Dans cet exemple, nous allons mettre en place un conteneur Ubuntu, nommé ubu1
. Pour ce faire, exécutez la commande suivante:
[code source] lxc-create -template download -name ubu1 [/ code source]
2. Ici, le -modèle
le paramètre indique à lxc de Télécharger une image préconfigurée d'Internet, tandis que le -Nom
paramètre 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:
4. Entrez les spécificités de la distribution que vous souhaitez installer. J'installe ici la version 64 bits d'Ubuntu 16.04 (nom de code xenial):
5. Si vous souhaitez installer l'image de manière non interactive, la commande suivante donne le même résultat que ci-dessus:
[code source] lxc-create -t télécharger -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]
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 nouveau conteneur Ubuntu.
Utilisation de plusieurs distributions avec des conteneurs Linux
Démarrage du conteneur
Démarrez votre conteneur en utilisant le lxc-start
commander:
[code source] lxc-start -n ubu1 -d [/ code source]
Ici le -n
paramètre spécifie le nom du conteneur que vous souhaitez démarrer (ubu1
dans ce cas), et le -ré
paramètre le fait fonctionner en arrière-plan.
Vous pouvez vérifier que le conteneur a démarré en utilisant le lxc-ls
commander:
[code source] lxc-ls -f [/ code source]
le -F
paramètre active fantaisie rapports. Ici, vous pouvez voir que j'ai deux conteneurs - un Debian (arrêté) et un Ubuntu (en cours d'exécution).
Accès et utilisation de votre conteneur
Vous pouvez accéder à la console du conteneur en utilisant le lxc-attacher
commander:
[code source] lxc-attach -n ubu1 [/ code source]
Vous allez maintenant avoir un shell racine sur votre conteneur. Il est recommandé de configurer un mot de passe pour l'utilisateur root, et créer un compte utilisateur régulier:
[code source] passwd
adduser beebom [/ sourcecode]
Bien sûr, remplacez beebom avec le nom d'utilisateur que vous souhaitez. Vous pouvez ensuite installer le logiciel et configurer votre conteneur comme vous le feriez sur un système normal. Par exemple, dans un conteneur Debian ou Ubuntu:
[code source] 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 le sortir
commander pour revenir au système hôte. Maintenant, utilisez le lxc-stop
commander pour arrêter votre conteneur:
[code source] lxc-stop -n ubu1 [/ code source]
Cela entraînera l'arrêt proprement du conteneur et il ne consommera plus de ressources sur votre système, à l'exception de l'espace disque.
Clonage et instantanés
Clones
Une fois que vous avez installé des programmes dans un conteneur et que vous l'avez configuré à votre convenance, vous voudrez peut-être en créer une ou plusieurs copies pour un provisionnement facile. Vous pouvez le faire en créant un cloner, qui est une réplique exacte d'un conteneur.
Par exemple, pour créer un clone du ubu1
conteneur (appelons-le ubu2
), arrêtez d'abord le conteneur utilisant lxc-stop
, puis utilisez le copie lxc
commander:
[code source] lxc-stop -n ubu1
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
Ici le -n option spécifie le conteneur source, et le -L'option N spécifie le nom du clone. À Vérifier que le conteneur a été cloné, utilisez le lxc-ls
commander:
Instantanés
Supposons que vous êtes sur le point de rendre certaines modifications potentiellement dangereuses ou difficiles à récupérer à partir de modifications apportées à 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é, tout d'abord arrêtez le conteneur:
[code source] lxc-stop -n ubu1 [/ code source]
Puis, créer un instantané en utilisant le lxc-instantané
commander:
[code source] lxc-snapshot -n ubu1 [/ code source]
Cela crée un instantané appelé snap0
. Tous 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 apportez les modifications souhaitées. Si à tout moment vous souhaitez revenir à un instantané que vous avez créé, arrêter le conteneur et utilisez le lxc-instantané
commande avec la -r
paramètre à restaurer un instantané:
[code source] lxc-snapshot -r snap0 -n ubu1 [/ code source]
Cela restaurera l'instantané snap0
au ubu1
récipient.
Conteneurs à démarrage automatique au démarrage
Vous pouvez créer un conteneur, par exemple un conteneur de serveur Web, qui démarre automatiquement lorsque vous démarrez votre système. Pour ce faire, accédez à la fichier de configuration du conteneur, situé dans $ HOME / .local / partager / lxc /
, et ajouter 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. Le second dit au système de attendez 5 secondes avant de commencer le conteneur suivant, le cas échéant.
Dépannage
Si vous rencontrez des difficultés pour démarrer des conteneurs, la première chose à essayer est d'exécuter le lxc-start
commande dans Premier plan mode. Par example:
[code source] lxc-start -n ubu1 -F [/ code source]
Cette volonté vous montrer les erreurs sur la console actuellee, 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, vous pourriez voir des erreurs tels que «Quota atteint» ou «Échec de la création du réseau configuré». 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 / etc / lxc / lxc-usernet
classer comme racine. Cela pourrait ressembler à ceci:
[code source] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]
Vous pouvez changer le numéro à la fin (5 dans cet exemple), à un plus grand nombre 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 des 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 la façon dont une application s'exécute sur différentes versions de diverses 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 s'il est 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 sandbox, reportez-vous à notre article sur la façon de sandbox des applications 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 guide 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 mettre en place des conteneurs, n'hésitez pas à nous poser une question dans la section commentaires.