Tutto quello che dovresti sapere su Docker Hub

Esplorando Docker Hub: Guida Dettagliata

In questo tutorial, ci immergeremo nel mondo di Docker Hub, scoprendo come sfruttarlo al meglio. Impareremo a utilizzare Docker Hub, a creare immagini personalizzate e a gestire il processo di pubblicazione e recupero delle immagini da e verso Docker Hub. Dedicheremo anche del tempo all’analisi di alcuni dei repository più popolari presenti sulla piattaforma.

Requisiti Preliminari

Per seguire questo tutorial, è indispensabile una conoscenza basilare di Docker e una certa familiarità con gli ambienti Windows e Linux. Utilizzeremo Docker Desktop per le esercitazioni pratiche, in particolare per la creazione e l’invio di un’immagine a Docker Hub. Gli utenti Windows e Mac possono scaricare e installare Docker Desktop da questo indirizzo, mentre gli utenti Linux possono seguire questo link.

Cos’è Docker Hub?

Docker Hub è un servizio di repository offerto da Docker Inc. Funge da registro per le immagini Docker, permettendoci di caricare (push) e scaricare (pull) immagini.

Si può paragonare a un GitHub per immagini containerizzate. Invece di gestire codice sorgente, Docker Hub consente di scaricare o pubblicare immagini di container. È un repository online, basato su cloud, che supporta sia repository pubblici (accessibili a tutti) che privati (accessibili solo al proprietario). La gestione di repository privati oltre un certo numero prevede un costo.

Funzionalità Chiave di Docker Hub

Docker Hub offre numerose funzionalità utili, tra cui:

1. Repository di Immagini

Docker Hub consente di individuare e scaricare immagini containerizzate.

Permette anche di pubblicare le proprie immagini, sia come repository pubblici che privati.

2. Gestione di Team e Organizzazioni

È possibile creare gruppi di lavoro e rendere i repository privati, limitando l’accesso ai membri della propria organizzazione. In questo modo, si gestisce l’accesso alle immagini containerizzate private.

3. Integrazione con GitHub e Bitbucket

Docker Hub si integra con repository di codice sorgente come GitHub e Bitbucket, semplificando il flusso di lavoro.

4. Build Automatiche

Docker Hub rileva modifiche nel codice sorgente inviate ai repository, avvia automaticamente la creazione di immagini containerizzate e le pubblica su Docker Hub.

5. Webhook

Tramite webhook, si possono attivare azioni specifiche in altri servizi dopo aver pubblicato un’immagine su Docker Hub, facilitando l’integrazione con altri strumenti.

6. Immagini Ufficiali e Immagini dei Publisher

Le immagini di alta qualità fornite da Docker sono classificate come “immagini ufficiali” e sono pronte all’uso. Allo stesso modo, le “immagini dei publisher” (o immagini certificate), fornite da terze parti, offrono supporto e garanzia di compatibilità con Docker Enterprise. Approfondiremo il discorso sulle immagini certificate più avanti.

Creazione del Primo Repository

Per iniziare, accedi a Docker Hub con le tue credenziali. Se non hai un account, puoi crearlo cliccando su “Iscriviti”. Una volta effettuato l’accesso, clicca su “Crea repository” nella pagina di benvenuto.

  • Dopo aver cliccato su “Crea repository”, ti verrà chiesto di fornire un nome per il tuo repository.

  • Scegli la visibilità: pubblica o privata.

È possibile integrare repository di codice come GitHub e BitBucket tramite le impostazioni di build, ma è un passaggio facoltativo.

  • Una volta completata la configurazione, clicca su “Crea”.

Congratulazioni! Hai creato il tuo primo repository, che dovrebbe apparire simile a questo:

Docker Hub offre un repository privato gratuito. Per avere più repository privati, è necessario passare a un piano a pagamento.

Apri Docker Desktop (scaricato e installato precedentemente) ed esegui l’accesso a Docker Hub da terminale usando questo comando:

docker login

Esplorazione delle Immagini

È possibile cercare repository pubblici e immagini su Docker Hub in due modi: tramite il sito web di Docker Hub o utilizzando lo strumento da riga di comando. Ad esempio, per cercare l’immagine del repository MySQL, si può usare il comando:

docker search mysql

Scaricare un’Immagine

Per scaricare un’immagine da Docker Hub, si utilizza il comando “pull”:

# docker pull mysql

Se si ha già un’immagine MySQL locale, il comando la aggiornerà all’ultima versione. È importante notare che ci sono molte immagini MySQL su Docker Hub, perché chiunque può pubblicarne una. Sarà nostra cura scegliere quella più adatta alle nostre esigenze. In caso di dubbio, è possibile scaricare una specifica immagine, come `bitnami/mysql`:

