Vai al contenuto principale

Docker Hello World: inizia e verifica che tutto funzioni

Eseguire docker run hello-world è il modo più rapido per confermare che l’installazione di Docker funziona correttamente, capire cosa succede quando esegui un container e risolvere i problemi di configurazione più comuni prima di costruire applicazioni reali.
· 7 min leggi

Scopri con l'IA

Hai eseguito l’installer, hai fatto clic attraverso la configurazione e Docker dice che è pronto. Ma come puoi esserne davvero sicuro? Ogni guida Docker online dà per scontato che tu abbia già verificato la configurazione, ma nessuno spiega come fare davvero quel passaggio di verifica.

La buona notizia è che Docker fornisce un’immagine di test integrata chiamata hello-world che conferma che tutto funziona. Ti basta eseguire un solo comando per avere un riscontro immediato se Docker è configurato correttamente.

In questo articolo ti mostro cosa fa l’immagine hello-world, come eseguirla, cosa significa l’output e come risolvere i problemi più comuni quando qualcosa va storto.

Dopo aver eseguito l’esempio Hello World, sei pronto per imparare le basi di Docker. Il nostro corso Introduzione a Docker ti metterà in pista in un pomeriggio.

Cos’è Docker Hello World?

L’immagine hello-world è lo strumento diagnostico ufficiale di Docker per testare l’installazione.

Docker mantiene questa immagine come il container più piccolo possibile in grado di dimostrare che Docker funziona. È un minuscolo eseguibile che stampa un messaggio di conferma e termina. Tutto qui.

Docker fornisce hello-world perché i nuovi utenti hanno bisogno di un modo rapido per verificare tre cose:

  • Docker è installato correttamente sul tuo sistema
  • Hai le autorizzazioni giuste per eseguire i comandi Docker
  • Il demone Docker è accessibile e risponde alle richieste

Pensalo come eseguire python --version dopo aver installato Python. Stai solo confermando che lo strumento è pronto all’uso, non stai ancora costruendo nulla.

Come eseguire Docker Hello World

Eseguire l’immagine hello-world richiede un solo comando.

docker run hello-world

Quando esegui questo comando, Docker fa due cose:

  • Controlla se l’immagine esiste localmente. Docker cerca nella cache locale delle immagini per vedere se hai già scaricato hello-world. Se l’immagine è presente, Docker salta il download e passa direttamente all’esecuzione.

  • Se l’immagine non viene trovata localmente, Docker la scarica da Docker Hub. Docker Hub è il registry predefinito in cui Docker archivia le immagini ufficiali. L’immagine hello-world è minuscola — solo pochi kilobyte, quindi il download è rapidissimo.

Dopo che Docker ha l’immagine, crea ed esegue un container a partire da essa. Il container esegue il suo programma integrato, stampa il messaggio di conferma e termina.

Cosa succede quando esegui Docker Hello World?

Ecco il flusso passo passo quando esegui docker run hello-world.

Per prima cosa Docker controlla se l’immagine esiste localmente. Cerca nella cache locale per vedere se hai già scaricato hello-world. Se l’immagine è presente, Docker passa allo step successivo. In caso contrario, si connette a Docker Hub e scarica l’immagine.

Poi Docker crea un container dall’immagine. L’immagine è come un modello: contiene il programma e tutto il necessario per eseguirlo. Il container è l’istanza effettivamente in esecuzione di quel modello.

Il container esegue il suo programma, che stampa un messaggio di conferma nel terminale. Questo messaggio spiega cosa ha appena fatto Docker e conferma che tutto funziona.

Infine, il container termina. Il programma hello-world non è progettato per rimanere in esecuzione. Stampa il messaggio e si ferma subito. Il container esiste ancora sul tuo sistema, ma è in stato arrestato.

Tutto questo processo avviene automaticamente quando esegui il comando; non devi gestire manualmente nessuno di questi passaggi.

Capire l’output di Docker Hello World

Quando hello-world viene eseguito correttamente, vedrai un messaggio su più righe che spiega cosa è appena successo.

Output di docker run hello-world

