Vai al paragrafo

Cos'è Buildah?

Copia URL

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

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 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.  

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.

Keep reading

ARTICOLO

Container e VM

I container Linux e le macchine virtuali (VM) sono entrambi pacchetti di ambienti di elaborazione che combinano vari componenti IT e li isolano dal resto del sistema.

ARTICOLO

Cos'è l'orchestrazione dei container?

Definiamo orchestrazione dei container l'automazione dei processi di deployment, gestione, scalabilità e networking dei container.

ARTICOLO

Cos'è un container Linux?

Un container Linux è un insieme di processi, isolati dal resto del sistema, che esegue un'immagine distinta contenente tutti i file necessari per supportare tali processi.

Scopri di più sui container

Prodotti

Una piattaforma applicativa aziendale che offre servizi verificati per consentire la distribuzione delle app sulle infrastrutture preferite.

Risorse

Checklist

10 considerazioni sui deployment Kubernetes

Checklist

Sei considerazioni per scegliere la piattaforma Kubernetes giusta

Serie Open Answers: Cos'è Red Hat OpenShift?

Formazione

Corso di formazione gratuito

Running Containers with Red Hat Technical Overview

Corso di formazione gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Corso di formazione gratuito

Developing Cloud-Native Applications with Microservices Architectures