GNU/Linux >> Linux Esercitazione >  >> Linux

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

Quando hai bisogno dello strumento giusto, non c'è niente come andare al tuo negozio di ferramenta locale e camminare per i corridoi. È fantastico scendere lungo il corridoio degli utensili manuali e controllare tutti i cacciaviti, i martelli, le chiavi esagonali, i metro a nastro e altro ancora. Proprio quando pensi di aver scoperto l'utensile giusto, ti viene in mente un pensiero, se posso farlo con un utensile manuale, posso davvero farlo con l'utensile elettrico perfetto!

Almeno questo è quello che mi dice mia moglie e, vedi, è la persona a portata di mano della nostra famiglia. I miei strumenti preferiti sono strumenti tecnologici. Dammi un corridoio di schede video in un negozio di computer e sarò un campeggiatore felice.

Di recente ho fatto una demo al Podman Community Meeting per mostrare alcuni dei nuovi e più brillanti strumenti container che abbiamo sviluppato per Podman e Buildah. Abbiamo avuto molti grandi annunci con Podman v3.0, quindi ho pensato che alcuni di questi strumenti avrebbero potuto essere oscurati. Dato che ho ricevuto un bel feedback da quella dimostrazione, ho sentito che anche un post di follow-up potrebbe essere utile. Quindi tuffiamoci ed esploriamo questi nuovi scintillanti strumenti contenitore.

Cambia il primo FROM nel tuo Containerfile

C'è un nuovo --from opzione nel buildah bud comando che presto entrerà in Podman v3.0. Questa opzione ti consente di sostituire il valore associato al primo e solo al primo DA istruzione nel file contenitore. Ad esempio, se abbiamo questo Containerfile:

# cat ~/Containerfile.multifrom
FROM fedora as builder
FROM busybox
COPY --from=builder /bin/df /tmp/df_tester

Possiamo fare una corsa iniziale e mostrerà che abbiamo usato il fedora immagine contenitore. Quindi il busybox viene utilizzata l'immagine e infine copiando i file da fedora /bin/df di directory nella busybox /tmp/df_tester delle immagini directory.

# buildah bud -t multi -f ~/Containerfile.multifrom .
STEP 1: FROM fedora AS builder
Resolved "fedora" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob 157ab8011454 done  
Copying config 9f2a560376 done  
Writing manifest to image destination
Storing signatures
--> 9f2a5603764
STEP 2: FROM busybox
Resolved "busybox" as an alias (/root/.config/containers/short-name-aliases.conf)
Getting image source signatures
Copying blob 4c892f00285e done  
Copying config 22667f5368 done  
Writing manifest to image destination
Storing signatures
STEP 3: COPY --from=builder /bin/df /tmp/df_tester
STEP 4: COMMIT multi
Getting image source signatures
Copying blob 6b245f040973 skipped: already exists  
Copying blob 9b68b051b385 done  
Copying config 187c956137 done  
Writing manifest to image destination
Storing signatures
--> 187c9561378
187c9561378efb043dfd0e8fa9c0afbdc0cf2faeb244e0dd7f2003321feab524

Ora immagina una situazione più reale, quella in cui il tuo DA istruzione punta a un'immagine personalizzata con una varietà di tag per diverse versioni dell'immagine. Sarebbe utile, soprattutto in un ambiente CI, passare semplicemente l'immagine del contenitore che si desidera utilizzare nell'esecuzione successiva anziché ricreare l'intero Dockerfile. Questo è il lavoro che --from riempie.

In questo esempio, eseguiremo lo stesso bud command, ma questa volta aggiungeremo --from alpine:latest .

# buildah bud -t multi -f ~/Containerfile.multifrom --from alpine:latest .
STEP 1: FROM alpine:latest AS builder
Resolved "alpine" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob 4c0d98bf9879 done  
Copying config e50c909a8d done  
Writing manifest to image destination
Storing signatures
--> e50c909a8df
STEP 2: FROM busybox
STEP 3: COPY --from=builder /bin/df /tmp/df_tester
STEP 4: COMMIT multi
Getting image source signatures
Copying blob 6b245f040973 skipped: already exists  
Copying blob b498f23d5c32 done  
Copying config d7e92107ed done  
Writing manifest to image destination
Storing signatures
--> d7e92107edf
d7e92107edf42f046f6a7faddade4825ef1c2361ae21eb0ac3694871dcdb496c

Puoi vedere che il alpine:latest l'immagine del contenitore è stata utilizzata per la prima volta e ora dopo la busybox immagine è stata creata, i file da /bin/df di alpine sono stati copiati nel /tmp/df_tester directory su busybox . Il valore del primo DA L'istruzione nel Containerfile è stata sostituita con l'argomento passato con il --from opzione.

