Guide pratiche

Docker spiegato da zero: cos'è, come funziona e perché lo usano tutti

Docker spiegato da zero: cos'è un container, differenza con le macchine virtuali, primi comandi, Dockerfile, Docker Compose ed errori da evitare.

EFEugenio Fontana 9 min di lettura

In breve

Docker crea ed esegue container: pacchetti che contengono un'applicazione con tutto ciò che le serve. Così gira allo stesso modo ovunque: sul tuo portatile, sul server di un collega o nel cloud.

Docker è lo strumento più diffuso per creare ed eseguire container: pacchetti che contengono un'applicazione insieme a librerie, configurazioni e dipendenze. In questa guida per principianti trovi Docker spiegato da zero: cos'è, che problema risolve, i concetti fondamentali, i primi comandi e perché è diventato uno standard per chi lavora nel cloud e nel DevOps.

Docker: cos'è in breve

Docker è una piattaforma che permette di impacchettare un'applicazione in un container e di eseguirlo su qualsiasi computer che abbia Docker installato. Un container è isolato dal resto del sistema, parte in pochi secondi e occupa poche risorse.

L'analogia dei container per le merci

Prima dei container standard, ogni nave caricava sacchi, casse e barili in modo diverso. Con i container, qualsiasi merce viaggia allo stesso modo su navi, treni e camion. Docker fa la stessa cosa con il software.

Il problema che risolve: “sul mio computer funziona”

È la frase più famosa dello sviluppo software. Un'applicazione funziona sul computer di chi l'ha scritta, ma si rompe sul server: la versione di Python è diversa, manca una libreria o una configurazione è sbagliata.

Con Docker, l'applicazione viaggia insieme al suo ambiente. Chi la riceve non deve installare niente a parte Docker: avvia il container e funziona, esattamente come sul computer di partenza.

Container e macchine virtuali: la differenza

Macchina virtualeContainer Docker
Cosa contieneUn intero sistema operativoSolo l'applicazione e le sue dipendenze
DimensioneGigabyteSpesso megabyte
AvvioMinutiSecondi
RisorseElevateLeggere, molti container su una sola macchina
IsolamentoMolto forteForte, condivide il kernel del sistema ospite

Container e macchine virtuali non sono nemici: nel cloud, spesso, i container girano proprio dentro macchine virtuali, come le istanze EC2 di AWS.

I concetti base di Docker

Immagine

Il “modello” di un container, di sola lettura. Contiene l'applicazione e tutto ciò che le serve.

Container

Un'immagine in esecuzione. Da una stessa immagine puoi avviare molti container.

Dockerfile

Il file di testo con le istruzioni per costruire un'immagine.

Registry

Un archivio di immagini. Il più noto è Docker Hub; su AWS esiste Amazon ECR.

Volume

Uno spazio in cui salvare dati che devono sopravvivere quando il container viene eliminato.

Installare Docker

Su Windows e macOS si installa Docker Desktop, che include tutto il necessario. Su Linux si installa Docker Engine dal gestore di pacchetti. Per verificare che funzioni:

Terminale
docker --version
docker run hello-world

Se vedi un messaggio di benvenuto, Docker è pronto.

Il tuo primo container

Avvia un server web Nginx con un solo comando:

Terminale
docker run -d -p 8080:80 --name mio-sito nginx

Apri il browser su http://localhost:8080: vedrai la pagina di benvenuto di Nginx. In pochi secondi Docker ha scaricato l'immagine, creato il container e collegato la porta 8080 del tuo computer alla porta 80 del container.

Alcuni comandi che userai sempre:

Comandi essenziali
docker ps                 # elenca i container attivi
docker logs mio-sito      # mostra i log del container
docker stop mio-sito      # ferma il container
docker rm mio-sito        # elimina il container
docker images             # elenca le immagini scaricate

Creare la tua immagine con un Dockerfile

Supponi di avere una piccola applicazione Python in un file app.py, con le librerie elencate in requirements.txt. Ecco un Dockerfile per impacchettarla:

Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]

Poi costruisci l'immagine e avvia il container:

Terminale
docker build -t mia-app .
docker run mia-app

