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

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

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

Article

What's a Linux container?

A Linux container is a set of processes isolated from the system, running from a distinct image that provides all the files necessary to support the processes.

Article

Containers vs VMs

Linux containers and virtual machines (VMs) are packaged computing environments that combine various IT components and isolate them from the rest of the system.

Article

What is container orchestration?

Container orchestration automates the deployment, management, scaling, and networking of containers.

Scopri di più sui container

Prodotti

Una piattaforma container enterprise-ready basata su Kubernetes, che consente di automatizzare le operazioni nell'intero stack tecnologico per gestire deployment di cloud ibrido, multicloud e all'edge.

Risorse

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

Illustration - mail

Ricevi contenuti simili

Iscriviti a Red Hat Shares, la nostra newsletter gratuita.