GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial Podman - Inizia con Podman

Questo tutorial spiega come iniziare con Podman nei sistemi operativi Linux. Alla fine di questo tutorial di Podman, imparerai le basi di Podman, ad esempio come cercare e scaricare immagini, creare un nuovo contenitore dall'immagine, eseguire un contenitore, rimuovere un contenitore e creare la tua immagine dal contenitore e altro ancora.

Prima di iniziare con Podman, assicurati di aver installato Podman sulla tua macchina Linux.

  • Cos'è Podman e come installare Podman in Linux

Inizia con Podman

Podman fornisce un'interfaccia a riga di comando (CLI) simile a Docker motore per container. In effetti, Podman mira a sostituire il client Docker fornito da Docker.

I comandi Podman e Docker sono quasi gli stessi. Puoi semplicemente sostituire docker con podman nella maggior parte dei comandi della finestra mobile. Ad esempio, la docker run il comando diventa podman run e docker build diventa podman build e così via.

Puoi persino creare una docker alias per podman come di seguito:

$ alias docker=podman

D'ora in poi, puoi utilizzare entrambi i docker e podman comandi allo stesso tempo. Ad esempio, se esegui docker ps, eseguirà automaticamente podman comando ps. Il passaggio da Docker a Podman è diventato molto più semplice!

1. Ottenere l'aiuto di Podman

La prima cosa che probabilmente vorrai fare dopo aver installato qualsiasi applicazione è guardare nella loro sezione della guida.

Per visualizzare il manuale della guida di Podman insieme all'elenco dei sottocomandi disponibili e alle opzioni generali, eseguire:

$ podman --help

Per apprendere l'utilizzo di qualsiasi sottocomando, ad esempio attach , fai semplicemente:

$ podman attach --help

2. Cerca immagini

Fortunatamente, le immagini create da Docker e Podman sono compatibili con lo standard OCI. In questo modo Podman può eseguire il push e il pull di immagini dai registri dei container come Docker Hub e Quay.io .

Cerchiamo le immagini Alpine Linux usando il comando:

$ podman search alpine

Come puoi vedere, Podman elenca le immagini Alpine sia dall'hub Docker che da Quay.

Quando scarichi le immagini, puoi scegliere da dove scaricarle.

Allo stesso modo, puoi cercare immagini basate su Arch Linux come di seguito:

$ podman search archlinux

Docker hub e Quay ha molte immagini di diversi tipi. Che si tratti di un'applicazione o di un sistema operativo, troverai le immagini del contenitore predefinite da questi registri.

3. Scarica immagini

Ai fini di questa guida, scaricherò Redhat 8 Universal base image (UBI).

Per scaricare l'immagine di Redhat con Podman, esegui:

$ podman pull redhat/ubi8

Ti verrà chiesto di scegliere un registro contenitori da cui scaricare. Ho scelto l'hub Docker. Vedrai una piccola freccia davanti al registro selezionato.

? Please select an image: 
    registry.fedoraproject.org/redhat/ubi8:latest
    registry.access.redhat.com/redhat/ubi8:latest
  ▸ docker.io/redhat/ubi8:latest
    quay.io/redhat/ubi8:latest

L'immagine del contenitore verrà scaricata dal registro scelto.

✔ docker.io/redhat/ubi8:latest

Trying to pull docker.io/redhat/ubi8:latest...
Getting image source signatures
Copying blob a50df8fd88fe done  
Copying blob 1cadda38f72d done  
Copying config 0ced1c7c9b done  
Writing manifest to image destination
Storing signatures
0ced1c7c9b23d0e107c7b15d5a0017abbbcf7e64e49a4c9f9efa1b9589ca8b68

Puoi scaricare ed eseguire diversi tipi di immagini indipendentemente dal tipo di distribuzione che utilizzi. Ad esempio, puoi scaricare e utilizzare le immagini Alpine su un host Fedora e viceversa.

$ podman pull alpino

Puoi anche scaricare una versione specifica di un'immagine. Il comando seguente scarica l'immagine di Ubuntu versione 20.04:

$ podman pull ubuntu:20.04

Poiché utilizziamo Podman come utente non root, tutte le immagini del contenitore sono archiviate nella directory home dell'utente, ad esempio $HOME/.local/share/containers/storage , invece di /var/lib/containers .

