{{tag>sysadmin linux lxc lxd container}} ====== LXD ====== LXD est le petit frère de LXC ((**L**inu**X** **C**ontainer)). Il arrive après celui-ci mais ne réécrit pas tout, il s'appuie également sur la liblxc. Il casse la rétro-compatibilité de LXC et intègre un ensemble de bonnes pratiques qui se sont imposées avec le temps, le rendant plus simple à utiliser dans des environnements de production. Tout est néanmoins faisable sous LXC, et les commandes dans LXD conservent d'ailleurs le mnémonique lxc. ===== Installation ===== Le processus d'installation varie légèrement d'une distribution à une autre, il est décrit en détail par la documentation officielle. Une fois les paquet installés, il faut placer les utilisateurs gestionnaires (root y compris) utilisant les commandes lxc dans le groupe lxd Vérifier la présence du group lxd sur le système: $ cat /etc/group | grep -i lxd Ajouter le ou les utilisateurs au groupe s'ils n'y sont pas. Pour l'utilisateur courant les droits du groupe ne seront appliqués qu'après déconnexion/reconnexion. Pour éviter de se déconnecter il est possible d'utiliser la commande **newgrp** dans le shell: newgrp lxd Une fois dans le groupe, initialiser le contexte: stockage et réseau via la commande: $ sudo lxd init Ici le mnémonique est bien **lxd** ===== Commandes usuelles ===== Les commandes sont tapées par l'utilisateur depuis le client (CLI). Dans le cas le plus simple le client est installé sur la même machine que le serveur. Un client peut être en relation avec un ou plusieurs serveurs de conteneurs. Les images sont stockées dans des dépôts. Pour lister les dépôts présents après l'installation: $ lxc remote list Le dépôt par défaut est le dépôt local, il peut être modifié avec $ lxc remote set-default ubuntu Après validation de cette commande, le dépôt par défaut est le dépôt nommé ubuntu. Lister les images disponibles dans le dépôt par défaut: $ lxc image list Lister toutes les images contenues dans un dépôt nommé ''other-repo'' $ lxc image list other-repo: Les nombreux résultats pourront être filtrés de façon traditionnelle via %%| grep%% et autres filtres ou par l'utilisation de motifs simples entre guillemets après le nom du dépôt: $ lxc image list ubuntu:'xenial' L'exemple ci-dessus retourne les images dont le nom contient le texte xenial dans le dépôt ubuntu. Ci-dessous, la commande retourne toutes les images contenant debian dans leur nom et stockées dans le dépôt nommé images: lxc image list images:'debian' Lancer l’exécution d'une image système dans un conteneur que l'on désignera deb9: $ lxc launch images:debian/9/i386 deb9 $ lxc list Pour se connecter au conteneur deb9: $ lxc exec deb9 -- /bin/bash Ou pour lancer une simple commande dans le conteneur deb9 $ lxc exec deb9 -- apt-get update Pour échanger des fichiers avec un conteneur: # Récupérer un fichier du conteneur "deb9": $ lxc file pull deb9/etc/hosts # Copier un fichier dans le conteneur "deb" $ lxc file push ./mylist.txt deb9/tmp/ Arrêter l’exécution du système dans le conteneur deb9 $ lxc stop deb9 Supprimer le conteneur deb9 $ lxc delete deb9 ===== Références ===== * https://linuxcontainers.org/lxd/ * https://linuxcontainers.org/lxd/getting-started-cli/ * https://linuxhint.com/lxd-tutorial/