L’output inizia con una conferma che Docker non ha trovato l’immagine localmente, quindi l’ha scaricata da Docker Hub. Vedrai qualcosa come "Unable to find image 'hello-world:latest' locally" seguito dalle barre di avanzamento del download.

Segue il messaggio principale che conferma che Docker funziona correttamente. Questo messaggio ti guida attraverso gli step esatti eseguiti da Docker. Spiega che il demone Docker ha scaricato l’immagine, creato un container a partire da essa, eseguito l’eseguibile al suo interno e inviato l’output al tuo terminale.

Il messaggio include anche i prossimi passi che puoi provare. Suggerisce di eseguire un container più interattivo come Ubuntu, che resta in esecuzione e ti permette di lanciare comandi al suo interno. Questo ti aiuta a capire la differenza tra un container di test una tantum e i container reali che userai in sviluppo.

Infine vedrai il container terminare. Il programma hello-world è progettato per stampare il suo messaggio e fermarsi subito — non è un servizio o un’applicazione a lunga esecuzione. Il compito del container è finito quando conferma che Docker funziona.

Se vedi questo output completo senza errori, la tua installazione di Docker funziona correttamente e sei pronto per eseguire container reali.

Problemi comuni con Docker Hello World

Anche un test semplice come hello-world può fallire se Docker non è configurato correttamente. Ecco i problemi più comuni e come risolverli.

Comando Docker non trovato

Se vedi "docker: command not found" o "docker is not recognized", Docker non è installato o non è nel PATH di sistema.

Su Linux, verifica se Docker è installato:

which docker

Image 2 - Docker location

Percorso di Docker

Se non restituisce nulla, devi installare Docker. Su macOS e Windows, assicurati che Docker Desktop sia installato e in esecuzione.

Errori di permessi negati

Potresti vedere "permission denied while trying to connect to the Docker daemon socket."

Succede quando il tuo account utente non ha i permessi per accedere a Docker. Su Linux devi eseguire Docker con sudo oppure aggiungere il tuo utente al gruppo docker:

sudo usermod -aG docker $USER

Esci e rientra perché la modifica abbia effetto. Su macOS e Windows con Docker Desktop questo non è un problema.

Demone Docker non in esecuzione

Se ricevi "Cannot connect to the Docker daemon", il servizio Docker non è in esecuzione.

Su Linux, avvia il servizio Docker:

sudo systemctl start docker

Su macOS e Windows, apri Docker Desktop. Il demone si avvia automaticamente quando l’applicazione è in esecuzione. Vedrai un’icona di Docker nella system tray quando è pronto.

Problemi di rete durante il download dell’immagine

A volte Docker non riesce a scaricare l’immagine hello-world da Docker Hub. Vedrai errori relativi al pull o timeout di connessione.

Per prima cosa controlla la connessione Internet. Se sei dietro un firewall o proxy aziendale, potresti dover configurare Docker per usarlo. Su Linux, questo va in /etc/systemd/system/docker.service.d/http-proxy.conf. Su Docker Desktop, puoi impostare il proxy nelle Impostazioni.

Se questi interventi non funzionano, di solito il messaggio di errore ti indirizza nella direzione giusta — leggilo con attenzione.

Cosa fare dopo Docker Hello World

Ora che hai confermato che Docker funziona, ecco dove andare dopo.

Esegui un container reale con una shell interattiva. Prova a scaricare ed eseguire un container Ubuntu:

docker run -it ubuntu bash

Image 3 - Ubuntu bash

Ubuntu bash

Le opzioni -it ti forniscono un terminale interattivo dentro al container. Puoi eseguire comandi, installare pacchetti ed esplorare come funzionano i container. Digita exit per uscire dal container.

Esplora le immagini disponibili su Docker Hub. Troverai immagini ufficiali per database come PostgreSQL e MySQL, linguaggi come Python e Node.js e strumenti come Redis e Nginx. Sfoglia su hub.docker.com o cerca direttamente da riga di comando:

docker search python

Immagini Python disponibili.

