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. Con Buildah puoi utilizzare i tuoi strumenti preferiti per creare immagini dei container efficienti a partire da un'immagine di base esistente oppure da un'immagine vuota. È un metodo più flessibile e sicuro per creare immagini dei container. 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 in 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 a essere usati e rimanere in funzione per periodi di tempo più lunghi. I container di Buildah sono associati a finalità a breve termine, mentre i container di Podman riguardano il lungo periodo.
Ancora una cosa. Buildah e Podman non condividono le rappresentazioni interne dei container, quindi i container presenti in uno non sono visibili nell'altro, ma condividono le rappresentazioni interne delle immagini dei container, in modo che queste ultime possano essere create, modificate o estratte da una di esse ed essere visualizzate e utilizzate nell'altra.
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. Come Podman e Skopeo, Buildah è utile a chi lavora con i container Linux: con l'upgrade di Red Hat Enterprise Linux puoi trarre il massimo vantaggio da tutti questi strumenti. 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.