Installation de LXC
Installation des paquets
En tant qu'utilisateur root installer les paquets lxc, lxcfs et lxc-template
apt update && apt dist-upgrade
apt install lxc lxcfs lxc-templates
Seule l'installation de lxc est nécessaire comme lxcfs et lxc-templates sont ajouté automatiquement, tout définir permet de prévenir dans le cas ou ce comportement change dans le futur.
Configuration de la variable XDG_RUNTIME_DIR
créer le fichier /etc/profile.d/xdg_runtime_dir.sh avec le contenu suivant
#!/bin/bash
export XDG_RUNTIME_DIR=/run/user/$(id -u)
Cette variable d'environnement permet d'indiqué à LXC un emplacement propre à l'utilisateur dans lequel il pourra placer de petits fichiers temporaire
Création du fichier /etc/lxc/lxc.conf
lxc.lxcpath = /data/lxc
Par défaut les conteneurs créés par LXC se trouvent dans le dossier /var/lib/lxc/ dans le but de simplifier leur gestion plus tard (sauvegarde, migration, ...) ils sont déplacé dans un dossier dédié en dehors du système.
Bien sûr cela implique de créer ce dossier ensuite:
mkdir -p /data/lxc
Configuration par defaut de LXC
Editer le fichier /etc/lxc/default.conf pour indiquer d'utiliser le bridge interne par défaut et d'utiliser un profile unconfined pour AppArmor.
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.apparmor.profile = unconfined
lxc.apparmor.allow_nesting = 1
A l'heure actuelle AppArmor dans un conteneur non privilégié semble ne pas vouloir fonctionner sous Debian. Le fix conseiller pour le moment est donc de le définir à "unconfined".
J'admets ne pas encore connaître les implication de ce changement. J'éditerais cette partie quand je le saurais ou si le problème est reglé et permet de revenir au profil "generated" par défaut.