Introduction aux conteneurs LXD d'Ubuntu

Les conteneurs sont utiles pour de nombreuses raisons. Ils isolent les applications du reste du système. Ils sont portables et faciles à cloner et/ou à déplacer vers d’autres systèmes d’exploitation. Et, dans le cas de Linux, ils fonctionnent de la même manière sous n’importe quelle distribution, sans adaptations nécessaires. Si vous devez déplacer un conteneur de RedHat vers Ubuntu, cela devrait être simplement une opération de copie.
Docker est une solution populaire conçue pour contenir une seule application : par exemple, un serveur de base de données MySQL. LXD est similaire à certains égards mais conçu pour contenir un système d’exploitation entier. Cela le rend utile pour certains scénarios. Par exemple, vous pouvez créer un conteneur LXD, installer un serveur de base de données et un serveur http. Vous pouvez ensuite créer un site Web WordPress à l’intérieur. Vous pouvez maintenant passer d’un cloud à un autre en déplaçant simplement ce conteneur LXD là où il est nécessaire lorsque vous n’êtes pas satisfait de votre précédent fournisseur. Et comme il est facile de cloner un conteneur, vous pouvez même télécharger votre site Web sur plusieurs fournisseurs de cloud pour créer une configuration redondante et de haute disponibilité.
LXD ne virtualise pas le matériel comme le font QEMU ou VirtualBox, ce qui signifie qu’il est très rapide, offrant une vitesse d’exécution presque native.
Installer et configurer LXD
Ouvrez un terminal et installez LXD, ainsi que les utilitaires ZFS, qui vous aideront à accélérer certaines opérations et à économiser de l’espace disque lors du travail avec des conteneurs.
sudo apt install zfsutils-linux lxd
Commencez la configuration de LXD.
sudo lxd initAppuyez sur ENTRER pour sélectionner les valeurs par défaut.
Pour Taille en Go du nouveau dispositif loop (1 Go minimum) [default=15 Go], vous pouvez choisir une autre valeur, comme “50 Go” si vous savez que vous allez créer beaucoup de conteneurs.

Trouver et lancer une image de distribution LXD
Pour lister toutes les images Ubuntu :
lxc image list ubuntu: arch=amd64
Il y aura beaucoup de résultats. Vous pouvez omettre arch=amd64 si vous avez besoin d’images pour d’autres plates-formes, comme les processeurs ARM (les appareils Raspberry Pi utilisent une telle architecture).
Dans l’image précédente, les résultats ont été limités (avec |head) pour faciliter la lecture. L’empreinte de l’Ubuntu 18.04 (84a71299044b) a été mise en évidence. Si vous voulez lancer un conteneur avec cette distribution, la commande serait :
lxc launch ubuntu:84a71299044bPour le moment, cela renverra une erreur d’autorisation refusée. Vous devez être dans le groupe “lxd”. Votre utilisateur a déjà été ajouté à ce groupe, mais pour le rendre actif, vous devez vous déconnecter et vous reconnecter. Si vous voulez éviter cela, utilisez cette commande, en remplaçant “user” par votre nom d’utilisateur :
execsu - user
Maintenant, les commandes lxc fonctionnent sans nécessiter sudo.
Lancer des conteneurs LXD avec des distributions autres qu’Ubuntu
Cette commande vous montrera quelles autres distributions sont disponibles :
lxc image list images: arch=amd64Pour lancer une image, au lieu de l’empreinte, vous pouvez également utiliser un nom d’alias si vous en voyez un disponible dans cette liste.
lxc launch images:debian/9
Si vous ajoutez une chaîne à la fin, vous pouvez choisir un nom pour votre conteneur :
lxc launch images:debian/9 wordpress-siteGérer les conteneurs LXD
Pour lister tous les conteneurs :
lxc list
La colonne “IPV4” est particulièrement importante si vous avez des services en cours d’exécution sur cette instance. Par exemple, si un serveur http Apache fonctionnait sur l’instance, entrer “10.234.232.246” dans le navigateur afficherait le site Web hébergé dans le conteneur.
Pour arrêter un conteneur :
lxc stop nom_du_conteneurCela peut prendre beaucoup de temps (ou échouer) avec des distributions autres qu’Ubuntu. Il est préférable d’obtenir un shell vers le conteneur, et une fois à l’intérieur, entrez systemctl poweroff pour l’arrêter.
Si tout échoue, vous pouvez forcer un arrêt avec :
lxc stop nom_du_conteneur --forcePour le démarrer :
lxc start nom_du_conteneurPour entrer dans votre conteneur :
lxc shell nom_du_conteneur
Vous pouvez installer des programmes avec “sudo apt install” et faire tout ce que vous feriez sur une distribution Linux normale, par exemple, configurer un serveur Apache. Lorsque vous voulez sortir du conteneur, il suffit de taper :
exitTransférer des fichiers vers/depuis des conteneurs LXD
Pour télécharger un fichier vers votre conteneur :
lxc file push /chemin/vers/fichier/local nom_du_conteneur/chemin/vers/fichier/uploadéIncluez le nom du fichier à créer, pas seulement le répertoire où vous voulez le télécharger. Voici un exemple :
lxc file push lxd-apt-install.png accurate-colt/var/www/website/upload.pngPour télécharger un répertoire au lieu d’un fichier :
lxc file push /chemin/vers/répertoire/local nom_du_conteneur/chemin/vers/répertoire/remote --recursive--verboseExemple :
lxc file push /bin accurate-colt/tmp --recursive--verbosePour télécharger un répertoire depuis votre conteneur vers votre système d’exploitation principal :
lxc file pull nom_du_conteneur/chemin/vers/répertoire/remote /chemin/vers/répertoire/local --recursive--verboseExemple :
lxc file pull accurate-colt/tmp /tmp --recursive--verboseConclusion
Cela couvre l’utilisation de base des conteneurs LXD. Il existe des fonctionnalités plus avancées telles que les instantanés et les retours en arrière, l’imposition de limites sur les ressources telles que le CPU et la RAM, le clonage de conteneurs, et ainsi de suite. Celles-ci pourraient être traitées dans un futur tutoriel si nous remarquons que les lecteurs sont intéressés par le sujet.