{{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/