Crea la tua immagine con un Dockerfile. Inizia semplice: crea un file chiamato Dockerfile che copia il codice della tua applicazione in un container e definisce come eseguirla. Anche un Dockerfile di base con un paio di righe ti insegnerà come le immagini vengono create da istruzioni.

Conclusione

Il comando docker run hello-world fa una cosa bene: dimostra che l’installazione di Docker funziona.

Non è un’applicazione reale. Non ti insegnerà a creare container o distribuire servizi in produzione. Ma ti darà tranquillità perché saprai che non c’è nulla di sbagliato nella tua installazione di Docker.

Se hello-world è stato eseguito senza errori e ha stampato il suo messaggio di conferma, il tuo ambiente Docker è configurato correttamente e sei pronto a lavorare con container reali.

Allora, il prossimo passo? Segui il nostro corso Introduzione a Docker. Ti darà le basi di cui avrai bisogno per lavorare in team. Dopo di che, costruisci qualcosa di utile seguendo il nostro articolo 10 idee di progetti Docker.

Dario Radečić

Autore

Dario Radečić

Senior Data Scientist con base in Croazia. Top Tech Writer con oltre 700 articoli pubblicati, per più di 10 milioni di visualizzazioni. Autore del libro Machine Learning Automation with TPOT.

FAQs

Come posso ottimizzare le dimensioni di un’immagine Docker?

Inizia con immagini base più piccole come Alpine Linux invece di immagini complete di Ubuntu o Debian. Usa i build multi-stage per separare le dipendenze di build da quelle di runtime: così mantieni l’immagine finale snella escludendo compilatori e strumenti di build. Inoltre, combina i comandi RUN nel tuo Dockerfile per ridurre il numero di layer e usa .dockerignore per evitare di copiare nell’immagine file non necessari.

Quali sono le best practice per usare Docker in produzione?

Non eseguire mai i container come root: crea un utente non-root nel tuo Dockerfile e passa a quello. Usa tag di immagine specifici invece di latest per garantire distribuzioni coerenti tra ambienti. Imposta limiti di risorse (CPU e memoria) per i tuoi container per evitare che uno solo consumi tutte le risorse dell’host. Anche gli health check sono importanti: definiscili nel Dockerfile così gli orchestratori possono rilevare e riavviare i container non sani.

Come integro Docker nelle pipeline CI/CD?

La maggior parte delle piattaforme CI/CD, come GitHub Actions, GitLab CI e Jenkins, offre supporto Docker integrato. In genere, costruisci l’immagine Docker come parte della pipeline, la tagghi con lo SHA del commit o il numero di versione, la pubblichi su un registry come Docker Hub o AWS ECR e poi la distribuisci nel tuo ambiente. La chiave è automatizzare il flusso build-tag-push-deploy affinché ogni modifica al codice produca un’immagine container testata e versionata.

Quali sono i vantaggi dei build multi-stage in Docker?

I build multi-stage ti permettono di usare un set di strumenti per costruire l’applicazione e un altro, più piccolo, per eseguirla. Per esempio, puoi compilare un’app Go in uno stage che include il compilatore Go, poi copiare solo il binario compilato in un’immagine Alpine minima per lo stage finale. Questo riduce drasticamente le dimensioni dell’immagine: un’app compilata può richiedere 1 GB di strumenti di build ma solo 20 MB per l’esecuzione. Immagini più piccole significano distribuzioni più veloci e minori costi di storage.

Come posso garantire che i miei container Docker siano sicuri?

Analizza le tue immagini alla ricerca di vulnerabilità con strumenti come Docker Scout o Trivy prima di distribuirle. Non archiviare segreti nel Dockerfile o nelle variabili d’ambiente: usa Docker secrets o strumenti esterni per la gestione dei segreti. Tieni aggiornate le immagini base per ricevere le patch di sicurezza e limita le capacità dei container con il flag --cap-drop per rimuovere capacità Linux non necessarie. Inoltre, usa filesystem in sola lettura dove possibile e non esporre mai la socket Docker dentro ai container se non strettamente necessario.

Argomenti

Correlato