Quitter Github, un mode d'emploi?

Pour sortir complètement de Github, il me faudrait un registry open
source, l’idéal ça serait de mettre quelque chose en commun,
peut-être qu’il existe déjà quelque chose ?

Le repo sur lequel j’ai mis en place tout ça :
https://framagit.org/colibris-xyz/benevalibre-docker
Le but est de faire un conteneur docker from scratch? Ou de référencer
des conteneurs de base de confiance? Ou les deux?

Debian produit ses images de base pour certains fournisseurs de
serveurs virtuels[1][2]. Je trouve plus le lien qui explique comment
re-créer les images « cloud » (avec FAI) mais pour docker c’est bien
documenté en tout cas.

Avec Guix on peut créer des images docker assez facilement. Il suffit
de suivre la documentation pour créer une image[3] et juste de lui dire
que c’est pour docker avec:

guix system image -t docker system.scm
Avec le même fichier system.scm on peut aussi faire des VM pour
qemu-kvm, et d’autres systèmes (comme des trucs pour clusters).
Par contre y’a encore des systèmes comme lxc qui sont pas supportés.

Parbola à aussi des scripts pour créer des images pour qemu-kvm[4].

Sinon y’a un projet qui s’appelle mkosi qui permet de faire des images
d’OS (ça utilise debootstrap, pacstrap, etc), mais je sait pas si ça
supporte docker.

Mais tout ça c’est juste pour créer des images.

Et à chaque fois ça dépend de la distribution (sauf pour Guix qui peut
être installé par dessus une autre distribution, y’a peut être aussi
des trucs dans Nix/NixOS pour ça aussi mais ça à l’air plus compliqué à
utiliser).

Et même mkosi ne supporte pas tout car pas toutes les distributions
vont upstreamer le support dans debootstrap par exemple, donc tu peux
pas tout installer partout. Et faut aussi avoir pacstrap pour installer
Arch/Manjaro/Parabola, etc.

Donc une idée serait de directement utiliser les images (docker
par exemple) fournies par les distributions. Gnome-box fait déjà un
truc comme ça: gnome-box va directement télécharger les iso chez les
distributions en question. Du coup y’a pas à faire confiance à une
entreprise comme avec dockerhub. Gnome-box utilise sans doute libosinfo
pour ça (et pour configurer libvirt aussi).

Et la une fois qu’il y’a une distribution supportée, n’importe quelle
autre distribution pourrait créer des images docker de base officielles
et rajouterait le support dans libosinfo, et du coup ça serait
directement utilisable par n’importe qui.

Sinon Source Hut à déjà un truc clef en mains (qui ne nécessite pas les
autre parties de Source Hut) pour faire tourner des tests dans pas mal
de distributions et OS différents[5], mais la ça utilise carrément des
VMs qemu-kvm[6]. Et la les images sont sans doute customisées pour
Source Hut[7] (donc pas réutilisables partout).

Sinon y’a aussi moyen de faire tourner le runner gitlab sur ton
propre ordinateur[8], mais je sait pas si ça marche pour tout le monde
ni quels sont les compromis qui ont été faits (qui produit les images,
si tu peux utiliser tes propres images, si ça dépend d’ubuntu ou pas,
etc).

Donc l’idéal serait vraiment d’avoir un support pour docker par exemple
dans libosinfo et que les distributions publient des conteneurs docker
de base et de faire en sorte de réutiliser ça (avec du caching quand
même), et par exemple d’arriver à réutiliser ça avec des fichiers
dockers on dans une forge.

Pour les forges, un conteneur pourrait être transformé en un autre (par
exemple ajout du support python) en faisant tourner des commandes
dedans et mise en cache et utilisable pour un projet python qui lui
rajouterait les dépendances en plus. Si le serveur qui produit les
conteneurs docker modifiés utilise btrfs ou xfs une copie est ultra
rapide avec cp --reflink, du coup le caching n’est pas forcément un
gros soucis.

Le plus compliqué est sans doute de voir comment réutiliser libosinfo
pour avoir des conteneurs qui marchent avec des dockerfiles, mais après
je sait pas comment les dockerfiles marchent, donc c’est peut être
simple, je sait pas.

Références:

La question est aussi de savoir qui à le contrôle de ces conteneurs.

Par exemple avec dockerhub il y’a une entreprise entre les gens qui
utilisent les conteneurs et les gens qui les produisent.

Donc c’est pas pareil que si c’était produit et hébergé par une
distribution GNU/Linux directement, auquel on fait (ou pas) confiance de
toute façon: il n’y à pas les mêmes règles, priorités, risques
entre une entreprise qui gère dockerhub et une distribution classique
(qu’on choisit directement, et ou tout ça dépend uniquement de la
distribution).

Du coup si on veut faire tourner un système de conteneur on à vite le
un problème de contrôle si on fait pas les conteneurs nous même.

C’est pour ça que j’ai suggéré d’utiliser Guix dans un mail/post
précédent: ça reste simple à faire soit même, et ça marche maintenant,
sur quasi toutes les distributions GNU/Linux, HURD et peut être
WSL2, mais ça marche pas sur les autres OS (BSD, OSX, etc).

Et si on veut un système comme dockerhub, idéalement (pour que ce soit
pas trop cher en ressources ou compliqué techniquement) ce serait
plutôt en fait aux distributions de faire des conteneurs de base qu’on
arriverait à réutiliser, soit sur nos ordinateurs (« gratuit », en
fait payé par la facture d’électricité, l’achat de l’ordinateur, etc),
soit dans des forges (payé d’une manière ou d’une autre: dons au projet
libre convertis en souscription au chaton, etc).

Et la je pense que ça peut valoir le coup de mettre en place un système
pour faire ça. Ça peut se faire en envoyant des patches à certains
projets libres et en faisant en sorte de produire des images de
conteneurs lors des releases de la distribution auquel on contribue. Vu
que Debian produit et héberge déjà des images cloud officielles, c’est
pas impossible à faire. Il faut juste des gens qui veulent contribuer à
faire un truc du genre et qui ont un peu de temps.

Denis.

1 « J'aime »

Le plus compliqué est sans doute de voir comment réutiliser libosinfo
pour avoir des conteneurs qui marchent avec des dockerfiles, mais
après je sait pas comment les dockerfiles marchent, donc c’est peut
être simple, je sait pas.
En regardant dans libosinfo pour d’autres raisons, j’ai trouvé ça dans
ci/containers/fedora-35.Dockerfile:

THIS FILE WAS AUTO-GENERATED

$ lcitool manifest ci/manifest.yml

https://gitlab.com/libvirt/libvirt-ci

FROM registry.fedoraproject.org/fedora:35
[…]

Donc apparemment une distribution (ici Fedora) à son propre registry
docker. Donc peut être que la manière de faire serait d’avoir un
service de registry par distribution.

Par contre ça demande sans doute plus d’infrastructure et de maintenance
que de juste faire une release d’un conteneur en plus lors des releases
des distribution et de coder un truc pour pouvoir récupérer ça (et
idéalement de le mettre à jour en passant) de façon transparente.

Denis.