• Qui suis-je ?
  • Compétences
  • Projets
  • Expérience
// Projets

Docker Crossarch

Build automatisé d'images cross-architecture

Marvin ROGER
Marvin ROGER
Image d'illustration

Lorsque j'ai domotisé mon logement, j'ai eu recours à de l'embarqué, notamment un Raspberry Pi. J'ai voulu cloisonner mes applications à l'aide de Docker, pour une meilleure isolation de mes composants, la sécurité étant en effet primordiale quand il s'agit de domotiser son logement, son cocon.

Une histoire d'architecture

Mais, le processeur du Raspberry Pi n'est pas d'une architecture amd64, comme nos PC de bureau. Ils tournent sur du armhf, et les jeux d'instructions entre ces processeurs ne sont évidemment pas compatibles. Les images Docker « classiques » ne tournaient donc pas sur Raspberry Pi.

J'ai donc créé le projet Docker Crossarch, disponible sur GitHub. Docker Crossarch crée, à partir d'un Dockerfile unique, des images Docker spécifiques à chaque architecture. Ces images peuvent tourner sur leur architecture respective, mais peuvent être également émulées sur d'autres architectures grâce à un binaire QEMU statique inclus au sein de chaque image. Grâce à cela, toutes les images peuvent être compilées sur un amd64, et elles sont aujourd'hui compilées quotidiennement via GitHub Actions et publiées sur Docker Hub. Les images sont également taguées selon leur schéma de versioning : par exemple, une application respectant le semver sera taguée, si elle est en version 1.2.3, 1, 1.2, et 1.2.3.

Aujourd'hui

Ce système a bien fonctionné pour moi, mon workflow de développement et de production s'étant grandement amélioré, et j'ai eu des retours favorables de personnes étant dans le même cas que moi.

Aujourd'hui, les images Docker officielles sont, dans la mesure du possible, publiées sous différentes architectures, grâce aux Docker Manifests. Le projet, par conséquent un peu moins utile, n'est pas devenu inutile pour autant, puisque beaucoup de projets n'ont pas d'images officielles. Ces projets peuvent donc bénéficier de Docker Crossarch, et je l'ai mis à jour pour qu'il se conforme au même mécanisme, les Docker Manifests.

Envie de discuter ?

Vous pouvez me contacter par e-mail à bonjour+web@marvinroger.fr.
Vous trouverez également mon numéro de téléphone sur mon C.V.