$ ls ~/.local/share/containers/storage/
cache  libpod  mounts  overlay  overlay-containers  overlay-images  overlay-layers  storage.lock  tmp  userns.lock

4. Visualizza le immagini

Per visualizzare l'elenco delle immagini scaricate localmente, eseguire:

$ immagini podman

Risultato di esempio:

REPOSITORY                TAG         IMAGE ID      CREATED      SIZE
docker.io/library/ubuntu  20.04       1318b700e415  7 days ago   75.2 MB
docker.io/redhat/ubi8     latest      0ced1c7c9b23  13 days ago  234 MB
docker.io/library/alpine  latest      d4ff818577bc  6 weeks ago  5.87 MB

Come puoi vedere, l'output sopra elenca il nome del repository in cui abbiamo scaricato le immagini, il tag dell'immagine, l'id dell'immagine, quando l'immagine è stata creata e la dimensione dell'immagine.

Per chi se lo stesse chiedendo, il TAG si riferisce a una particolare istantanea dell'immagine Ubuntu (ad es. 20.04 e più recenti). TAG è solo un nome aggiuntivo per un'immagine locale. L'ID IMMAGINE (Es. 1318b700e415 ) è l'identificatore univoco dell'immagine di Ubuntu.

5. Esegui contenitori

Un contenitore può essere avviato utilizzando il tag immagine o l'id immagine.

Iniziamo un nuovo contenitore con l'immagine UBI Redhat usando il suo tag:

$ podman run -it ubi8:latest

Questo comando crea un contenitore Redhat 8 usando ubi8:latest immagine e collega il container al terminale in modo che tu possa interagire con esso.

Ecco,

  • -i : Ci consente di stabilire una connessione interattiva afferrando lo standard in (STDIN) del contenitore.
  • -t :Assegna un nuovo Pseudo Terminale all'interno del contenitore Redhat 8.
  • ubi8:latest :Contenitore Redhat 8 con TAG "latest".

Dopo aver avviato il container, verrai automaticamente posizionato nella shell del container (prompt dei comandi):

Hai notato il numero 607a288c810d nell'output sopra? È l'ID del contenitore.

Avviso: Tieni presente che L'ID contenitore e l'ID immagine Docker sono diversi .

Puoi iniziare a giocare con il tuo Container ora.

Per tornare al Terminale del tuo host senza uscire dal Container, premi CTRL+p seguito da CTRL+q .

Ora verrai disconnesso dal contenitore e riportato alla console della macchina host. Il contenitore sarà ancora in esecuzione in background.

Per uscire dal contenitore, digita semplicemente exit dalla console del Container e premere il tasto INVIO:

# exit

Questo comando arresterà il contenitore in esecuzione.

Se vuoi eseguire un container con l'ID IMMAGINE, sostituisci semplicemente il TAG immagine (ubi8:latest) con l'ID immagine (0ced1c7c9b23) nel comando precedente:

$ podman run -it 0ced1c7c9b23

Questo avvierà il contenitore Redhat 8.

6. Esegui i contenitori in background

Puoi anche eseguire Containers in background distaccato.

Per eseguire un Container in modalità separata, utilizziamo -d bandiera:

$ podman run -it -d ubi8:latest

Quando eseguiamo il contenitore in modalità separata, Podman visualizzerà l'ID del contenitore nell'output standard.

a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29

Verifichiamo i contenitori in esecuzione usando il comando:

$ podman ps

Ora il contenitore è in esecuzione in background.

Puoi allegarli come descritto nella sezione seguente.

7. Attacca e stacca dai contenitori

Come indicato nella sezione precedente, puoi staccarti in sicurezza da un Container in esecuzione premendo CTRL+p seguito da CTRL+q . Questo ti consentirà di tornare al Terminale dell'host.

Per collegarlo nuovamente al contenitore, trova prima l'ID contenitore in esecuzione o il suo nome utilizzando podman ps comando:

$ podman ps

Risultato di esempio:

CONTAINER ID  IMAGE                         COMMAND     CREATED      STATUS          PORTS       NAMES
607a288c810d  docker.io/redhat/ubi8:latest  /bin/bash   2 hours ago  Up 2 hours ago              cool_cannon