[ Potresti anche leggere: Contenitori rootless utilizzando Podman ]

Accetta input durante una build

Un altro nuovo strumento è --stdin opzione che accompagna buildah bud o podman build (a partire da Podman v3.0). Quando utilizzi questa opzione, il processo di compilazione si interrompe e chiede l'input da tastiera se il processo in esecuzione durante la procedura di compilazione lo richiede.

Dai un'occhiata a questo Containerfile:

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

Questo Containerfile usa ubi8 image e quindi installa iputils . Come probabilmente puoi intuire, il yum comando ci chiederà di verificare l'installazione di iputils . Diamo un'occhiata a cosa succede senza --stdin opzione in gioco.

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

# buildah bud -t mystdin -f ~/Containerfile.stdin .
STEP 1: FROM ubi8
Resolved "ubi8" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob d9e72d058dc5 done  
Copying blob cca21acb641a done  
Copying config 3269c37eae done  
Writing manifest to image destination
Storing signatures
STEP 2: RUN yum install iputils
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Red Hat Universal Base Image 8 (RPMs) - BaseOS  2.5 MB/s | 774 kB     00:00    
Red Hat Universal Base Image 8 (RPMs) - AppStre 7.6 MB/s | 5.0 MB     00:00    
Red Hat Universal Base Image 8 (RPMs) - CodeRea  75 kB/s |  13 kB     00:00    
Dependencies resolved.
================================================================================
 Package        Architecture  Version                 Repository           Size
================================================================================
Installing:
 iputils        x86_64        20180629-2.el8          ubi-8-baseos        149 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 149 k
Installed size: 361 k
Is this ok [y/N]: Operation aborted.
error building at STEP "RUN yum install iputils": error while running runtime: exit status

Quando yum installato iputils , ha chiesto una conferma e ha fallito in quanto non ha mai ricevuto risposta. Ora diamo un'occhiata a cosa succede con --stdin opzione in gioco.

# buildah bud -t mystdin --stdin -f ~/Containerfile.stdin .
STEP 1: FROM ubi8
STEP 2: RUN yum install iputils
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Red Hat Universal Base Image 8 (RPMs) - BaseOS  2.8 MB/s | 774 kB     00:00    
Red Hat Universal Base Image 8 (RPMs) - AppStre 7.5 MB/s | 5.0 MB     00:00    
Red Hat Universal Base Image 8 (RPMs) - CodeRea  86 kB/s |  13 kB     00:00    
Dependencies resolved.
================================================================================
 Package        Architecture  Version                 Repository           Size
================================================================================
Installing:
 iputils        x86_64        20180629-2.el8          ubi-8-baseos        149 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 149 k
Installed size: 361 k
Is this ok [y/N]: y

Non si trova bene in un blog come di persona, ma il processo di compilazione si ferma alla linea Va bene [s/n]: e ho inserito il carattere y e la build è continuata (vedi sotto output).

Downloading Packages:
iputils-20180629-2.el8.x86_64.rpm               972 kB/s | 149 kB     00:00    
--------------------------------------------------------------------------------
Total                                           952 kB/s | 149 kB     00:00    
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : iputils-20180629-2.el8.x86_64                          1/1
  Running scriptlet: iputils-20180629-2.el8.x86_64                          1/1
  Verifying        : iputils-20180629-2.el8.x86_64                          1/1
Installed products updated.

Installed:
  iputils-20180629-2.el8.x86_64                                                

Complete!
STEP 3: RUN touch /tmp/done
STEP 4: COMMIT mystdin
Getting image source signatures
Copying blob 92538e92de29 skipped: already exists  
Copying blob eb7bf34352ca skipped: already exists  
Copying blob f9ed641975cb done  
Copying config b2742f08a7 done  
Writing manifest to image destination
Storing signatures
--> b2742f08a7a
b2742f08a7ae2cb76a2cd0c481f2d2d66b303379d23e5260577ea09476a8a486

Questo è un altro esempio semplicistico, soprattutto perché potresti aggiungere un -y argomento al yum comando. Tuttavia, potrebbero esserci altri comandi che vorresti eseguire durante il processo di compilazione in cui vorresti ottenere facilmente un input più significativo.

Trova i tag per un'immagine contenitore

Questo prossimo strumento, relativamente nuovo per Podman, mostra tutti i tag per un'immagine contenitore su un registro. Uso le immagini su quay.io per Buildah, Podman e Skopeo, e a volte voglio usare una versione particolare di uno dei progetti e non riesco a ricordare quale sia là fuori. Se hai familiarità con Skopeo, funziona davvero bene in questo spazio. Ma se non hai installato Skopeo in locale, o non puoi per qualche motivo, allora il nuovo --list-tags opzione per la podman search il comando è il tuo biglietto.