# docker pull bitnami/mysql

Creazione di un’Immagine

Questo processo richiede un Dockerfile, che è un file di configurazione che indica a Docker come creare un’immagine. In pratica, è un manuale di istruzioni per Docker.

Come Funziona?

Docker legge le istruzioni dal Dockerfile e crea l’immagine. L’immagine Docker è un file system a più livelli, dove ogni livello rappresenta un’istruzione del Dockerfile. Vediamo i passi per creare un’immagine con un Dockerfile.

Crea un Dockerfile, dove specifichiamo la configurazione dell’applicazione:

# sudo vim Dockerfile

Nota: il nome del file deve essere “Dockerfile” con la “D” maiuscola.

FROM ubuntu:16.04
MAINTAINER [email protected]
RUN apt-get update
RUN apt-get install –y mysql
CMD echo "La mia prima immagine è stata creata."

Analizziamo le parole chiave più importanti:

  • Il simbolo # serve per aggiungere commenti nel Dockerfile.
  • “FROM” definisce l’immagine di base da cui partire.
  • “MAINTAINER” indica il responsabile della manutenzione dell’immagine.
  • “RUN” esegue le istruzioni specificate sull’immagine. In questo caso, aggiorna il sistema e poi installa MySQL.
  • “CMD” esegue un comando quando il container viene avviato.
  • “COPY” permette di copiare un file dal sistema operativo host al container Docker.
  • “EXPOSE” specifica la porta su cui il container eseguirà il suo processo.

Per creare la nostra immagine Docker, esegui il seguente comando:

Sintassi:

docker build -t <nome_utente>/<nome-repo> .

# docker build -t asadali08537/first-repo .

Nel comando precedente, il nome dell’immagine è “asadali08537/first-repo” e il punto indica la directory di lavoro corrente, che contiene il Dockerfile. “-t” serve per assegnare un tag all’immagine. L’output dovrebbe essere simile a questo:

Verifichiamo l’immagine eseguendola con:

docker run asadali08527/first-repo

Questo comando installerà MySQL sulla tua macchina con tutti gli aggiornamenti necessari e mostrerà il messaggio definito nel Dockerfile.

Pubblicare un’Immagine

Una volta che l’immagine è stata creata, è possibile pubblicarla su Docker Hub con il comando “push”:

docker push asadali08527/first-repo

Su Docker Hub, potremo vedere i tag dell’immagine e il suo stato:

Cosa Sono le Immagini Certificate Docker?

Sono immagini ufficiali inviate da fornitori o collaboratori. Un’immagine può essere certificata solo se conforme agli standard e ai requisiti stabiliti da Docker Hub. In pratica, l’immagine deve superare alcuni test di base.

Docker Hub fornisce lo strumento inspectDockerImage, con cui i fornitori possono auto-certificare le loro immagini e i plugin.

Nota:

Per pubblicare un’immagine come certificata Docker, dobbiamo prima certificarla e testarla con lo strumento inspectDockerImage. Se la nostra immagine richiede un ambiente non certificato, non potrà essere pubblicata come certificata.

Immagini Popolari su DockerHub

Docker Hub offre molte immagini curate e ottimizzate. La popolarità di un’immagine dipende da diversi fattori. Per una lista dettagliata dei repository più popolari, visita il sito web di Docker Hub. Prima di scaricare un’immagine, considera i seguenti punti:

  • Cerca una versione specifica tramite i tag (di solito “latest”).
  • Scegli immagini con un elevato numero di download e valutazioni positive.
  • Verifica quando l’immagine è stata aggiornata l’ultima volta.
  • Se possibile, preferisci immagini di editori verificati o immagini ufficiali (Docker Certified).

Webhook

Un webhook è un callback web che funziona in base ad eventi. Permette a un’applicazione di fornire informazioni in tempo reale a un’altra applicazione. Docker Hub offre questa funzionalità.

Si tratta di un’API push HTTP, che viene attivata da eventi designati dall’utente. Tramite webhook, possiamo notificare ad altre applicazioni o servizi modifiche nelle immagini. In genere, i webhook sono utilizzati per automatizzare processi, come l’esecuzione di test a seguito della pubblicazione di una nuova immagine, e la successiva distribuzione automatica una volta che i test hanno esito positivo.

Conclusione

Spero che questa guida ti abbia fornito una buona comprensione di Docker Hub, di come cercare, creare e pubblicare immagini. Ricorda che le immagini pubbliche sono visibili a tutti.

Se non l’hai già fatto, dai un’occhiata a questa guida all’installazione di Docker.