GNU/Linux >> Linux Esercitazione >  >> Linux

Costruisci il tuo container su Linux

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.


Linux
  1. Costruisci la tua tecnologia su Linux

  2. Rendi invernale il tuo prompt Bash in Linux

  3. Aggiungi questi 4 strumenti alla tua cassetta degli attrezzi del contenitore Linux

  4. Come scrivere il tuo modulo del kernel Linux con un semplice esempio

  5. Qual è il vantaggio di compilare il proprio kernel Linux?

Pianifica il tuo calendario delle vacanze dalla riga di comando di Linux

Costruisci il tuo NAS con OpenMediaVault

Come creare la tua distribuzione Linux usando Yocto

Come creare il tuo server VPN IPsec in Linux

Server Freenas NAS fai-da-te - Costruisci il tuo NAS con Freenas

Come creare facilmente la tua distribuzione Linux?