Qui, 607a288c810d è l'ID del contenitore.

E poi digita semplicemente podman attach comando seguito dall'ID contenitore come di seguito:

$ podman attach 607a288c810d

Puoi anche allegarli usando il nome del contenitore come di seguito:

$ podman attach cool_cannon

Per staccare dal Container, premi semplicemente CTRL+p e CTRL+q .

8. Visualizza i contenitori in esecuzione

Per trovare o elencare i contenitori in esecuzione, digita:

$ podman ps

Risultato di esempio:

CONTAINER ID  IMAGE                            COMMAND     CREATED         STATUS             PORTS       NAMES
e783c0202b7d  docker.io/library/alpine:latest  /bin/sh     37 seconds ago  Up 38 seconds ago              optimistic_murdock

Questo elencherà solo i contenitori in esecuzione. Se vuoi elencare sia i contenitori in esecuzione che quelli interrotti, usa -a bandiera.

$ podman ps -a

Risultato di esempio:

CONTAINER ID  IMAGE                            COMMAND     CREATED         STATUS                         PORTS       NAMES
56c20497cbcd  docker.io/redhat/ubi8:latest     /bin/bash   3 hours ago     Exited (0) 3 hours ago                     wizardly_albattani
d23672b15cff  docker.io/redhat/ubi8:latest     /bin/bash   3 hours ago     Exited (0) 3 hours ago                     nifty_merkle
89b2c038e1ba  docker.io/redhat/ubi8:latest     /bin/bash   3 hours ago     Exited (0) 2 hours ago                     xenodochial_euler
607a288c810d  docker.io/redhat/ubi8:latest     /bin/bash   2 hours ago     Exited (0) About a minute ago              cool_cannon
e783c0202b7d  docker.io/library/alpine:latest  /bin/sh     43 seconds ago  Up 43 seconds ago                          optimistic_murdock

9. Elimina automaticamente il contenitore dopo averlo chiuso

Potresti voler testare un contenitore ed eliminarlo semplicemente non appena hai finito con il contenitore. In tal caso, puoi eliminare automaticamente il contenitore dopo averlo chiuso utilizzando --rm bandiera:

$ podman run -it --rm ubi8:latest

Una volta uscito dal Container, questo verrà automaticamente cancellato.

10. Avvia e arresta i contenitori

Come già detto, possiamo creare più contenitori usando la stessa immagine. Questo è uno dei maggiori vantaggi dei container rispetto alle macchine fisiche o virtuali.

Per creare più nuovi container, possiamo usare podman run comando come descritto in "5. Esegui contenitori" sezione.

Per avviare (accendere) un Container esistente, facciamo semplicemente:

$ podman start <container_name>

Allo stesso modo, possiamo interrompere (spegnere) un comando in esecuzione con il comando:

$ podman stop <container_name>

Lascia che ti mostri un esempio, così capirai meglio.

Innanzitutto, trova l'elenco di tutti i contenitori:

$ podman ps -a
CONTAINER ID  IMAGE                            COMMAND     CREATED         STATUS                     PORTS       NAMES
56c20497cbcd  docker.io/redhat/ubi8:latest     /bin/bash   2 days ago      Exited (0) 2 days ago                  wizardly_albattani
d23672b15cff  docker.io/redhat/ubi8:latest     /bin/bash   2 days ago      Exited (0) 2 days ago                  nifty_merkle
89b2c038e1ba  docker.io/redhat/ubi8:latest     /bin/bash   2 days ago      Exited (0) 2 days ago                  xenodochial_euler
607a288c810d  docker.io/redhat/ubi8:latest     /bin/bash   2 days ago      Exited (0) 2 days ago                  cool_cannon
e783c0202b7d  docker.io/library/alpine:latest  /bin/sh     2 days ago      Exited (0) 2 days ago                  optimistic_murdock

Il nome dei Contenitori è mostrato nei NOMI sezione (ultima colonna) dell'output di cui sopra.

Inizierò il contenitore denominato wizardly_albattani usando il comando:

$ podman start wizardly_albattani

Controlliamo se è avviato:

$ podman ps
CONTAINER ID  IMAGE                         COMMAND     CREATED     STATUS            PORTS       NAMES
56c20497cbcd  docker.io/redhat/ubi8:latest  /bin/bash   2 days ago  Up 7 seconds ago              wizardly_albattani

