Aller au contenu

LXD : les instances

Une instance est un conteneur (par défaut) ou une machine virtuelle (--vm) créée à partir d’une image. Les exemples utilisent un conteneur nommé c1.

Fenêtre de terminal
lxc launch ubuntu:24.04 c1 # crée et démarre un conteneur
lxc init ubuntu:24.04 c2 # crée sans démarrer
lxc launch ubuntu:24.04 vm1 --vm # machine virtuelle
lxc launch ubuntu:24.04 c3 -p default -p petit # avec des profils précis
lxc launch ubuntu:24.04 c4 -c limits.cpu=2 -c limits.memory=2GiB # avec des options
Commande Rôle
lxc list Liste les instances (état, adresses IP)
lxc start c1 Démarre
lxc stop c1 Arrête (--force pour forcer)
lxc restart c1 Redémarre
lxc pause c1 Met en pause
lxc delete c1 Supprime une instance arrêtée (--force si elle tourne)
lxc rename c1 web Renomme (instance arrêtée)
lxc info c1 État détaillé, ressources, snapshots
Fenêtre de terminal
lxc exec c1 -- bash # shell dans l'instance
lxc exec c1 -- apt update # commande ponctuelle
lxc exec c1 --user 1000 -- bash # avec un utilisateur précis (identifiant numérique)
lxc console c1 # console (Ctrl+a q pour quitter)
lxc console c1 --show-log # journal de démarrage
Fenêtre de terminal
lxc file push ./config.conf c1/etc/config.conf # hôte vers instance
lxc file push -r ./site c1/var/www/ # dossier complet
lxc file pull c1/var/log/syslog ./syslog # instance vers hôte
lxc file edit c1/etc/hosts # éditer un fichier distant
lxc file delete c1/tmp/essai

Un snapshot fige l’état d’une instance pour y revenir.

Fenêtre de terminal
lxc snapshot c1 avant-maj # crée un snapshot
lxc info c1 # liste les snapshots
lxc restore c1 avant-maj # revient à ce snapshot
lxc delete c1/avant-maj # supprime le snapshot

Snapshots automatiques, avec expiration :

Fenêtre de terminal
lxc config set c1 snapshots.schedule "0 3 * * *" # tous les jours à 3 h (syntaxe cron)
lxc config set c1 snapshots.expiry 1w # supprimés après une semaine
Fenêtre de terminal
lxc copy c1 c1-copie # duplique une instance
lxc move c1 c1-nouveau # renomme / déplace
lxc export c1 ./c1-sauvegarde.tar.gz # sauvegarde complète dans un fichier
lxc import ./c1-sauvegarde.tar.gz # restaure depuis ce fichier
Fenêtre de terminal
lxc config show c1 # configuration de l'instance
lxc config set c1 limits.cpu 2 # limite à 2 CPU
lxc config set c1 limits.memory 2GiB # limite de mémoire
lxc config set c1 boot.autostart true # démarrage automatique avec l'hôte
lxc config set c1 boot.autostart.priority 10 # ordre de démarrage (plus haut = plus tôt)
lxc config edit c1 # édition complète dans l'éditeur
lxc config unset c1 limits.cpu # retire une valeur

Pour exécuter Docker (ou d’autres conteneurs) dans une instance LXD :

Fenêtre de terminal
lxc config set c1 security.nesting true
lxc restart c1

Configuration automatique au premier démarrage (utilisateurs, paquets, fichiers) :

Fenêtre de terminal
lxc launch ubuntu:24.04 c5 -c cloud-init.user-data="$(cat cloud-init.yaml)"
#cloud-config
package_update: true
packages:
- nginx