URL: https://linuxfr.org/news/podman-et-docker-dans-cloonix Title: Podman et Docker dans cloonix Authors: clownix Ysabeau đ§¶, Pierre Jarillon et palm123 Date: 2022ćčŽ12æ30æ„T09:54:25+01:00 License: CC By-SA Tags: podman, docker et cloonix Score: 20 Cloonix est un logiciel de virtualisation basĂ© principalement sur openvswitch dont le but est de faciliter la construction graphique dâun rĂ©seau virtuel avec visualisation de la topologie et interaction par [[IHM]] graphique sur cette topologie. Lors de lâune des derniĂšres dĂ©pĂȘches de titre « Cloonix et les conteneurs » du 17/01/22, je vous ai parlĂ© du nouvel objectif dâamĂ©lioration de cloonix, commencĂ© en fin 2021 : lâintĂ©gration de la techno des conteneurs dans cloonix. En vue dâatteindre ce but et dâen comprendre les mĂ©canismes internes, il fallait commencer par intĂ©grer dans cloonix la techno de base des conteneurs, et pour cela en premier lieu trouver le bout de code le plus lĂ©ger ou encore le plus dĂ©pouillĂ© qui soit capable de faire tourner un conteneur. ---- [cloonix](http://clownix.net) [git cloonix](https://github.com/clownix/cloonix) ---- Pour Docker, la brique de base la plus proche des fondations dont lâaction se limite Ă faire tourner un conteneur se nomme gĂ©nĂ©riquement « low level runtime » et le nom de son implĂ©mentation est « runc ». Il sâavĂšre que runc nâest pas en C et comme cloonix est en C et nâutilise que des open sources en C, jâai prĂ©fĂ©rĂ© chercher un « low level runtime » de mĂȘme fonctionnalitĂ© que runc mais en C. Câest ainsi que je suis tombĂ© sur crun qui est exactement cela. Une fois que crun a tournĂ© correctement dans cloonix, autour du mois dâoctobre 2022, il Ă©tait logique de commencer Ă sâattaquer Ă des plus grands noms dans le domaine des conteneurs. Le code de cloonix supportant crun prend en charge trois blocs fonctionnels qui transforment crun en conteneur : 1. gĂ©nĂ©ration dâun fichier de configuration suivant le format OCI (Open Container Initiative), 1. gestion des montages permettant Ă crun dâavoir un systĂšme de fichier racine Ă partir dâune image et, 3. crĂ©ation des interfaces ethernet fournies au conteneur, ces interfaces Ă©tant ensuite gĂ©rĂ©es par lâopenvswitch intĂ©grĂ© Ă cloonix. Pour ce qui est de Docker/Podman, le fichier de configuration OCI et les montages des images sont dĂ©jĂ gĂ©rĂ©s par Docker/Podman, la prise en charge par cloonix de Docker/Podman se limite donc Ă assurer la gestion des interfaces ethernets, pour cela, le code dĂ©jĂ construit pour crun a Ă©tĂ© tout Ă fait adaptĂ© pour gĂ©rer aussi les 2 autres types de conteneurs. Profitons de cette dĂ©pĂȘche pour donner un aperçu de cette gestion des interfaces ethernets dans le cas des conteneurs. Cloonix nâest guĂšre quâun configurateur Ă©voluĂ© qui utilise la richesse apportĂ©e par lâĂ©cosystĂšme de lâopen-source et qui tire profit principalement dâopenvswitch. Cloonix est lancĂ© avec un nom de rĂ©seau, openvswitch utilise ce nom comme « net namespace », câest-Ă -dire que le logiciel openvswitch est plongĂ© dans un espace rĂ©seau privĂ©. Quand il faut crĂ©er les interfaces dâun conteneur, la premiĂšre Ă©tape est la crĂ©ation par une commande Linux dâune paire de ports dans le systĂšme, voila la commande pour faire deux interfaces pairĂ©es « ip link add name paire1 type veth peer paire2 ». Cette commande Ă©tant effectuĂ©e, un paquet Ethernet Ă©mis dans paire1 est reçu par paire2 et rĂ©ciproquement. En seconde Ă©tape, paire1 est plongĂ©e dans lâespace privĂ© rĂ©seau dâopenvswitch et paire2 est plongĂ©e dans lâespace privĂ© rĂ©seau du conteneur, ces plongeons dans diffĂ©rents espaces nâaffectent pas le passage dâun paquet Ethernet dâune paire vers lâautre, câest un « trou de ver » entre deux univers. En troisiĂšme Ă©tape, quand lâutilisateur veut connecter lâinterface du conteneur, cloonix demande Ă openvswitch de le faire Ă travers un bridge de son espace rĂ©seau privĂ©, câest ainsi que la magie dâopenvswitch peut se faire. Pour terminer, quelques chiffres de performance mesurĂ©es par iperf3 sur un Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz : kvm Ă kvm : 20 Gigabits/seconde et conteneur Ă conteneur: 50 Gigabits/seconde.