"Docker, Docker, Docker ” questo è ciò che abbiamo usato fino a poco tempo fa.
Docker è ancora molto popolare, senza dubbio. Ma come sappiamo nel settore IT, l'evoluzione avviene rapidamente. Quindi ora ascolteremo Buildah, Podman, CRI-O, Skopeo .
Se vuoi metterti in relazione con un'analogia, abbiamo vari tipi di bacche come bacche nere, mirtilli, lamponi ma un giorno qualcuno decide di scegliere i mirtilli. Quindi, tra Buildah, Podman, CRI-O Ho deciso di scegliere buildah. Come mai? Perché è interessante quanto altre piattaforme container.
Entriamo in Buildah!
Cos'è Buildah?
Buildah è uno strumento da riga di comando per creare immagini OCI (Open Container Initiative). Può essere utilizzato con Docker, Podman, Kubernetes, qualunque sia il tuo strumento contenitore preferito!
Buildah viene utilizzato per creare, creare, gestire ed eseguire immagini di contenitori e contenitori.
Con Buildah crei un contenitore funzionante da un'immagine o da zero, puoi anche creare un'immagine da un contenitore funzionante o usando Dockerfile. Puoi creare le immagini in formato OCI o nel formato Docker a monte. Puoi modificare ed eliminare contenitori e immagini.
La cosa più interessante di Buildah è che non ha bisogno di un demone per funzionare. Quindi dì no a #bigfatdaemons. Non avere un demone in particolare dà scintille quando si tratta di integrazione continua e consegna continua per creare container.
Nessun demone significa anche che puoi eliminare il demone Docker di Buildah per creare immagini di container. Ma ciò non significa che Buildah non possa incorporare Docker. Perché usando Dockerfile puoi creare, gestire ed eseguire la tua immagine del contenitore da Buildah. Impressionante vero?
Installazione di Buildah su Linux
Vediamo come sporcarsi le mani con Buildah. I pacchetti per Buildah sono disponibili per Fedora e CentOS. Puoi installarli facilmente usando il gestore di pacchetti della tua distribuzione Linux. Elencherò qui alcuni di quelli comuni:
Per installare Buildah su Fedora, usa
dnf install buildah -y
Per installare Buildah su CentOS o RedHat:
yum install buildah -y
Per installare Buildah su Ubuntu e Debian, puoi utilizzare il PPA ufficiale fornito da Project Atomic.
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:projectatomic/ppa
sudo apt install buildah
Una volta installato Buildah, è il momento di giocarci.
Comandi di base per usare Buildah
Ecco alcuni comandi di base per iniziare con buildah.
Per conoscere la versione di Buildah.
buildah --version
Il compito iniziale è estrarre l'immagine del contenitore da repository pubblici o privati. Per estrarre l'immagine buildah usa la variabile "da". La variabile 'from' è la stessa usata in Dockerfile. La differenza è che in Docker specifichiamo la variabile 'da' in Dockerfile, dove in Buildah stiamo passando la variabile tramite riga di comando.
buildah from ubuntu
Nel comando sopra Ubuntu è la mia immagine del contenitore. Dopo aver estratto con successo l'immagine basata su Ubuntu alla fine dell'output vedrai:"ubuntu-working-container".
Dopo aver saputo di aver estratto l'immagine con successo, ora potresti voler vedere l'elenco delle immagini che hai estratto. Ma prima ti starai chiedendo "dove vengono archiviate queste immagini?". L'immagine estratta viene archiviata sull'host stesso.
buildah images
IMAGE NAME IMAGE TAG IMAGE ID CREATED AT SIZE
docker.io/library/ubuntu latest 94e814e2efa8 Mar 12, 2019 00:20 91.4 MB
docker.io/library/fedora latest d09302f77cfc Mar 12, 2019 00:20 283 MB
Se hai già familiarità con i comandi Docker, potresti aver notato le somiglianze nei comandi Docker e Buildah. Ad esempio, in Docker per vedere l'elenco delle immagini estratte utilizziamo il comando "immagini docker".
Ecco il comando per vedere l'elenco dei container in esecuzione. In Buildah non appena l'estrazione dell'immagine del contenitore è stata completata, il contenitore inizia a essere eseguito. Se confrontiamo Docker, dopo aver estratto l'immagine, dobbiamo eseguire l'immagine usando "docker run" e quindi solo il container inizia a funzionare.
CONTAINER ID BUILDER IMAGE ID IMAGE NAME CONTAINER NAME
1063320d2dc0 * 94e814e2efa8 docker.io/library/ubuntu:latest ubuntu-working-container
978a399e0aa7 * d09302f77cfc docker.io/library/fedora:latest fedora-working-container
Se si desidera ripulire e rimuovere tutti i contenitori in esecuzione, eseguire il comando seguente con cautela. Perché una volta eseguito il comando, i tuoi contenitori verranno rimossi. Il privilegio che otteniamo in buildah su Docker è che Docker non ci consente di rimuovere il contenitore in esecuzione ma Buildah lo fa. Durante l'utilizzo di Docker prima dobbiamo fermare il contenitore e quindi solo noi possiamo rimuovere l'immagine.
buildah rm --all
Se sei bloccato con qualche comando, c'è l'opzione –help.
buildah --help
Vediamo alcuni casi d'uso di Buildah, per iniziare con l'implementazione pratica inizieremo con semplice. E una volta trovato il ritmo con Buildah, puoi dare sfogo alla tua creatività e fare cose interessanti.
Creazione di un'immagine del contenitore del server Web Apache [Hands On]
Proviamo quello che hai appena imparato con un progetto Buildah di esempio.
Cosa pensi di cosa sarà necessario per avere un server Web Apache in esecuzione all'interno di un container?
Naturalmente, un'immagine, un contenitore in esecuzione e cos'altro? Bene, la cosa principale di cui avremo bisogno è:abbiamo bisogno di installare un pacchetto httpd all'interno di un contenitore. Oh! Come lo facciamo? Nessun problema. Te lo dico io.
Per prima cosa estraiamo un'immagine di distribuzione Linux. Scegli quello che preferisci. Ho estratto l'immagine di base di CentOS.
buildah from centos
Ora installa httpd all'interno del contenitore CentOS. Puoi farlo usando questo comando:
buildah run centos-working-container yum install httpd -y
Vedrai un output come questo.
Quello che abbiamo fatto è stato installare il pacchetto httpd senza nemmeno entrare nel contenitore. È come allestire le parti della tua bici senza nemmeno entrare in garage. Puoi vedere nell'output del comando sopra, il pacchetto è stato installato di fronte a noi. Buildah non barare 😉
Ora creiamo un file index.html personalizzato.
echo "Linux Handbook is interesting !" > index.html
Copia il tuo file personalizzato index.html nel percorso della directory /var/www/html
buildah copy centos-working-container index.html /var/www/html/index.html
4e955fea0268518cbaa500409dfbec88f0ecebad28d84ecbe250baed97dba889
Ti starai chiedendo da dove viene /var/www/html? E perché abbiamo copiato il file index.html in quel percorso di directory?
Quando installiamo il pacchetto httpd, viene creata la directory /var/www/html. /var/www/html
è solo la cartella principale predefinita del server web.
Per avviare il container, dobbiamo configurare entrypoint per il contenitore.
buildah config --entrypoint "/usr/sbin/httpd -DFOREGROUND" centos-working-container
L'opzione "-DFOREGROUND" viene utilizzata insieme a "/usr/sbin/httpd" per avviare httpd. Quello che fa "-DFOREGROUND" è che esegue il processo httpd/apache in primo piano invece se in background. Il vantaggio del processo httpd NON in esecuzione in background è che puoi vedere i log di debug sulla console. Se non utilizziamo l'opzione "-DFOREGROUND", il server Apache si avvierà e subito dopo verrà arrestato.
Ora, dobbiamo salvare tutto ciò che abbiamo fatto all'interno del contenitore. L'impegno lo farà per noi.
buildah commit centos-working-container Linux-Handbook
L'immagine di Linux-Handbook è disponibile ed è possibile eseguire il push di questa immagine nel registro per utilizzarla.
buildah images
IMAGE ID IMAGE NAME CREATED
AT SIZE
9110ae7f579f docker.io/library/centos:latest
Mar 31, 2019 14:36 234.7 MB
49bd5ec5be71 docker.io/library/Linux-Handbook:latest
Apr 4, 2019 17:28 427.7 MB
Allora, tutto pronto per sporcarti le mani con Buildah?
Scritto da Servesha Dudhgaonkar