Sì, era attivo 7 secondi fa.

Per fermare il Container, fai semplicemente:

$ podman stop wizardly_albattani

11. Assegna un nome ai contenitori

Se osservi attentamente l'output dei comandi precedenti, Podman assegna nomi casuali ogni volta che avvii un container. Se non dai un nome ai tuoi contenitori, Podman li nominerà automaticamente per te.

Dai un'occhiata allo screenshot seguente. Ho avviato lo stesso contenitore con la stessa immagine due volte. Dopo essere uscito dal contenitore e averlo riavviato la seconda volta, ottiene un nuovo nome anche se ho utilizzato la stessa immagine.

I contenitori ottengono un nuovo nome ogni volta dopo che li chiudi e li avviamo ogni volta.

Puoi, tuttavia, assegnare un nome statico ai contenitori con --name segnala come di seguito:

$ podman run -it -d --name ostechnix_redhat ubi8:latest

Il comando precedente creerà l'esecuzione di un nuovo contenitore in modalità separata e lo chiamerà ostechnix_redhat .

Per visualizzare l'elenco dei contenitori in esecuzione, facciamo:

$ podman ps

Risultato di esempio:

CONTAINER ID  IMAGE                         COMMAND     CREATED        STATUS            PORTS       NAMES
6fa78116dcb7  docker.io/redhat/ubi8:latest  /bin/bash   4 seconds ago  Up 5 seconds ago              ostechnix_redhat

Hai notato il nome del container? Abbiamo assegnato un nome personalizzato (ad esempio ostechnix_redhat ) al Contenitore.

12. Crea immagini personalizzate

Podman non serve solo per scaricare ed eseguire container da immagini preconfigurate. Puoi anche creare le tue immagini personalizzate da immagini esistenti.

Innanzitutto, avvia un Container esistente o eseguine uno nuovo.

Creerò un nuovo contenitore Ubuntu:

$ podman run -it 1318b700e415

Ora sei all'interno del contenitore.

[email protected]:/#

Installa, aggiorna o rimuovi qualsiasi applicazione nel contenitore.

Ai fini di questa guida, installerò il server web Apache:

[email protected]:/# apt update
[email protected]:/# apt install apache2 -y
[email protected]:/# service apache2 start

Una volta terminato, staccati dal Container e torna al terminale dell'host premendo CTRL+p e CTRL+q .

Tieni presente che il contenitore è ancora in esecuzione in background!

Ora, costruisci l'immagine dal contenitore esistente usando il comando:

$ podman commit b871b0fd5810 ostechnix/ubuntu_apache

Ecco,

  • b871b0fd5810 - ID contenitore Ubuntu.
  • ostechnix – Nome dell'utente che ha creato il contenitore.
  • ubuntu_apache – Nome dell'immagine creata dall'utente ostechnix.

Ora controlla se la nuova immagine è stata creata elencando le immagini disponibili:

$ podman images

Risultato di esempio:

REPOSITORY                         TAG         IMAGE ID      CREATED         SIZE
localhost/ostechnix/ubuntu_apache  latest      6c9b2fb66400  25 seconds ago  222 MB
docker.io/library/ubuntu           20.04       1318b700e415  10 days ago     75.2 MB
docker.io/redhat/ubi8              latest      0ced1c7c9b23  2 weeks ago     234 MB
docker.io/library/alpine           latest      d4ff818577bc  7 weeks ago     5.87 MB

Come puoi vedere nell'output sopra, una nuova immagine chiamata ubuntu_apache viene creato.

Iniziamo un nuovo contenitore con questa immagine:

$ podman run -it --rm --name apache_webserver -p 8080:80 localhost/ostechnix/ubuntu_apache

Qui eseguo Container con l'immagine appena creata nel passaggio precedente. Sto anche mappando la porta locale 8080 sul sistema locale per portare 80 all'interno del contenitore.

Una volta avviato il Container, assicurati che il server Web Apache sia avviato utilizzando il comando:

[email protected]:/# service apache2 start

Ora apri il browser nel tuo sistema host e vai a http://localhost:8080 per verificare se il server Web Apache è in esecuzione nel contenitore.

13. Visualizza i registri dei contenitori

Per visualizzare tutto ciò che hai fatto all'interno del tuo Container, puoi semplicemente controllare i log del Container usando il comando:

$ podman logs apache_webserver

14. Rimuovi i contenitori

Assicurati che i contenitori siano fermi:

$ podman stop ostechnix_redhat

Dopo aver arrestato il contenitore, eliminalo usando il comando:

$ podman rm ostechnix_redhat

Allo stesso modo, elimina tutti i contenitori uno per uno come mostrato sopra.

L'eliminazione di più contenitori uno per uno può essere un compito noioso se si dispone di un numero elevato di contenitori. Invece di eliminarli uno dopo l'altro, puoi eliminarli tutti in una volta. Solo stai attento! Non c'è modo di recuperare i contenitori eliminati!

Per eliminare tutti i contenitori interrotti in una volta sola, esegui:

$ podman container prune

Digita "Y" per confermare e premere ENTER tasto per eliminare i contenitori.

WARNING! This will remove all non running containers.
Are you sure you want to continue? [y/N] y
2124a1fbc85a6be7d516e747723129bd7bb9c39d3a54951c9a81407d30ded1ab
54884f3375947026d4e87b99cb3a09e114c89120b101f5c8c1e614aca963975c
56c20497cbcdd9599c2fa729277ecf679ac29f79a0b06af3ae1a135726465ba7
607a288c810d2e605d9ba7590f8f7558ef5f96e87897a1cdde471ae9a74b36ad
69bbd87b44cb6c9a582749f4ad010b6b273e65f9fe424058fdc0bc55b188d7e4
89b2c038e1baf6ac59f0da8e43a7efedc7ba73a18ed8d704c879ffdbc7eb7f28
a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29
aa14879baf0919323730539dd949231d5bb89ca4207dd36c02a741316e6d0f18
b871b0fd5810f55e75bdd480d5fb34b09b0e293604f88896002a9368a607bf7e
d23672b15cffc0a774227dc6b457a8bff5347073a112f6729d63ddf400f19dc7
e783c0202b7d7a6664e731feeff4bdb57a79df79080046ed2b728df4bce789d2
ebfd6210a6beedce43af0c41296e329d416128752ab603abd44c73117bf5dfd0

15. Rimuovi le immagini

Puoi eliminare le immagini che non sono più necessarie!

Elenca tutte le immagini scaricate con il comando:

$ podman images

Risultato di esempio:

REPOSITORY                         TAG         IMAGE ID      CREATED         SIZE
localhost/ostechnix/ubuntu_apache  latest      6c9b2fb66400  37 minutes ago  222 MB
docker.io/library/ubuntu           20.04       1318b700e415  10 days ago     75.2 MB
docker.io/redhat/ubi8              latest      0ced1c7c9b23  2 weeks ago     234 MB
docker.io/library/alpine           latest      d4ff818577bc  7 weeks ago     5.87 MB

Ora, elimina un'immagine utilizzando il suo ID immagine o il suo nome, come di seguito:

$ podman rmi 6c9b2fb66400

Risultato di esempio:

Untagged: localhost/ostechnix/ubuntu_apache:latest
Deleted: 6c9b2fb66400138738ad12643d8461fbbb859f33d3be3c35181bb9ee9b11748d

Allo stesso modo, elimina tutte le altre immagini non utilizzate,

Avviso: Non puoi eliminare un'immagine attualmente utilizzata da contenitori in esecuzione o interrotti.

Conclusione

In questo tutorial completo su Podman, abbiamo fornito 15 esempi pratici su come iniziare a utilizzare Podman in Linux. Se sei uno sviluppatore, imparare Podman è molto importante per far avanzare la tua carriera. Impara a usare Podman a fondo. Vale il tuo tempo!


Linux
  1. Come iniziare con Juju?

  2. Come iniziare con un server cloud FreeBSD

  3. Inizia con i server cloud

  4. Inizia con Magento su Debian 10

  5. Inizia con Tasksel su Debian

Introduzione a Docker Compose in Linux

Da Docker Compose a Kubernetes con Podman

Come sostituire Docker con Podman su un Mac

Introduzione all'esercitazione Docker di Azure

Come iniziare con Arch Linux

Come iniziare con Midnight Commander nel 2022