Cos'è Docker? I container spiegati per non sviluppatori
Docker è uno strumento che impacchetta un'app insieme a tutto ciò che le serve per funzionare — la versione giusta del linguaggio, le librerie, gli strumenti di sistema e le impostazioni — in un'unità standard chiamata container. Un container funziona allo stesso modo sul portatile di uno sviluppatore, su un server di test o su un host cloud, ponendo fine al classico problema del «ma sul mio computer funzionava». La ricetta per costruire un container è un breve file di testo chiamato Dockerfile.
Perché Docker conta quando costruisci con l'AI
Se la tua app ha un backend — un'API in Python, Node, C# o Java — deve girare in un posto con esattamente il software giusto installato. Docker è il modo più comune per renderlo ripetibile.
- Deploy dei backend. Molti hosting, Mythex compreso, distribuiscono i backend costruendo un container da un Dockerfile. In Mythex, chiedendo «un'API Web in C#» o «un backend Java» ottieni l'app più un Dockerfile, e Pubblica costruisce l'immagine e la distribuisce (backend API).
- Lasciare una piattaforma. Se esporti un'app costruita con l'AI, un Dockerfile rende molto più facile farla girare su un altro host. Vedi come esportare e ospitare da sé un'app costruita con l'AI.
- Lavorare con gli sviluppatori. Uno sviluppatore che entra nel tuo progetto può avviare l'intera app con uno o due comandi, invece di passare un giorno a installare cose.
Un'analogia quotidiana: i container delle navi
Prima dei container standard per il trasporto, il carico veniva caricato pezzo per pezzo — sacchi, botti, casse — e ogni porto lo gestiva in modo diverso. Il container d'acciaio standard ha cambiato tutto: lo impacchetti una volta, e qualsiasi nave, gru, treno o camion può spostarlo senza preoccuparsi di cosa c'è dentro.
Docker fa lo stesso per il software:
- Il Dockerfile è la lista di carico e le istruzioni.
- L'immagine è il container sigillato e impacchettato.
- Un container in esecuzione è quella cassa messa al lavoro su una nave — qui, un server.
- Docker Engine è la gru e la nave: il software su un server che sa come far girare qualsiasi container.
Come funziona Docker
| Componente | Cos'è |
|---|---|
| Dockerfile | Un file di testo con istruzioni passo passo per costruire l'immagine. |
| Immagine | Un pacchetto in sola lettura: basi del sistema operativo, runtime, librerie e il tuo codice. |
| Container | Un'istanza in esecuzione di un'immagine, isolata dalle altre app sulla stessa macchina. |
| Registry | Un luogo dove archiviare e condividere le immagini, come Docker Hub o il registry di un provider cloud. |
| Docker Engine | Il servizio in background che costruisce le immagini ed esegue i container. Gratuito e open source. |
| Docker Desktop | Un'app per Mac, Windows e Linux che unisce il motore a un'interfaccia grafica. |
Container e macchine virtuali: una macchina virtuale finge di essere un intero computer separato con un proprio sistema operativo, quindi è pesante e lenta ad avviarsi. Un container condivide il kernel del sistema operativo dell'host e isola solo l'app e i suoi file, quindi di solito si avvia in pochi secondi e usa molta meno memoria. Molti container possono girare fianco a fianco su un solo server.
Un esempio pratico: una piccola API Python
Immagina che il tuo AI builder abbia creato un backend Python FastAPI per un'app di prenotazioni. Il Dockerfile potrebbe essere così:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Riga per riga:
| Riga | Cosa fa |
|---|---|
FROM python:3.12-slim | Parte da un'immagine ufficiale che ha già Python 3.12 installato. |
WORKDIR /app | Lavora dentro la cartella /app del container. |
COPY requirements.txt . e RUN pip install ... | Copia l'elenco delle librerie e le installa. |
COPY . . | Copia il codice dell'app. |
EXPOSE 8000 | Indica che l'app ascolta sulla porta 8000. |
CMD [...] | Il comando che avvia il server web quando il container parte. |
In parole semplici: «Parti da Python 3.12. Installa le librerie elencate in requirements.txt. Copia il codice. Avvia il server web sulla porta 8000.»
Uno sviluppatore (o una piattaforma di hosting) esegue poi due comandi:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
Il primo costruisce l'immagine e le dà il nome booking-api. Il secondo avvia un container e collega la porta 8000 della macchina alla porta 8000 dentro il container. L'API ora è in esecuzione — allo stesso modo in cui girerà su qualsiasi server con Docker.
Nota cosa non c'è nell'immagine: password e chiavi API. Vengono passate all'avvio del container, come variabili d'ambiente, così la stessa immagine può girare in test e in produzione con impostazioni diverse.
Termini chiave
| Termine | Significato |
|---|---|
| Container | Un pacchetto isolato e in esecuzione di un'app e delle sue dipendenze. |
| Immagine | Il modello da cui si avvia un container. |
| Immagine base | Il punto di partenza nella riga FROM di un Dockerfile, come python:3.12-slim o node:22. |
| Layer | Ogni passaggio del Dockerfile aggiunge un layer in cache, che rende più veloci le ricostruzioni. |
| Mappatura delle porte | Collegare una porta dell'host a una porta dentro il container. |
| Volume | Spazio di archiviazione che sopravvive quando un container viene sostituito. I container stessi sono usa e getta. |
| Docker Compose | Un file che descrive più container che girano insieme, come un'API più un database. |
| Kubernetes | Un sistema per far girare molti container su molti server. La maggior parte delle piccole app non ne ha bisogno. |
Idee sbagliate comuni
- «Docker è una macchina virtuale.» È più leggero: i container condividono il kernel dell'host.
- «I dati salvati dentro un container sono al sicuro.» I container sono pensati per essere eliminati e sostituiti. Tutto ciò che deve durare — dati utente, caricamenti — va in un database, in un archivio file o in un volume.
- «Mettere i segreti nel Dockerfile va bene perché è privato.» Le immagini vengono condivise e caricate nei registry. Passa invece i segreti al momento dell'esecuzione.
- «Docker rende un'app sicura.» L'isolamento aiuta, ma un container che esegue software obsoleto con impostazioni deboli resta vulnerabile.
- «Ogni app ha bisogno di Docker.» Un sito statico o un frontend semplice di solito viene ospitato come file normali, senza alcun container.
- «Docker Desktop è gratuito per tutti.» Il motore è gratuito; secondo i termini di Docker, Docker Desktop richiede un abbonamento a pagamento per le aziende più grandi.
Cosa chiedere al tuo AI builder
- «Questa app ha bisogno di un Dockerfile? Se sì, spiega ogni riga in parole semplici.»
- «Usa un'immagine base piccola e ufficiale e fissa la versione del linguaggio.»
- «Tieni i segreti fuori dall'immagine. Leggili dalle variabili d'ambiente al momento dell'esecuzione.»
- «Assicurati che i caricamenti e i dati vengano salvati nel database o nell'archivio file, non dentro il container.»
- «Aggiungi un file Docker Compose così uno sviluppatore può avviare frontend, API e database in locale con un solo comando.»
- «Aggiungi un endpoint di health check così l'host può capire se l'API è attiva.»
Docker in Mythex
Non devi installare né far girare Docker per usare Mythex. Il tuo progetto gira in un sandbox cloud privato, e quando chiedi un backend che richiede un container — per esempio C#, Java o un servizio Node o Python personalizzato — Mythex scrive l'app più un Dockerfile, la mostra in anteprima nel sandbox e la distribuisce quando pubblichi, senza alcun hosting da configurare (come viene scelta la tecnologia). Con il piano Pro puoi esportare il progetto o sincronizzarlo con GitHub e portarti con te il Dockerfile. Per capire come backend e frontend si combinano, vedi frontend vs backend.
Domande
Cos'è Docker in parole semplici?
Docker è uno strumento che impacchetta un'app insieme a tutto ciò che le serve per funzionare — il runtime del linguaggio, le librerie e le impostazioni — in un'unità standard chiamata container. Il container funziona allo stesso modo su un portatile, su un server di test o su un host cloud.
Qual è la differenza tra un'immagine Docker e un container?
Un'immagine è il modello impacchettato e in sola lettura: l'app e le sue dipendenze, costruite a partire da un Dockerfile. Un container è una copia in esecuzione di quell'immagine. Da una sola immagine puoi avviare molti container.
Docker è una macchina virtuale?
No. Una macchina virtuale emula un intero computer con un proprio sistema operativo. I container condividono il kernel del sistema operativo della macchina ospitante e isolano solo l'app, quindi si avviano più in fretta e usano meno memoria.
Docker è gratuito?
Docker Engine, il nucleo che esegue i container, è gratuito e open source. A settembre 2026, i termini di Docker dicono che Docker Desktop è gratuito per progetti open source non commerciali e per aziende con meno di 250 dipendenti e meno di 10 milioni di dollari di fatturato annuo; le aziende più grandi richiedono un abbonamento a pagamento.
Devo imparare Docker per costruire un'app con l'AI?
Di solito no. Molti AI builder gestiscono i container al posto tuo. Conoscere cos'è un Dockerfile ti aiuta però a capire come viene impacchettato un backend e a far girare o ospitare l'app altrove, se la esporti.