Builder des images avec Buildkit avec Podman
Travaillant sur la transformation d’une application pour la rendre cloud native
, je me suis intéressé à podman. Pourquoi ? Tout simplement car
podman intègre un système de pod. Cela devrait permettre une transition
en douceur vers kubernetes. D’ailleurs il est capable de lire les fichiers
yaml de kubernetes.
Ce n’est pas le sujet de ce billet qui lui explique comment utiliser buildkit avec Podman.
Installation de Podman et Buildkit
Si docker tourne sur votre machine, il faudra le désinstaller. Podman est le système de container par défaut sur les distribution à base de Redhat.
sudo dnf remove -y docker-cesudo dnf install -y podmanpodman run alpine:latest uname -aLinux d0fb3e421dba 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 20:49:28 UTC 2021 x86_64 Linux
Passons à l’installation de buildkit :
wget https://github.com/moby/buildkit/releases/download/v0.9.3/buildkit-v0.9.3.linux-amd64.tar.gztar xvfz buildkit-v0.9.3.linux-amd64.tar.gz bin/buildctlsudo install bin/buildctl /usr/local/binrm -r bin
Utilisation de buildkit en mode Standalone
Tout est prêt lançons la construction d’une image avec buildkit. il faut dans un premier temps lancer un container buildkit :
podman run -d --name buildkitd --privileged docker.io/moby/buildkit:latest
Ensuite pour lancer la construction de l’image et l’exporter vers un tarfile
avec un simple Dockerfile avec du Here-Documents
:
FROM oraclelinux:8
RUN <<EOF dnf update dnf install python39 -yEOF
buildctl --addr=podman-container://buildkitd build --frontend dockerfile.v0 --local context=./ --local dockerfile=./ --output type=tar >image.tarfile image.tar х INT Py system Ruby 2.7.2 vagrant@devbox 14:19:48image.tar: POSIX tar archive
Importation de l’image dans podman
Il suffit simplement d’ajouter la commande podman import en respectant le format du nom suivant localhost/nom-container:tag :
buildctl --addr=podman-container://buildkitd build --frontend dockerfile.v0 --local context=./ --local dockerfile=./ --output type=tar | podman import - localhost/test:0.1podman imagesREPOSITORY TAG IMAGE ID CREATED SIZElocalhost/test 0.1 120f7c659ed4 31 minutes ago 424 MB
podman run localhost/test:0.1 uname -aLinux 34fd8f70c480 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 20:49:28 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Pour rappel buildkit peut produire des images à destination de plusieurs archis en une seule commande et de garder vos secrets au chaud