LXC
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.
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 LXC 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 lxc
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-ls -f
Pour créer un conteneur ;
lxc-create --template download --name <nom du conteneur> -- <paramètres de création du conteneur>
Pour créer un conteneur Debian jessie pour une architecture 64 bits :
lxc-create --template download --name <nom du conteneur> -- -d debian -r jessie -a amd64
Pour démarrer/arrêter un conteneur :
lxc-start -n <nom du conteneur>
lxc-stop -n <nom du conteneur>
Pour obtenir des informations détaillées sur le conteneur :
lxc-info -n <nom du conteneur>
Pour lancer un shell en mode superutilisateur
lxc-attach -n <nom du conteneur> -- /bin/bash
Pour exécuter une commande en mode superutilisateur
lxc-attach -n <nom du conteneur> -- <commande>
Pour supprimer un conteneur
lxc-destroy -n <nom du conteneur>
Pour créer un snapshot de l'état d'un conteneur
lxc-snapshot -n <nom du conteneur>
Pour voir liste des snapshots disponible pour un conteneur
lxc-snapshot -n <nom du conteneur> -L
Pour restaurer un snapshot
lxc-snapshot -n <nom du conteneur> -r <nom du snapshot>
Pour copier un conteneur
lxc-copy -n <nom du conteneur> -N <nom du nouveau conteneur>
Pour copier un conteneur à partir d'un snapshot
lxc-snapshot -n <nom du conteneur> -r <nom du snapshot> -N <nom du nouveau conteneur>