LXC : Déployer un premier conteneur
Rédigé par Alexandre le 2020-10-20
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