LXC : Déployer un premier conteneur

Rédigé par Alexandre le 20/10/2020

#auto-hébergement #debian #loisir

Cet article documente le déploiement d'un conteneur en partant du modèle précédemment créé.

Suivre cet article ne permet pas de déployer des services, mais d'obtenir un conteneur pré-configuré comme le modèle et donc prêt à accueillir des services. La partie services du projet Chaos ne rappellera pas forcément l'ensemble des étapes énoncées ici.

Déploiement

Définir le nom du nouveau conteneur :

target="nouveau"

Copier le modèle :

lxc copy modele-buster $target

Démarrer le nouveau conteneur :

lxc start $target

Configuration post-déploiement

Réseau

Changer l'adresse IPv4 :

lxc exec $target -- sed -i "s/192.168.3.189/192.168.3.1/g" /etc/systemd/network/2-eth0.network

Changer l'adresse IPv6 :

lxc exec $target -- sed -i "s/2001:41d0:8:4dc4::3189/2001:41d0:8:4dc4::3001/g" /etc/systemd/network/3-eth1.network

SSH

Réinitialiser le serveur SSH :

lxc exec $target -- rm /etc/ssh/ssh_host_* && \
lxc exec $target -- rm /etc/ssh/moduli && \
lxc exec $target -- dpkg-reconfigure openssh-server

Historique

Vider l'historique de commande :

lxc exec $target -- rm /root/.bash_history && \
lxc exec $target -- rm /home/ct/.bash_history

Option du conteneur

Chacune des commandes ci-après sont optionnelles, elles sont regroupées ici afin de faciliter leur application.

Modifier la mémoire vive

lxc config set $target limits.memory 2GB

Modifier la taille du disque

lxc config device override $target root
lxc config device set $target root size=3GB

Démarrage automatique

lxc config set $target boot.autostart true

Ordre de démarrage

La valeur de boot.autostart.priority est totalement arbitraire, mais j'ai choisi de me mettre sur une échelle de 100 afin de faciliter la lecture. Une valeur haute (100) sera prioritaire sur une valeur plus basse (99).

lxc config set $target boot.autostart.priority 50

Mode privilégié

Activer ce mode permet de supprimer en grande partie l'isolation entre l'hôte et les conteneurs. Il est donc vivement déconseillé d'utiliser ce mode et préférer le mode imbriqué.

lxc config set $target security.privileged true

Mode imbriqué

Ce mode permet de contourner certains problèmes liés à apparmor sans pour autant compromettre la sécurité. N'utiliser ce mode que si le conteneur ne démarre pas correctement. Si cela ne résout pas le problème, désactiver ce mode avant d'essayer le mode privilégié.

lxc config set $target security.nesting true

Disque secondaire

Ajouter un second disque au conteneur (exclus des snapshots et export) :

lxc storage volume create local "${target}-data"
lxc config device add $target "${target}-data" disk source="${target}-data" pool=local path=/mnt/data

Terminer

Redémarrer simplement le conteneur :

lxc restart $target