Je développe de manière régulière des nouveaux paquets pour Gentoo dans mon
overlay personnel. Il m'est aussi arrivé, une fois, de fixe un paquet qui
marchait mal. Étant donné que c'est souvent très léger, je ne me suis jamais
vraiment investi là-dedans. Cependant, récemment, j'ai voulu reprendre un
paquet qui était à l'abandon et qui a été développé comme un cochon (il a bc
en dépendance, c'est pour dire). Je me voyais mal utiliser mon environnement
actuel pour tester, je rappelle que je développe sur un vieux PC de 2013, et je
voulais aussi repartir de 0 pour voir les dépendances qu'on pouvait enlever
sans soucis. C'est pour ça que j'ai décidé de travailler dans un environnement
conteneurisé avec Linux Containers ou LXC. Je
l'ai préféré plutôt que Docker parce que je n'ai pas
trouvé d'image intéressante de Gentoo chez la baleine et aussi parce que je
voulais découvrir un nouveau logiciel !
Dans cet article, je vais expliquer comment j'ai mis en place mon environnement sur ma tour, qui tourne sous Arch(btw).
Installation et configuration
Il est très simple d'installer LXC sur Arch, via son paquet lxc
. La
configuration est un poil plus pénible cependant. Il faut préparer la connexion
internet avec lxc-net
. Je me suis appuyé sur l'article de
Stanislas à ce
sujet.
On va dans un premier temps démarrer le démon lxc-net
, avant d'activer son
pont et le redémarrer pour qu'il puisse se configurer. Il n'y a pas besoin de
faire plus, le paquet LXC sur Arch contenant déjà la configuration de base pour
utiliser un pont.
sudo systemctl start lxc-net
echo USE_LXC_BRIDGE="true" | sudo tee /etc/default/lxc-net
sudo systemctl restart lxc-net
sudo systemctl start lxc
Je vais revenir sur la mise en place d'Internet dans le conteneur, qui nécessite quelques commandes en plus.
Lancer le conteneur
Pour pouvoir lancer un conteneur, je vais m'appuyer sur un template fourni par LXC et lui passer une arborescence de fichiers pour créer mon conteneur. Je m'appuie sur le wiki de Gentoo pour cette partie.
Il faut en premier mettre un fichier de configuration par défaut, il peut être vide.
touch config
tar -cJf metadata.tar.xz config
Il faut ensuite télécharger le stage 3 de l'installation de Gentoo, contenant une arborescence basique pour pouvoir finir l'installation de Gentoo. Elle servira de base pour notre conteneur.
sudo lxc-create -t local -n gentoo-guest -- --fstree stage3.tar.xz --metadata \
metadata.tar.xz
Et maintenant, on peut démarrer, s'attacher et éteindre notre conteneur !
sudo lxc-start gentoo-guest
sudo lxc-attach gentoo-guest
sudo lxc-stop gentoo-guest
Et pour avoir Internet ?
Notre conteneur ne configure pas de lui-même son adresse IP. Il faut le faire
pour pouvoir faire les mises à jours. On ajoute simplement une IP à l'interface
eth0
ainsi qu'une route. Rien de bien compliqué ! On peut ensuite rajouter un
DNS (ici, celui de la FDN). Il faut aussi mettre à jour le PATH
qui ne
contient pas le dossier bin
, ce qui peut être embêtant pour taper de futurs
commandes.
. /etc/profile
ip a add dev eth0 10.0.3.11/24
ip route append default via 10.0.3.1
echo nameserver 80.67.169.12 > /etc/resolv.conf
Conclusion
En conclusion, LXC est très simple à installer et à prendre en main, mais je me trouve un petit peu restreint avec mon conteneur issu d'une installation à peine finie de Gentoo. J'ai prévu de faire une image un peu plus sécurisée, bien configurée et avec les outils de base tel que Git installés. Sûrement un futur article !