27 points par GN⁺ 2024-03-08 | 2 commentaires | Partager sur WhatsApp
  • Un outil qui compile des images Docker en binaires autonomes et portables
  • Permet de fournir aux utilisateurs des binaires exécutables sans avoir besoin de commandes comme docker run, pip install ou npm i

Caractéristiques

  • Compile des images Docker en binaires portables.
  • Conteneurs ne nécessitant pas de privilèges root.
  • Support de MacOS et Windows (via QEMU) : prévu
  • Support de x86_64 (support arm64 prévu)
  • Prise en charge des arguments
  • Prise en charge de la définition de variables d’environnement avec -e.
  • Prise en charge de la définition de volumes avec -v.

Utilisation

  • Installer dockerc depuis la dernière release.
  • Générer un binaire de sortie à partir d’une image de Docker Hub ou d’une image du registre local du démon Docker.
  • Le binaire généré peut être invoqué comme un binaire classique.
  • Les options -e et -v peuvent être spécifiées de la même manière qu’avec docker run.
  • Accès direct possible aux services réseau exécutés dans le conteneur, sans avoir à spécifier -p.
  • Skopeo est utilisé pour le chargement des images ; pour les autres emplacements, voir la documentation correspondante.

L’avis de GN⁺

  • dockerc est un outil qui peut améliorer considérablement l’utilisabilité de Docker en permettant aux utilisateurs d’exécuter des applications sans processus d’installation complexe. Cela peut être particulièrement utile pour les utilisateurs non techniques.
  • La possibilité de compiler des images Docker en binaires simplifie la distribution et le déploiement, ce qui permet aux développeurs et aux administrateurs système de gagner du temps et d’améliorer leur efficacité.
  • Toutefois, pour que cette technologie soit largement adoptée, les questions liées à la sécurité, aux performances et à la compatibilité doivent être suffisamment résolues. Par exemple, il faut vérifier si le binaire compilé est aussi sûr que l’image Docker d’origine et s’il fonctionne correctement sur tous les systèmes.
  • Parmi les autres projets offrant des fonctionnalités similaires à Docker, on trouve Podman, qui permet d’exécuter des conteneurs sans privilèges root.
  • Lors de l’adoption de dockerc, il faut prendre en compte son intégration avec les workflows Docker existants, les méthodes de mise à jour et de gestion des images, ainsi que la taille et les performances des binaires compilés. Les avantages de cette technologie sont la simplification du déploiement et la facilité d’utilisation, mais il faut aussi considérer avec attention la surcharge potentielle du processus de compilation et les éventuels problèmes de compatibilité.

2 commentaires

 
cosine20 2024-03-11

Oh, c’est assez intéressant.

 
GN⁺ 2024-03-08

Avis Hacker News

  • C’est vraiment génial.

    • L’utilisateur essaie de rendre son Docker plus facile à distribuer. Pour l’instant, il s’agit d’un simple script Python dans un environnement Python dans un conteneur Docker dans un conteneur QEMU, qui automatise des clics et utilise netcat. Le fichier fait 20 Go, ce qui reste plutôt léger selon les standards modernes.
  • Par le passé, j’ai utilisé et recommandé nix-bundle¹ ou son équivalent officiel, nix bundle².

    • Ces outils permettent d’éviter l’étape consistant à gérer directement des images Docker. C’est particulièrement pratique quand créer une image Docker est difficile, ou quand le procédé relève d’un art oublié.
    • nix bundle peut produire non seulement de gros exécutables, mais aussi des images Docker, des AppImages et quelques autres formats d’images/exécutables.
  • Revenir à des exécutables portables avec un OS intégré, c’est vraiment bien.

    • Cela fait passer le « ça marche sur ma machine » à un tout nouveau niveau d’enfer de résolution de problèmes. Malgré tout, le projet est cool.
  • L’utilisateur attend que les gens commencent à envoyer les Dockerfiles qui génèrent les conteneurs Docker exécutant ce genre de choses.

  • Il y a là une grande ironie cosmique.

    • Juste après la section qui demande un simple exécutable sans rien avoir à compiler ni installer, on trouve immédiatement l’incantation Zig pour compiler ce projet.
  • C’est une belle avancée, Nils ! Ravi de voir les progrès du projet depuis notre discussion à AGI House.

    • dockerc utilise Zig + crun + squashfs/overlayfs. Nils (l’auteur) a partagé plus d’informations dans ce fil.
  • Il faut encore des éléments différents pour d’autres architectures.

    • À ce stade, il vaudrait mieux compiler statiquement et embarquer un système de fichiers virtuel. C’est en fait pratiquement la même chose que ce que Sun avait fait dans les années 90.
  • Bonne idée ! Comment cela fonctionne-t-il concrètement ?

    • L’utilisateur suppose qu’il s’agit d’un chargeur personnalisé + Docker + une image empaquetés dans un binaire exécutable.
  • C’est sympa d’avoir utilisé le dessin de la BD de Rant.

    • Le prochain dessin de Rant dira probablement : « lancer un exécutable devrait ouvrir une fenêtre contenant l’application correspondante ».
  • Qu’est-ce que cela veut dire ? Cela permettrait aux utilisateurs de distribuer un exécutable Ruby portable sans que l’utilisateur ait à installer Ruby ?