Ogni riga del Dockerfile è un passo: parti da un'immagine base con Python, copi i file, installi le dipendenze e indichi il comando da eseguire all'avvio.

Docker Compose in breve

Le applicazioni reali sono spesso fatte di più parti: un'applicazione web, un database, una cache. Docker Compose permette di descriverle tutte in un unico file e avviarle insieme:

compose.yaml
services:
  web:
    build: .
    ports:
      - "8080:5000"
  cache:
    image: redis:7

Con docker compose up parte tutto, con docker compose down si ferma tutto.

Ti piacerebbe lavorare con Docker e il cloud?

Fai il quiz gratuito di 2 minuti: 9 domande per capire se hai la predisposizione giusta per un lavoro nel cloud.

Fai il quiz gratuito

Docker nel cloud e nel lavoro

Docker è ovunque nel cloud. Su AWS i container si eseguono con servizi come Amazon ECS e AWS Fargate, che gestiscono i server al posto tuo, oppure con Amazon EKS, basato su Kubernetes. Quando servono decine o centinaia di container entra in gioco proprio Kubernetes: trovi le basi nella guida su Kubernetes per principianti.

Per un cloud engineer o un DevOps engineer, Docker è una competenza di base richiesta in moltissimi annunci. Trovi come si inserisce nel percorso nella guida sul DevOps engineer.

Corso Docker: cosa deve insegnarti

Se stai valutando un corso Docker, controlla che ti faccia arrivare almeno a:

  • creare e gestire container dalla riga di comando;
  • scrivere Dockerfile ordinati e con immagini leggere;
  • usare volumi e reti tra container;
  • descrivere un'applicazione multi-container con Docker Compose;
  • pubblicare un'immagine su un registry e farla girare nel cloud.

Il resto si impara lavorando.

Gli errori più comuni da principiante

Immagini enormi

Partire da immagini base pesanti rende tutto più lento. Usa versioni ridotte, come le varianti slim o alpine.

Password nell'immagine

Tutto ciò che copi nell'immagine può essere letto da chi la scarica. Passa segreti e configurazioni con variabili d'ambiente o servizi dedicati.

Usare sempre il tag latest

Oggi funziona, domani l'immagine cambia e l'applicazione si rompe. Indica una versione precisa.

Dati importanti dentro il container

Quando il container viene eliminato, i dati spariscono. Per database e file da conservare, usa i volumi.

Domande frequenti

Docker è gratis?

Docker Engine è gratuito e open source. Docker Desktop è gratuito per uso personale, studio e piccole aziende, mentre per le aziende più grandi è previsto un abbonamento. Controlla le condizioni aggiornate sul sito ufficiale.

Che differenza c'è tra Docker e Kubernetes?

Docker crea ed esegue i container. Kubernetes li orchestra quando sono tanti: li distribuisce su più server, li riavvia se si bloccano e ne aumenta il numero quando il traffico cresce.

Serve conoscere Linux per usare Docker?

Per iniziare no, ma aiuta molto: i container sono basati su tecnologie Linux e la maggior parte delle immagini usa Linux. Le basi del terminale sono un ottimo investimento.

Docker sostituisce le macchine virtuali?

Non del tutto. Container e macchine virtuali risolvono problemi diversi, e nel cloud si usano spesso insieme.

In sintesi

  • Docker impacchetta un'applicazione con tutto ciò che le serve in un container, che gira allo stesso modo ovunque.
  • I concetti base sono immagine, container, Dockerfile, registry e volume.
  • Con pochi comandi avvii container, costruisci immagini e, con Docker Compose, applicazioni multi-container.
  • È una competenza di base per cloud engineer e DevOps engineer, e il primo passo verso Kubernetes.

Lavorare con Docker e il cloud fa per te?

Fai il quiz gratuito di 2 minuti prima di investire tempo o soldi.

Fai il quiz gratuito

Continua a esplorare

Vuoi capire se questo percorso fa per te?

Il quiz gratuito richiede due minuti e ti aiuta a capire se una carriera nel cloud è adatta al tuo punto di partenza.

Fai il quiz gratuito