LXC / LXD
LXC (Linux Containers) est une solution de virtualisation basée sur la capacité du noyau Linux à faire fonctionner des environnements isolés. Les conteneurs partagent le même noyau mais l'utilisation des processeurs, mémoire vive, système de fichier... est isolée les uns des autres. Il s'agit donc d'une méthode de virtualisation légère puisque la machine elle-même n'est pas virtualisée. On parle alors de conteneur plutôt que de machine virtuelle.
LXD est l'hyperviseur de LXC.
LXC va nous permettre de créer rapidement des machines afin de pouvoir les configurer. Il s'agit donc d'un outil particulièrement utile à la fois pour le déploiement mais aussi les tests.
Installation
L'installation de LXD se fait à partir du gestionnaire de paquet de votre distribution Linux. Pour une distribution basée sur Debian (Ubuntu, Mint...), il suffit de taper en ligne de commande:
sudo apt install lxd
Vous devez ensuite configurer le service LXD avec la commande :
sudo lxd init
Vous pouvez conserver la valeur des paramètres telle qu'elle vous est proposée.
LXD est maintenant installé en tant que service. Vous allez pouvoir utiliser la commande lxc
qui va vous permettre d'interagir avec l'hyperviseur.
Utilisation
lxc
permet de manipuler facilement vos conteneurs. Cette section liste les commandes les plus utiles.
Pour voir la liste des conteneurs installés, leur état et leurs adresses réseau :
lxc list
Pour créer un conteneur ;
lxc launch images:<distribution>/<release>/<architecture> <nom du conteneur>
La liste des images est disponible sur https://images.linuxcontainers.org/.
Pour créer un conteneur Debian jessie pour une architecture 64 bits :
lxc launch images:debian/jessie/amd64 <nom du conteneur>
Pour démarrer/arrêter/relancer un conteneur :
lxc start <nom du conteneur>
lxc stop <nom du conteneur>
lxc restart <nom du conteneur>
Pour obtenir des informations détaillées sur le conteneur :
lxc info <nom du conteneur>
Pour lancer un shell en mode superutilisateur
lxc shell <nom du conteneur>
Pour exécuter une commande en mode superutilisateur
lxc exec <nom du conteneur> -- <commande>
Pour supprimer un conteneur
lxc delete <nom du conteneur>
Pour créer un snapshot de l'état d'un conteneur
lxc snapshot <nom du conteneur> <nom du snapshot>
Pour restaurer un snapshot
lxc restore <nom du conteneur> <nom du snapshot>
Pour copier un conteneur
lxc copy <nom du conteneur> <nom du nouveau conteneur>
Pour copier un conteneur à partir d'un snapshot
lxc copy <nom du conteneur>/<nom du snapshot> <nom du nouveau conteneur>