LXD
Présentation rapide
LXD est un moteur de conteneurs et de VMs sous Linux. Il s'agit d'un projet géré par Canonical. Basé sur des images, son but est un peu différent de celui de Docker; il fournit des OS, et non des images applicatives stateless comme Docker. Il se base sur le runtime LXC (pour LinuX Containers), qui est notamment utilisé par Proxmox. Il se base sur une API REST.
Leur site propose une page de test interactif. Après avoir suivi ce rapide tuto, on peut en tirer les fonctionnalités intéressantes suivantes:
- Un système d'Images donc; la liste est ici. Fait sympathique, on peut visiter leur dashboard Jenkins
- La possibilité de faire des snapshots, de façon plutôt efficace
- La possiblité de customiser RAM, CPU, etc... à la volée
- Une CLI assez simple
Opérations de base
La commande se nomme "lxc"; il faut la distinguer du runtime du même nom.
Images, lancement de conteneur
Lister les images dispo sur leur serveur, nommé "images:"
lxc image list images:
Lancer un conteneur nommé "first" avec une image Ubuntu
lxc launch images:ubuntu/20.04 first
Copier un conteneur (clone)
lxc copy first second
Gestion de conteneurs
Lister les conteneurs
lxc list
Démarrer un conteneur
lxc start first
Infos sur un conteneur
lxc info first
Arrêt d'un conteneur
lxc stop first
Effacer un conteneur (arrêté)
lxc delete first
Effacer un conteneur qui tourne
lxc delete third --force
Limitations en ressources
Un conteneur non limité a autant de ram et de cpu que son hôte; il est possible de limiter les choses.
Lancer un conteneur nommé limited avec 1 vCPU et 192Mib de ram
lxc launch images:ubuntu/20.04 limited -c limits.cpu=1 -c limits.memory=192MiB
Voir sa conf
lxc config show limited
Modification à la volée:
lxc config set limited limits.memory=128MiB
Interactions avec le conteneur
Lancer un shell dans le conteneur "first"
lxc exec first -- bash
Lancer une commande dans le conteneur "first"
lxc exec first -- apt-get update
Accès aux fichier du conteneur
On peut récupérer et repousser des fichiers vers / depuis le conteneur. Pull un fichier du conteneur first
lxc file pull first/etc/hosts .
Push ce même fichier après modif
lxc file push hosts first/etc/hosts
Lire un fichier de log
lxc file pull first/var/log/syslog - | less
Snapshot
Créer un snapshot nommé "clean"
lxc snapshot first clean
Lister les snaps d'un conteneur
lxc list first
Restaurer le snap "clean" sur le conteneur "first"
lxc restore first clean
Effacer le snap "clean" sur la machine "first"
lxc delete first/clean