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: