Ricerca nel sito web

Introduzione alle immagini Docker predefinite


Su questa pagina

  1. Prerequisiti
  2. Cosa dovresti sapere?
  3. Gestione delle immagini con la CLI
  4. Ispezione delle immagini Docker
  5. Utilizzo dei tag Docker
  6. Lavorare con i registri Docker
    1. Distribuzione di un registro Docker privato
    2. Spingere, tirare e firmare le immagini

    Le immagini sono la componente fondamentale della finestra mobile. In questa guida discuteremo cosa sono le immagini docker, come costruirle, come gestirle e come usarle.

    Iniziamo.

    Prerequisiti

    • Prima di iniziare a utilizzare le immagini docker, devi installare docker sul tuo sistema.
    • Questa guida utilizza Ubuntu, ma i passaggi dovrebbero essere simili per altre distribuzioni.
    • Un account utente con privilegi di root.

    Cosa dovresti sapere?

    Prima di iniziare a lavorare con le immagini docker, è importante sapere cosa sono.

    Le immagini Docker sono i componenti fondamentali della finestra mobile. Docker utilizza le immagini per creare contenitori. Le immagini sono essenzialmente modelli che contengono tutte le informazioni necessarie per creare un contenitore, come il codice, le librerie e il runtime.

    Un contenitore docker è un'istanza di runtime di un'immagine. Contiene tutto ciò che contiene l'immagine, oltre a eventuali modifiche o aggiunte apportate mentre il contenitore è in esecuzione. Ad esempio, se installi una nuova applicazione sul tuo sistema, la nuova applicazione verrà installata nel tuo contenitore.

    Gestione delle immagini con la CLI

    La gestione delle immagini con l'interfaccia a riga di comando di Docker è un must per gli amministratori di Docker. L'interfaccia a riga di comando di Docker è un potente strumento che ti offre il controllo completo su immagini e contenitori. In questa sezione imparerai come utilizzare l'interfaccia a riga di comando di Docker per gestire le tue immagini.

    1. Eseguire il comando seguente per assicurarsi che Docker sia in esecuzione.

    sudo systemctl status docker

    2. Se Docker non è in esecuzione, avvialo con il comando seguente.

    sudo systemctl start docker

    3. Aggiungi il tuo account utente al gruppo docker. Disconnettersi e riconnettersi per rendere effettive le modifiche.

    sudo usermod -aG docker $(whoami)

    4. Se esegui il comando docker image, vedrai un elenco di tutte le opzioni disponibili per il comando docker image.

    docker image

    Come mostrato di seguito, il comando docker image ha molte opzioni, ma alcune delle più utilizzate sono:

    • ls: Elenca le immagini sul tuo sistema.
    • pull: estrae un'immagine da un registro.
    • push: invia un'immagine a un registro.
    • create: crea una nuova immagine da un Dockerfile.
    • rm: Rimuovi un'immagine dal tuo sistema.
    • tag: contrassegna un'immagine con un nome.

    Per iniziare, diamo un'occhiata a come elencare le immagini sul tuo sistema.

    5. Eseguire il comando docker image ls per elencare le immagini sull'host. Il comando docker image ls elenca tutte le immagini sul tuo host, inclusi i repository da cui sono state estratte. L'ID, il repository, il tag e la dimensione dell'immagine.

    docker image ls

    Supponiamo di voler rimuovere un'immagine dal tuo host. Puoi usare il comando rm. È possibile utilizzare il nome dell'immagine o l'ID dell'immagine per rimuovere un'immagine.

    docker image rm <image-name>
    docker image rm <image-id>

    Se utilizzi l'ID, assicurati che i primi caratteri dell'ID siano univoci per le immagini nell'elenco. In altre parole, le prime lettere dell'ID non devono essere utilizzate da altre immagini.

    6. Ad esempio, per rimuovere l'immagine ubuntu:12.04, è possibile utilizzare uno dei seguenti comandi. Nota che possiamo usare solo i primi caratteri dell'ID (5b1) per rimuovere l'immagine poiché non ci sono altre immagini con quei primi caratteri.

    docker image rm ubuntu:12.04
    docker image rm 5b1

    L'immagine ubuntu:12.04 verrà eliminata dal tuo host insieme a ogni livello utilizzato per creare l'immagine, come mostrato di seguito.

    7. Elenca nuovamente le immagini sul tuo sistema per verificare che l'immagine ubuntu:12.04 non sia più elencata.

    docker image ls

    Nota che il comando docker image ls e il comando docker images fanno esattamente la stessa cosa. Tuttavia, il secondo è ora deprecato poiché Docker preferisce che gli sviluppatori utilizzino il comando docker con i relativi sottocomandi corretti. Abbiamo la stessa cosa con il comando docker rmi. Questo comando viene utilizzato per rimuovere un'immagine e tutti i suoi livelli esattamente come docker image rm. Docker consiglia di utilizzare docker rm con i relativi sottocomandi corretti.

    docker image ls
    docker images

    Abbiamo lo stesso risultato.

    Finora, hai rimosso un'immagine inutilizzata alla volta. Cosa succede se si desidera rimuovere due o più immagini inutilizzate contemporaneamente?

    È qui che torna utile il comando prune. Il comando prune può essere utilizzato per rimuovere tutte le immagini inutilizzate dal tuo host in una volta sola. Puoi usare il comando prune per rimuovere tutte le immagini penzolanti, tutte le immagini inutilizzate o una combinazione di entrambe. Le immagini penzolanti sono le immagini a cui non è associato almeno un contenitore.

    8. Eseguire il comando docker image prune per rimuovere tutte le immagini inutilizzate/pendenti dal sistema.

    docker image prune

    Come puoi vedere, il comando prune ha rimosso tutte le immagini inutilizzate e i loro livelli dal tuo host e ti ha risparmiato molto spazio su disco nel processo.

    9. Elenca di nuovo le immagini sul tuo host per verificare che le immagini siano davvero sparite. Ora che sai come elencare, rimuovere e sfoltire le immagini dal tuo host. Questi comandi di base ti aiuteranno a mantenere il tuo sistema pulito e organizzato.

    docker image ls

    Ispezione delle immagini Docker

    Potresti pensare alle immagini e ai contenitori Docker come a mistiche scatole nere. Ti stai chiedendo che tipo di magia stia accadendo dentro di loro. In questa sezione, dissiperemo parte del misticismo dando un'occhiata a cosa c'è in un'immagine Docker e come puoi utilizzare tali informazioni a tuo vantaggio.

    1. Docker offre un modo per ispezionare il contenuto di un'immagine. Il comando docker inspect prende un percorso verso un'immagine e stampa una grande quantità di informazioni su di essa, come mostrato nell'esempio seguente.

    docker inspect ubuntu

    Come mostrato di seguito, l'output del comando precedente contiene molte informazioni. Stai vedendo tutte le informazioni qui in un formato chiamato array JSON.

    Le informazioni nell'output vengono mostrate come un archivio di valori-chiave. È possibile utilizzare uno strumento Linux come pipe (|) per eseguire il grep dell'output per una parola chiave specifica. Quindi, puoi utilizzare l'output con pipe per qualsiasi scopo tu voglia. Gli esempi seguenti dimostrano come è possibile utilizzare questa operazione.

    2. Eseguire il comando seguente per salvare l'output del comando docker inspect in un file denominato image-inspect.txt.

    docker image inspect ubuntu > image-inspect.txt

    3. Quindi, utilizza un editor di tua scelta per aprire il file e ispezionarne il contenuto.

    sudo nano image-inspect.txt

    L'output del comando docker inspect contiene una grande quantità di informazioni su un'immagine, come mostrato di seguito. All'interno dell'editor, puoi navigare facilmente come scorrere su/giù nell'editor per ispezionare diverse informazioni. Puoi modificare le informazioni se lo desideri.

    È inoltre possibile utilizzare l'argomento --format per formattare l'output in un modo specifico.

    4. Ad esempio, per stampare l'ID dell'immagine Ubuntu, è possibile utilizzare il seguente comando.

    docker image inspect ubuntu --format='{{.ID}}'

    5. Elenca l'immagine per verificarne l'ID.

    docker image ls

    6. Eseguire il comando seguente per indirizzare l'output del comando docker inspect al comando more. Ciò ti consentirà di impaginare l'output in modo da poter vedere tutte le informazioni in esso contenute.

    docker image inspect ubuntu | more

    Questa volta, vedrai il nome host (b32714f341a6) nella sezione ContainerConfig, come mostrato di seguito.

    7. Cosa succede se si desidera solo il valore del nome host (b32714f341a6)? È possibile ottenere ciò eseguendo il comando seguente.

    docker image inspect ubuntu --format='{{.ContainerConfig.Hostname}}'

    Come puoi vedere, puoi utilizzare il comando docker inspect con gli strumenti Linux per eseguire ulteriori filtri. Come una gamma. Ad esempio, per elencare tutti gli indirizzi IP nell'intervallo 192.168.0.0/16. E puoi persino combinarlo con altri strumenti di scripting per fare cose ancora più interessanti.

    Utilizzo dei tag Docker

    Mentre continui a lavorare con le immagini Docker, ti consigliamo di iniziare a utilizzare i tag. I tag ti consentono di identificare e gestire facilmente le tue immagini. Ad esempio, puoi creare un tag per ogni ambiente in cui viene utilizzata un'immagine o per ogni cliente o cliente per cui viene utilizzata un'immagine. In questo modo è facile trovare l'immagine specifica di cui hai bisogno e tenere traccia di quali immagini sono state utilizzate per quali scopi.

    La sintassi per aggiungere un tag a un'immagine è la seguente:

    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

    Il tag può essere qualsiasi stringa ASCII valida e può contenere lettere minuscole e maiuscole, cifre, caratteri di sottolineatura, punti e trattini. Non può iniziare con un punto o un trattino e non deve superare i 128 caratteri di lunghezza. Diamo un'occhiata a un esempio.

    1. Per aggiungere un tag a un'immagine, dobbiamo prima conoscere il nome o l'ID dell'immagine che vogliamo taggare. Possiamo elencare tutte le immagini disponibili sul nostro sistema eseguendo il seguente comando:

    docker image ls

    2. Ora esegui il comando seguente per aggiungere il tag \myubuntu\ all'immagine.

    docker tag ubuntu:latest ubuntu:myubuntu

    3. Ora, se eseguiamo nuovamente il comando docker image ls, possiamo vedere che la nostra immagine è stata taggata con \myubuntu\.

    Si noti che i tag sono solo alias. Ciò significa che un'immagine può avere più tag ma tutti rimandano alla stessa immagine sorgente. Quindi puoi usare qualsiasi tag tu voglia, purché abbia senso per te. Ed è una buona idea aggiungere tag quando crei immagini in modo da poterle facilmente tenere traccia in seguito.

    4. Diamo un'occhiata a un altro esempio. Supponiamo di voler creare un'immagine di Ubuntu con il tag \original\. Possiamo farlo eseguendo il seguente comando:

    docker tag myubuntu:latest myubuntu:original

    Il comando precedente creerà un'immagine contrassegnata con \original\ basata sull'immagine contrassegnata con \latest\. Ora abbiamo due immagini myubuntu: una contrassegnata con latest e una contrassegnata con original, ma rimandano allo stesso ID immagine sorgente (2b4cba85892a).

    Utilizzo dei registri Docker

    Ora che abbiamo una conoscenza di base di cosa sono le immagini Docker, diamo un'occhiata al lavoro con i registri. Docker Hub è il registro pubblico più popolare, ma sono disponibili altre opzioni.

    Docker Hub è un registro pubblico che può essere utilizzato gratuitamente sia per scopi personali che commerciali. Ha un'ampia varietà di immagini disponibili e puoi anche creare le tue immagini e condividerle con altri. Per utilizzare Docker Hub, devi semplicemente creare un account e quindi installare il client docker. È quindi possibile utilizzare il comando docker search per trovare le immagini e il comando docker pull per scaricarle.

    Finora abbiamo lavorato con l'immagine di Ubuntu disponibile su Docker Hub, un registro pubblico di Docker. Tuttavia, puoi anche creare un registro privato per archiviare le tue immagini.

    Distribuzione di un registro Docker privato

    Ci sono alcuni motivi per cui potresti voler utilizzare un registro privato:

    • Per memorizzare immagini che sono solo per uso interno. Forse hai immagini che contengono informazioni sensibili e non vuoi che siano disponibili pubblicamente. O forse vuoi tenere traccia di quali immagini sono state utilizzate nel tuo ambiente e non vuoi che altri possano scaricarle senza il tuo permesso.
    • Per velocizzare i download delle immagini nella tua pipeline di distribuzione CI/CD memorizzandole nella cache locale. Eseguire il proprio registro e archiviarlo da soli è un modo eccellente per collegarlo e migliorare il proprio sistema CI/CD.

    1. Controlla se il tuo host docker è pronto per creare un registro locale.

    docker version

    2. Eseguire il comando docker run di seguito per avere un registro locale e privato attivo e funzionante. Dove:

    • -p 5000:5000=mappa la porta 5000 sull'host docker alla porta 5000 sul container
    • --restart=always=assicura che il contenitore venga sempre riavviato in caso di errore
    • --name registry=nome del tuo registro privato
    • registry:2=l'immagine che verrà utilizzata per creare il contenitore del registro

    docker run -d -p 5000:5000 --restart=always --name registry registry:2

    3. Eseguire il comando seguente per elencare tutti i contenitori in esecuzione sull'host docker.

    docker ps 

    Vedrai il seguente output. Questo output indica che il contenitore del registro è attivo e in esecuzione sull'host docker. La notazione :::5000->5000/tcp è un collegamento che mappa la porta sull'host docker alla porta sul contenitore del registro.

    Ora che abbiamo il nostro registro privato attivo e funzionante, diamo un'occhiata a come aggiungere immagini ad esso. L'esempio seguente mostra come aggiungere l'immagine Ubuntu al registro. Innanzitutto, dovrai eseguire il pull dell'immagine da Docker Hub al tuo host locale e assegnargli un tag specifico. Invierai quindi l'immagine appena contrassegnata al tuo registro privato. Infine, elimina l'immagine di Ubuntu dal tuo host locale ed estrai l'immagine dal tuo registro privato per testarla.

    4. Esegui il comando seguente per scaricare l'immagine Ubuntu con il tag 20.04 da Docker Hub al tuo host locale.

     docker image pull ubuntu:20.04

    5. Successivamente, esegui il comando seguente per contrassegnare l'immagine Ubuntu scaricata come \my-ubuntu.\. Puoi utilizzare qualsiasi tag desideri, ma è una buona idea utilizzare qualcosa che abbia senso per la tua organizzazione.

    docker tag ubuntu:20.04 localhost:5000/my-ubuntu 

    6. Eseguire il comando seguente per inviare l'immagine appena contrassegnata al registro privato in esecuzione sulla porta localhost:5000.

    docker push localhost:5000/my-ubuntu

    7. Esegui il comando seguente per eliminare le immagini Ubuntu memorizzate nella cache locale dal tuo localhost per testare il tuo registro privato.

    docker image remove ubuntu:20.04 && docker image remove localhost:5000/my-ubuntu

    8. Una volta rimosse le immagini di Ubuntu memorizzate nella cache locale, è possibile eseguire il comando seguente per estrarre l'immagine dal registro privato.

    docker pull localhost:5000/my-ubuntu

    9. Esegui il comando seguente per elencare tutte le immagini sul tuo host docker.

    docker image ls

    Vedrai l'immagine my-ubuntu elencata come estratta dal tuo registro privato, come mostrato di seguito. Questo output conferma che l'immagine è stata estratta correttamente dal registro privato e che il registro privato funziona correttamente.

    Spingere, tirare e firmare le immagini

    Docker offre alcune opzioni della riga di comando per il push, il pull e la ricerca di immagini. In questa sezione imparerai come utilizzare questi comandi per gestire le tue immagini nei registri dalla tua riga di comando sul tuo host. Questo esempio utilizza l'hub Docker per dimostrare, ma è possibile utilizzare qualsiasi altro registro.

    1. Eseguire il comando docker login per accedere al registro di Docker Hub. Fornisci il tuo nome utente e password quando richiesto. Se non disponi di un account Docker Hub, puoi crearne uno gratuitamente su https://hub.docker.com/.

    docker login

    2. Una volta effettuato l'accesso, sei pronto per inviare le tue immagini. Supponiamo di voler inviare l'ultima immagine di Ubuntu all'hub Docker. Dovresti anche taggare l'immagine con un nome significativo in modo da poterla facilmente consultare in futuro. In questo esempio, contrassegnerai l'immagine come howtoforge/ubuntu:latest. Sentiti libero di usare il nome del tag desiderato.

    docker tag ubuntu:latest howtoforge/ubuntu:latest
    docker push howtoforge/ubuntu:latest

    3. Apri il browser web e accedi all'hub Docker. Vedrai la tua immagine lì. Questo repository è stato creato in base al tuo nome utente e al tag che hai utilizzato. In questo esempio, il repository è howtoforge/ubuntu. Passa alla scheda del tag e vedrai che il tuo tag è stato applicato correttamente (più recente).

    4. Eseguire il comando seguente per rimuovere l'immagine Ubuntu locale per testare il pull.

    docker image rm howtoforge/ubuntu

    Elenca le immagini sul tuo sistema per verificare che l'immagine Ubuntu sia stata rimossa.

    docker image ls

    5. Esegui il comando seguente per scaricare l'immagine my-ubuntu dal tuo Docker Hub.

    docker pull howtoforge/ubuntu

    6. Elenca nuovamente le immagini sul tuo host per verificare che l'immagine Ubuntu sia stata estratta. Dovresti vedere l'immagine my-ubuntu sul tuo sistema.

    docker image ls

    Mentre lavori con le immagini, potresti voler cercare immagini specifiche nei registri Docker. Puoi utilizzare il comando docker search per cercare immagini nei registri Docker.

    7. Eseguire il comando docker search per visualizzare tutte le opzioni e i parametri disponibili.

    man docker search

    Dovresti vedere il seguente output. Puoi vedere utili opzioni di filtro come:

    • stars=: filtra i risultati della ricerca in base al numero di stelle che l'immagine ha su Docker Hub. Puoi usarlo per trovare le immagini più popolari.
    • is-automated=(true|false): filtra i risultati della ricerca per includere o escludere build automatizzate. Puoi usarlo per trovare immagini che sono o non sono build automatizzate.
    • is-official=(true|false): filtra i risultati della ricerca per includere o escludere immagini ufficiali. Puoi usarlo per trovare immagini ufficialmente supportate dalla società dietro l'immagine. Ad esempio, Ubuntu è la società ufficiale dietro l'immagine di Ubuntu. Nginx è la società ufficiale dietro l'immagine Nginx. Dovresti sempre utilizzare immagini ufficiali, ove possibile, poiché sono state testate dall'azienda e hanno maggiori probabilità di essere stabili. Quando riscontri problemi con un'immagine ufficiale, puoi ottenere assistenza dalla società che fornisce l'immagine.

    8. Ad esempio, eseguire il comando docker search --filter=stars=4 ubuntu per cercare l'immagine Ubuntu con 4 o più stelle su Docker Hub.

    docker search --filter=stars=4 ubuntu

    9. Esegui il comando seguente per cercare l'immagine Ubuntu che è un'immagine ufficiale di Ubuntu.

    docker search --filter=is-official=true ubuntu

    L'output dovrebbe essere un elenco di repository che contengono l'immagine Ubuntu e indica che si tratta di un'immagine Ubuntu ufficiale (OK), come mostrato di seguito.

    10. Esegui il comando seguente per cercare l'immagine Ubuntu con almeno 100 stelle su Docker Hub ed è un'immagine Ubuntu ufficiale.

    docker search --filter="stars=100" --filter=is-official=true ubuntu

    Le immagini Docker sono un ottimo modo per archiviare il codice e la configurazione dell'applicazione. Ma allo stesso tempo, è facile accumulare molte immagini non utilizzate, in particolare se si stanno testando diverse applicazioni o provando diverse configurazioni. Potresti scoprire di non aver più bisogno di alcune delle immagini nei tuoi registri.

    È possibile eliminare un'immagine accedendo al repository che contiene l'immagine e facendo clic sul pulsante Elimina.

    11. Ad esempio, su Docker Hub, accedere al repository howtoforge/ubuntu. Fare clic su Impostazioni > Elimina repository. Conferma di voler eliminare il repository digitando il nome del repository. Fare clic su Elimina.

    Torna alla dashboard e vedrai che il repository howtoforge/ubuntu è stato eliminato insieme all'immagine Ubuntu.

    Conclusione

    Congratulazioni! Ora sei arrivato alla fine dell'articolo. Ora dovresti avere una conoscenza di base delle immagini Docker e come lavorare con esse. Ecco una guida sulla documentazione in cui puoi trovare ulteriori informazioni su argomenti quali:

    • Dockerfile
    • Rete
    • Volumi
    • Servizi
    • Modalità sciame