I container vengono eseguiti nel cloud. Questo perché la tecnologia dei container consente ai siti Web e alle app Web di generare nuove copie di se stessi all'aumentare della domanda. Sono la ragione per cui centinaia di milioni di persone possono utilizzare siti popolari senza che questi siti si deformino sotto la pressione del traffico globale. I container sono una tecnologia Linux, il che significa che si basano sul codice (in particolare cgroups
e namespace) univoci per il kernel Linux, quindi quando esegui un container, esegui Linux. Utilizzando le immagini dei container da siti come quay.io e dockerhub.io, la maggior parte delle persone crea nuovi container specifici per la propria applicazione o caso d'uso. Ma questo fa sì che alcune persone si chiedano:se il mio container proviene da uno sviluppatore che si costruisce sopra il container di un altro sviluppatore, da dove vengono quelli da dove provengono i contenitori? Non preoccuparti, non sono le tartarughe fino in fondo. Puoi creare un container da zero e c'è un ottimo strumento open source chiamato Buildah per aiutarti a farlo.
Contenitori Linux
- Cosa sono i container Linux?
- Un'introduzione alla terminologia dei contenitori
- Download:Primer sui contenitori
- Operatori Kubernetes:automatizzare la piattaforma di orchestrazione dei container
- eBook:modelli Kubernetes per la progettazione di app cloud native
- Cos'è Kubernetes?
Specifiche del contenitore
I container sono nati da progetti come contenitori Linux (LXC) e Docker, ed è l'Open Container Initiative (OCI) che mantiene le specifiche formali di cos'è un container. Un container correttamente assemblato che soddisfa la definizione OCI viene eseguito su qualsiasi motore di container conforme a OCI, come Podman, Docker, CRI-O e così via.
Installazione di Buildah
Su Fedora e CentOS, potresti avere già installato Buildah. In caso contrario, puoi installarlo con il tuo gestore di pacchetti:
$ sudo dnf install buildah
Sui sistemi basati su Debian e Debian:
$ sudo apt install buildah
Configurazione di Buildah
Poiché Buildah crea contenitori, la configurazione dell'ambiente per esso è la stessa della configurazione per Podman. Indipendentemente dal fatto che tu stia utilizzando Podman, configura il tuo sistema per podman "rootless" prima di continuare.
Costruire un container dal nulla
Per costruire un container nuovo di zecca, utilizzando il lavoro precedente di nessuno come base, usi il nome speciale scratch
per dire a Buildah che vuoi creare un contenitore vuoto. Il scratch
la designazione non è un nome di immagine. È la tua esenzione dall'utilizzare un'immagine esistente su cui basare il tuo lavoro.
$ buildah from scratch
Questo nuovo container, chiamato working-container
per impostazione predefinita, presenta una piccola quantità di metadati e letteralmente nient'altro, e ora è segretamente in esecuzione in background. Puoi vederlo con i containers
sottocomando:
$ buildah containers
CONTAINER ID BUILDER ID IMAGE NAME CONTAINER NAME
dafc77921c0c * scratch working-container
Per eseguire il contenitore, devi prima utilizzare unshare
sottocomando (a meno che tu non stia eseguendo Buildah come root):
$ buildah unshare
Conferma che il tuo contenitore di lavoro non ha funzionalità (in questo caso è prevista una risposta non riuscita):
$ buildah run working-container sh
ERRO[0000] container_linux.go:349: starting container process caused "exec: \"sh\": executable file not found in $PATH"
Aggiungere al tuo container
Per aggiungere comandi al tuo container, devi prima montarlo. Le immagini del contenitore sono archiviate nel tuo ~/.local
directory per impostazione predefinita:
$ buildah mount working-container
~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged
Con il container montato sul tuo ~/.local
directory (o /var/lib/containers/
nel caso di esecuzione come root), puoi aggiungere pacchetti usando il tuo gestore di pacchetti. Il --releasever
deve corrispondere alla distribuzione in esecuzione durante la creazione del contenitore.
[Fedora]$ sudo dnf install --installroot \
~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged \
--releasever 33 \
bash coreutils \
--setopt install_weak_deps=false -y
Il metodo esatto per aggiungere i pacchetti dipende dalla tua distribuzione e dal gestore di pacchetti che utilizza. Ad esempio, sul mio desktop Slackware, utilizzo installpkg
:
[Slack]$ installpkg --root ~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged \
/tmp/bash-5.0.17-x86_64-1_SMi.txz
Ora puoi eseguire il contenitore e provare qualcosa di semplice, come avviare una shell:
$ buildah run working-container bash
# bash --version
GNU bash, version 5.0.17(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Configurazione del tuo container
La buildah config
subcommand ti dà accesso ad attributi comuni come il comando predefinito che vuoi che il tuo contenitore esegua all'avvio, imposta le variabili di ambiente, imposta la shell predefinita, definisce l'autore, l'architettura e il nome host e molto altro. Ad esempio, immagina di aver aggiunto un pacchetto contenente uno script di shell chiamato motd.sh
e vuoi che venga eseguito all'avvio del contenitore:
$ buildah config --author "Seth Kenlon" \
--os "Slackware" --shell /bin/bash \
--cmd /usr/bin/motd.sh working-container
Distribuire il tuo container
Quando hai finito di costruire il tuo contenitore, puoi conservarlo come immagine usando il commit
sottocomando.
$ buildah commit working-container my_image
Costruiscilo con Buildah
I contenitori a volte sembrano magici, ma non sono magici. Sono costruiti da zero e sono abbastanza flessibili che una volta che esiste un'immagine, altri possono usarla per costruire nuovi contenitori e immagini di contenitori che riempiono una nicchia diversa. Non è necessario ricominciare da zero, ma se sei curioso di sapere come iniziano le immagini o vuoi provare a creare un'immagine specifica per le tue esigenze, Buildah è lo strumento che fa per te.