Buildah è uno strumento open source basato su Linux che permette di creare container compatibili con gli standard Open Container Initiative (OCI), ossia container compatibili sia con Docker che con Kubernetes. Buildah è una soluzione flessibile e sicura con cui gli utenti possono creare immagini dei container a partire da un'immagine di base esistente oppure da un'immagine vuota. In questo articolo approfondiremo il funzionamento di Buildah.
Buildah (alterazione del termine "builder" per riprodurre la pronuncia di Boston) è stato creato nel 2017 dal team guidato da Daniel Walsh a Red Hat. Il progetto prevedeva di realizzare un pacchetto "coreutils" di immagini dei container: una soluzione che si potesse utilizzare con strumenti host di container esistenti per creare immagini dei container compatibili con OCI e Docker. Gli utenti avrebbero poi potuto archiviare tali immagini in registri dei container per utilizzarle in più ambienti di runtime, con o senza l'impiego di un daemon di container, come quello di Docker ad esempio, che richiede privilegi di root e che vincola i container alla funzionalità del daemon stesso.
Da questa idea è nato Buildah, uno strumento a riga di comando che:
- Crea immagini dei container con o senza Dockerfile (un documento di testo che contiene tutti i comandi necessari per assemblare un'immagine)
- Crea immagini dei container a partire da un'immagine di base esistente oppure da un'immagine vuota
- Non include gli strumenti di compilazione all'interno dell'immagine. In questo modo è possibile creare immagini di dimensioni contenute, incrementare la sicurezza e agevolare il trasferimento che richiederà meno risorse
- È compatibile con i Dockerfile e semplifica quindi la transizione da Docker
- Crea immagini ad hoc in modo da permettere all'utente che le ha create di ordinarle facilmente
Perché scegliere Buildah?
La possibilità di creare immagini senza Dockerfile e di integrare altri linguaggi di programmazione nel processo, oltre all'opportunità di utilizzare strumenti di compilazione esterni all'immagine fanno di Buildah uno strumento flessibile ed efficiente, capace di accelerare l'innovazione e favorire l'introduzione di nuove idee. Inoltre, mettendo a disposizione solo gli strumenti e i processi strettamente necessari, snellisce la creazione delle immagini e le future rielaborazioni.
Buildah permette anche di:
- Esaminare, verificare e modificare le immagini
- Inviare i container e le immagini da uno storage locale a un registro o repository pubblico o privato
- Inviare o acquisire le immagini da Docker Hub
- Rimuovere le immagini dei container archiviate in locale
- Montare o smontare il file system root di un container in funzione
- Utilizzare i contenuti aggiornati del file system root di un container come punto di partenza per una nuova immagine
Buildah e Podman
Buildah e Podman sono entrambi progetti open source complementari che attraverso uno strumento a riga di comando permettono di creare e lavorare con i container e le immagini compatibili con OCI. È nato prima Buildah e Podman, un progetto sviluppato solo in seguito, utilizza il suo codice per la compilazione. In generale i comandi di Buildah sono molto più precisi di quelli di Podman, offrono quindi un controllo più capillare sulle immagini e permettono di creare livelli di immagine più accurati, mentre il comando "build" di Podman comprende solo una parte delle funzionalità di Buildah.
Buildah è particolarmente adatto alla creazione di immagini dei container: ripete tutti i comandi presenti in un Dockerfile senza bisogno del componente socket daemon. Podman invece è più indicato per le attività di gestione e modifica delle immagini in un container. Con Podman è possibile creare un container (prendendo da Buildah l'immagine) ed eseguirlo, gestirlo e modificarlo in un ambiente di produzione attraverso un'interfaccia a riga di comando (CLI) familiare (nella CLI di Podman si possono eseguire tutti i comandi della CLI di Docker).
Un altro aspetto che distingue Podman da Buildah è lo scopo per cui vengono utilizzati i container: i container di Buildah hanno un carattere provvisorio, sono creati principalmente per consentire il trasferimento dei contenuti all'immagine del container appena creata. I container realizzati con Podman invece sono destinati ad essere usati e rimanere in funzione per periodi di tempo più lunghi.
Infine, è bene tenere presente che Buildah e Podman non condividono le rappresentazioni interne dei container, quindi un container creato con uno dei due strumenti non è visibile nell'altro. Tuttavia, condividono le rappresentazioni interne delle immagini dei container. Questo significa che le immagini dei container create, modificate o estratte da uno dei due strumenti sono visibili e si possono utilizzare anche nell'altro.
Perché scegliere Red Hat?
Buildah è nato dalla collaborazione degli ingegneri e degli sviluppatori di Red Hat, che puntavano a realizzare uno strumento capace di accelerare i tempi di creazione delle immagini e dei container e di aumentare la produttività dei team. Buildah è uno strumento prezioso per chiunque lavori con i container Linux e, quando si tratta di container e Kubernetes, Red Hat si contraddistingue per l'ampia gamma di soluzioni adatte a sostenere qualunque iniziativa, dal sistema operativo all'automazione.
Red Hat conta su un'ampia esperienza in ambito container e Kubernetes e offre tutti i prodotti e i servizi necessari alla progettazione e alla realizzazione di una strategia di container adatta alla tua azienda.Che si tratti offrire ai team di sviluppo una piattaforma studiata per i container, di mettere a disposizione uno dei migliori sistemi operativi per l'esecuzione delle infrastrutture di container o di fornire soluzioni di storage capaci di gestire i grandi volumi di dati generati dai container, Red Hat ha la soluzione giusta per ogni esigenza.