Bonjour,
aujourd'hui je vais vous expliquer comment créer et utiliser les conteneurs LXC.
À quoi peut bien me servir un "conteneur"? pouvez vous vous demander ; eh bien cela permet par exemple de tester un nouveau logiciel sans risquer de "polluer" votre ordinateur :
- Vous créez votre conteneur
- Vous installez le logiciel à tester à l'intérieur
- Une fois testé, vous détruisez le conteneur
Cela peut aussi être utile si vous écrivez par exemple un programme qui peut potentiellement "abîmer" votre machine : Vous le testez dans un conteneur pour être sûr qu'il ne fait pas de dégâts.
Un autre usage peut être de tester ou d'utiliser un logiciel qui ne fonctionne que sous une autre distribution que celle dont vous avez l'habitude (par exemple un programme qui fonctionne sous Redhat alors que votre ordinateur est installé avec Ubuntu).
Enfin, une utilisation courante des conteneurs permet d'isoler une ou des applications pour des raisons de sécurité. Il est possible par exemple de donner accès à un conteneur à des utilisateurs inconnus sans que ceux-ci puissent acoir accès au reste du réseau.
Tout d'abord, quelques définitions
Qu'est-ce qu'un "conteneur LXC"
Selon Wikipedia:
LXC, contraction de l’anglais Linux Containers3 est un système de virtualisation, utilisant l'isolation comme méthode de cloisonnement au niveau du système d'exploitation. Il est utilisé pour faire fonctionner des environnements Linux isolés les uns des autres dans des conteneurs partageant le même noyau et une plus ou moins grande partie du système hôte. Le conteneur apporte une virtualisation de l'environnement d'exécution (processeur, mémoire vive, réseau, système de fichier…) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de machine virtuelle.
En résumé, un conteneur permet de créer une pseudo-machine (qui n'est pas une machine virtuelle!) sur votre station ou serveur de manière à isoler un environnement ou une application, afin que ce qui est à l'interieur du conteneur ne puisse modifier la station ou le serveur "physique" (on peut tout à fait créer des conteneurs dans une machine virtuelle!). L'avantage de cette approche est de consommer moins de ressources sur la machine portant le ou les conteneurs, puisque la partie "matérielle" de la machine virtuelle n'a pas besoin d'être simulée.
Installation de LXC sur debian/ubuntu
Les paquets nécessaires sont disponibles dans les dépôts officiels.
sudo apt install lxc lxctl
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
The following additional packages will be installed:
bridge-utils debootstrap dirmngr dns-root-data dnsmasq-base libipc-system-simple-perl liblinux-lvm-perl liblxc1 libnet-ssh2-perl libossp-uuid-perl libossp-uuid16
libpam-cgfs libterm-readkey-perl libyaml-tiny-perl lxcfs perl-doc python3-lxc rsync uidmap
Paquets suggérés :
dbus-user-session pinentry-gnome3 tor uuid apparmor btrfs-tools
Les NOUVEAUX paquets suivants seront installés :
bridge-utils debootstrap dirmngr dns-root-data dnsmasq-base libipc-system-simple-perl liblinux-lvm-perl liblxc1 libnet-ssh2-perl libossp-uuid-perl libossp-uuid16
libpam-cgfs libterm-readkey-perl libyaml-tiny-perl lxc lxcfs lxctl perl-doc python3-lxc rsync uidmap
0 mis à jour, 21 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 9 950 ko dans les archives.
Après cette opération, 20,5 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n]
Utilisation des conteneurs
Création d'un conteneur
La création d'un conteneur se fait de manière très simple : On choisit l'architecture matérielle souhaitée (Ex : amd64) et la distribution. On utilise en suite l'utilitaire 'lxc-create' qui va se charger de télécharger l'archive nécessaire et de créer le conteneur.
lxc-create -t download -n lxc61 -- -a amd64 -d centos -r 7
options :
-t : Télécharger le conteneur depuis le site officiel
-n <nom du serveur/conteneur>
-a <architecture matérielle émulée>
-d <distribution à installer>
-r <revision de la distribution
Pour une Debian « Jessie »
lxc-create -t download -n lxc61 -- -a amd64 -d debian -r jessie
À noter : Par défaut sur debian et assimilés (ubuntu,...) les fichiers du conteneur sont dans
ls -lrt /var/lib/lxc/<nom du conteneur>/rootfs/
Démarrage du conteneur
Une fois crée, il faut démarrer le conteneur, de la même manière que vous démarrez votre ordinateur ou une machine virtuelle.
lxc-start -n lxc61
Connexion au conteneur
Dernière étape : Une fois crée et lancé, votre conteneur est près pour être utilisé. Il faut alors se connecter dessus.
Il faut bien noter que le conteneur ne contient (sic) pas encore de serveur SSH ou de configuration réseau.La méthode pour "entrer" dans le conteneur est de s'y "attacher".
lxc-attach -n lxc61
Il est aussi possible de se "chrooter" directement dans le conteneur:
chroot /var/lib/lxc/lxc61/rootfs/ /bin/bash
Une fois que toutes les étapes précedentes ont été effectuées, vous disposez d'un conteneur complet qui se comporte de la même manière qu'un serveur ou une station de travail (physique ou virtuelle) : Vous pouvez la mettre à jour, installer de nouvelles applications, etc.
À noter : La connexion à un conteneur par interface graphique est un peu complexe et sera abordée dans un prochain article.
Exemple complet
lxc-create -t download -n srv01 -- -a amd64 -d debian -r jessie
Using image from local cache
Unpacking the rootfs
---
You just created a Debian container (release=jessie, arch=amd64, variant=default)
To enable sshd, run: apt-get install openssh-server
For security reason, container images ship without user accounts
and without a root password.
Use lxc-attach or chroot directly into the rootfs to set a root password
or create user accounts.
root@host:~# lxc-start -n srv01
root@host:~# lxc-attach -n srv01
root@srv01:~#