Quindi diamo un'occhiata a tutti i tag che l'immagine stabile di Podman ha su quay.io:

# podman search --list-tags quay.io/podman/stable
NAME                   TAG
quay.io/podman/stable  v1.4.4
quay.io/podman/stable  v1.4.2
quay.io/podman/stable  v1.5.1
quay.io/podman/stable  v1.5.0
quay.io/podman/stable  v1.6.2
quay.io/podman/stable  auto
quay.io/podman/stable  v1.6
quay.io/podman/stable  v1.9.0
quay.io/podman/stable  v1.9.1
quay.io/podman/stable  v2.0.2
quay.io/podman/stable  v2.0.6
quay.io/podman/stable  v2.1.1
quay.io/podman/stable  master
quay.io/podman/stable  latest

Veloce, facile e maneggevole.

Utilizzo dell'immagine del contenitore Skopeo

Questo strumento è una specie di ying fino agli ultimi strumenti yang . Il progetto Skopeo è pieno di molti strumenti da utilizzare con le immagini dei contenitori. Inoltre, ti mostrerà l'elenco dei tag che un'immagine ha su un registro. Skopeo può anche visualizzare informazioni su un registro, consentire di copiare un'immagine contenitore tra meccanismi di archiviazione inclusi i registri, sincronizzare un registro contenitore, eliminare un'immagine da un registro e altro ancora.

Ora non mi immergerò in ciascuno di questi comandi Skopeo qui. Farò solo la capacità di ricerca per mostrare i tag. La svolta è che userò Podman solo per eseguire quay.io/skopeo/stable:latest image, eliminando quindi la necessità di avere Skopeo installato ma avere ancora tutte le sue funzionalità disponibili.

Elenchiamo quindi i tag di quay.io/podman/stable:latest immagine di nuovo, ma questa volta tramite l'immagine del contenitore Skopeo:

# podman run quay.io/skopeo/stable:latest list-tags docker://quay.io/podman/stable
Trying to pull quay.io/skopeo/stable:latest...
Getting image source signatures
Copying blob 6629904ed3b7 done  
Copying blob 2b74ed94761c done  
Copying blob 692512e477a1 done  
Copying blob 166a3cbbffd1 done  
Copying blob b1e90be38d32 done  
Copying blob a5dc7d6cfd62 done  
Copying blob a3ed95caeb02 done  
Copying blob a3ed95caeb02 done  
Writing manifest to image destination
Storing signatures
{
    "Repository": "quay.io/podman/stable",
    "Tags": [
        "v1.4.4",
        "v1.4.2",
        "v1.5.1",
        "v1.5.0",
        "v1.6.2",
        "auto",
        "v1.6",
        "v1.9.0",
        "v1.9.1",
        "v2.0.2",
        "v2.0.6",
        "v2.1.1",
        "master",
        "latest"
    ]
}

La prima volta che esegui questo comando, è più lento dell'equivalente di Podman poiché sostieni il costo di skopeo immagine del contenitore in fase di estrazione. Dopodiché, la velocità è equivalente nelle corse secondarie, quindi puoi eseguire qualsiasi altro comando Skopeo che desideri.

Ti lascerò esplorare ulteriormente da solo e suggerirei di iniziare la tua esplorazione con Come eseguire Skopeo in un contenitore di Valentin Rothberg . Penso che l'immagine del contenitore Skopeo sia lo strumento più brillante nella mia casella degli strumenti del contenitore.

[ Iniziare con i container? Dai un'occhiata a questo corso gratuito. Distribuzione di applicazioni containerizzate:una panoramica tecnica. ]

Tutti i nuovi brillanti strumenti

Ora mia moglie può ancora avere tutti i suoi splendidi strumenti dal negozio di ferramenta locale e terrò i miei nuovi strumenti contenitore nella mia cassetta degli attrezzi virtuale. Spero che tu possa trovare utili questi nuovi comandi e opzioni nella tua cassetta degli attrezzi.


Linux
  1. Costruisci il tuo container su Linux

  2. Aggiungi video come sfondo sul tuo desktop Linux

  3. 7 divertenti contenitori Linux/caratteristiche di trasporto di immagini

  4. Qual è la differenza tra un container Linux e un'immagine?

  5. 20 comandi Linux di una riga da aggiungere alla tua cassetta degli attrezzi

Proteggi la tua privacy online con queste distribuzioni Linux

Installa i caratteri Nerd per aggiungere glifi nel tuo codice su Linux

Strumenti Linux:du vs. df

Come aggiungere una filigrana immagine in GIMP in Linux

Iniziare con Linux Mint? Concentrati su questi tre strumenti

Linux for Business:fai crescere la tua azienda con queste applicazioni