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 virtuale | Container Docker | |
|---|---|---|
| Cosa contiene | Un intero sistema operativo | Solo l'applicazione e le sue dipendenze |
| Dimensione | Gigabyte | Spesso megabyte |
| Avvio | Minuti | Secondi |
| Risorse | Elevate | Leggere, molti container su una sola macchina |
| Isolamento | Molto forte | Forte, 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:
docker --version
docker run hello-worldSe vedi un messaggio di benvenuto, Docker è pronto.
Il tuo primo container
Avvia un server web Nginx con un solo comando:
docker run -d -p 8080:80 --name mio-sito nginxApri 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:
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 scaricateCreare 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:
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:
docker build -t mia-app .
docker run mia-appOgni 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:
services:
web:
build: .
ports:
- "8080:5000"
cache:
image: redis:7Con 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 gratuitoDocker 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 gratuitoContinua 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