Last chance! 50% off DataCamp Premium
Sale ends in
La containerizzazione ha trasformato il modo in cui i team di engineering gestiscono e scalano le applicazioni, in particolare in ambito data management, analytics e machine learning. Impacchettando le applicazioni in ambienti isolati e leggeri, i container garantiscono prestazioni coerenti dallo sviluppo alla produzione.
Tra le diverse piattaforme disponibili, Docker spicca come la soluzione più popolare. La sua flessibilità e semplicità permettono ai professionisti dei dati di creare pipeline riproducibili, scalabili ed efficienti, favorendo al contempo la collaborazione.
In questo articolo, ti proponiamo un piano pratico per imparare Docker, con i passaggi per distribuire la tua prima semplice applicazione. Iniziamo!
Docker è una piattaforma open-source che semplifica il deploy, lo scaling e la gestione delle applicazioni tramite la containerizzazione.
I container sono ambienti leggeri e portabili che includono tutto il necessario per eseguire un'applicazione — codice, runtime, librerie e impostazioni — garantendo prestazioni coerenti su sistemi diversi. Nei progetti data, Docker viene usato per creare e gestire questi container, consentendo alle applicazioni di girare in modo affidabile su qualsiasi infrastruttura.
A differenza delle macchine virtuali (VM), che richiedono un proprio sistema operativo e un hypervisor per gestirle, Docker virtualizza solo il livello applicativo. Il risultato sono container più rapidi all'avvio, meno esigenti in termini di risorse e più facili da configurare.

Applicazioni containerizzate vs macchine virtuali. Fonte immagine: Docker
Per i professionisti dei dati, Docker aiuta a creare ambienti riproducibili, consentendo alle pipeline di dati di funzionare in modo coerente dallo sviluppo alla produzione. Riduce i problemi di dipendenze, semplifica i flussi di lavoro e favorisce la collaborazione offrendo ambienti standardizzati e condivisibili.
Inoltre, Docker si integra con popolari strumenti per i dati come Jupyter, TensorFlow, e Apache Hadoop.
Padroneggiare Docker può aumentare la produttività, ottimizzare i flussi di lavoro e rendere i tuoi progetti scalabili e facilmente distribuibili!
Il modo migliore per imparare Docker è metterci le mani. Ti guiderò quindi attraverso il tuo primo semplice deploy. Dopo questo, esploreremo piani di apprendimento per approfondire le tue conoscenze.
Prima di passare alla pratica con Docker, è importante afferrare alcuni concetti fondamentali. Ecco una panoramica dei principali concetti di Docker:

Panoramica dell'architettura Docker. Fonte immagine: Docker
Comprendere questi concetti chiave è essenziale prima di iniziare a distribuire applicazioni con Docker. Padroneggiare queste basi ti darà un'ottima base, rendendo la pratica sul campo più efficace.
Il corso Introduction to Docker può aiutarti notevolmente a consolidare le conoscenze attuali.
Per iniziare a usare Docker, devi installarlo sul tuo sistema. Di seguito trovi le istruzioni per diverse piattaforme. Per indicazioni più dettagliate, segui i link alla documentazione ufficiale di Docker.
Requisiti:
Passaggi:
1. Abilita WSL 2 (Windows Subsystem for Linux):
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart wsl --set-default-version 2
2. Installa Docker Desktop per Windows:
3. Avvia Docker Desktop:
4. Verifica l'installazione:
sudo docker --version
Documentazione ufficiale: Docker Desktop per Windows
Requisiti:
Passaggi:
1. Scarica Docker Desktop per macOS:
2. Installa Docker Desktop:
.dmg scaricato.3. Avvia Docker Desktop:
4. Verifica l'installazione:
docker --version
Documentazione ufficiale: Docker Desktop per Mac
Distribuzioni supportate:
Passaggi per Ubuntu/Debian:
1. Disinstalla le versioni precedenti:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
2. Configura il repository apt di Docker:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
3. Installa i pacchetti Docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4. Verifica l'installazione:
sudo docker --version
Documentazione ufficiale: Docker Engine su Debian
Ora che Docker è installato, è il momento di eseguire il tuo primo container. Inizieremo con la semplice immagine hello-world, perfetta per i principianti.
1. Apri il terminale (o il Prompt dei comandi su Windows) ed esegui il seguente comando:
sudo docker run hello-world
Questo comando indica a Docker di cercare localmente l'immagine hello-world. Se non la trova, Docker scaricherà l'immagine da Docker Hub e poi la eseguirà.
Se Docker è installato correttamente, vedrai un messaggio che dice “Hello from Docker!” insieme ai dettagli su come funziona il processo Docker. Questo output conferma che Docker ha scaricato con successo l'immagine, creato un nuovo container ed eseguito il codice al suo interno.
In questo passaggio, creerai un'immagine Docker personalizzata per un semplice progetto di data science. L'immagine includerà Python e librerie comuni per la data science come pandas, NumPy e scikit-learn.
1. Crea una nuova directory:
mkdir my-data-science-app
cd my-data-science-app
2. Crea un Dockerfile:
All'interno di questa directory, crea un file chiamato Dockerfile (senza estensione):
# Use an official Python runtime as a parent image
FROM python:3.8-slim
# Set the working directory in the container
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Make port 8888 available to the world outside this container
EXPOSE 8888
# Run a Jupyter notebook server when the container launches
CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root"]
Il Dockerfile fa quanto segue:
FROM python:3.8-slim: imposta come base l'immagine Python 3.8 nella variante slim, una versione minima di Python, ideale per un ambiente di data science leggero.WORKDIR /app: imposta la directory di lavoro all'interno del container su /app. Tutti i comandi successivi verranno eseguiti in questa directory.COPY . /app: copia tutti i file dalla directory corrente della macchina host nella directory /app nel container. Tipicamente include gli script di data science e i file di configurazione.RUN pip install --no-cache-dir -r requirements.txt: installa le librerie Python elencate in requirements.txt. Le librerie comuni per la data science includono pandas, NumPy e scikit-learn.EXPOSE 8888: rende disponibile alla macchina host la porta 8888, la porta predefinita per i notebook Jupyter.CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root"]: avvia un server Jupyter Notebook all'avvio del container, rendendolo accessibile dal browser.3. Crea un file requirements.txt:
Nella stessa directory, crea un file requirements.txt per elencare i pacchetti Python necessari alla tua applicazione:
pandas
numpy
scikit-learn
matplotlib
Questo file elenca le librerie Python che verranno installate all'interno del tuo container Docker.
4. Crea l'immagine Docker:
requirements.txt pronti, costruisci la tua immagine Docker con il seguente comando:sudo docker build -t my-data-science-app .
Il comando sopra fa quanto segue:
docker build: avvia il processo di costruzione di un'immagine Docker.-t my-data-science-app: l'opzione -t applica il tag “my-data-science-app” all'immagine..: il punto finale specifica il contesto di build, cioè la directory corrente. Docker userà i file in questa directory per costruire l'immagine.5. Esegui l'immagine Docker:
Una volta completata la build, puoi eseguire la nuova immagine Docker come container:
sudo docker run -p 8888:8888 my-data-science-app
Vediamo nel dettaglio il comando:
docker run: esegue un container basato sull'immagine specificata.-p 8888:8888: l'opzione -p mappa la porta 8888 della tua macchina locale alla porta 8888 nel container, consentendoti di accedere al server Jupyter Notebook su localhost:8888 nel browser.my-data-science-app: specifica l'immagine da eseguire.Docker Compose è uno strumento essenziale per gestire applicazioni multi-container. In un progetto di data science, potresti aver bisogno di container separati per componenti diversi, come un Jupyter Notebook, un database per l'archiviazione dei dati e uno strumento di visualizzazione.
Docker Compose ti permette di definire questi servizi in un unico file YAML, rendendo semplice avviare l'intero ambiente di data science con un solo comando.
1. Crea un file docker-compose.yml:
docker-compose.yml e inserisci le seguenti righe nel file:version: '3.8'
services:
jupyter:
image: jupyter/scipy-notebook:latest
volumes:
- ./notebooks:/home/joelwembo/work
ports:
- "8888:8888"
environment:
- JUPYTER_ENABLE_LAB=yes
postgres:
image: postgres:13-alpine
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
POSTGRES_DB: mydatabase
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
redis:
image: redis:alpine
ports:
- "6379:6379"
volumes:
postgres_data:
Vediamo cosa fa il file Docker Compose:
version: '3.8': specifica la versione del formato del file Docker Compose. La 3.8 è una versione comunemente usata che supporta molte funzionalità.services:: la sezione services definisce i diversi container (servizi) che compongono l'applicazione.jupyter:: questo servizio rappresenta un ambiente Jupyter Notebook essenziale per l'analisi dati interattiva.image: jupyter/scipy-notebook:latest: specifica l'immagine Docker da usare per Jupyter Notebook, che include librerie popolari come NumPy, pandas e matplotlib.volumes: - ./notebooks:/home/joelwembo/work: monta la directory notebooks sulla tua macchina host in /home/joelwembo/work all'interno del container, permettendoti di preservare e condividere i notebook. Nota: questo è il mio percorso personale e il tuo sarà diverso.ports: - "8888:8888": mappa la porta 8888 della macchina host alla porta 8888 del container, la porta predefinita per Jupyter Notebook.environment: - JUPYTER_ENABLE_LAB=yes: abilita JupyterLab, un'interfaccia più potente per lavorare con i notebook Jupyter.postgres:: questo servizio esegue un database PostgreSQL, spesso usato per archiviare e gestire grandi dataset nei progetti di data science.image: postgres:13-alpine: specifica l'immagine Docker di PostgreSQL versione 13, basata sulla leggera distribuzione Alpine Linux.environment:: queste variabili d'ambiente configurano il database con utente, password e nome del database.volumes: - postgres_data:/var/lib/postgresql/data: monta un volume Docker per conservare i dati del database al di fuori del container, così i tuoi dati non andranno persi quando il container viene fermato.ports: - "5432:5432": mappa la porta 5432 della macchina host alla porta 5432 del container, la porta predefinita per PostgreSQL.redis:: questo servizio esegue un server Redis, utilizzabile come datastore o cache in-memory veloce.image: redis:alpine: specifica l'immagine Redis nella variante leggera Alpine.ports: - "6379:6379": mappa la porta 6379 della macchina host alla porta 6379 del container, la porta predefinita per Redis.volumes:: questa sezione definisce i volumi con nome che possono essere condivisi tra servizi o conservare i dati tra i riavvii dei container.postgres_data:: crea un volume con nome per la persistenza dei dati di PostgreSQL.Per avviare la tua applicazione multi-container, esegui semplicemente:
sudo docker compose up
Questo comando crea le immagini (se necessario) e avvia i container definiti nel tuo file docker-compose.yml. Avvia sia l'applicazione web sia il servizio Redis, consentendo loro di comunicare come definito.
Hai appena distribuito la tua prima applicazione Docker! Non è fantastico? Ora, vediamo un piano per il tuo apprendimento continuo.
Ecco un piano settimana per settimana che puoi seguire. Sentiti libero di adattarlo alle tue esigenze specifiche.
Se ti serve un percorso più definito, lo skill track Containerization and Virtualization with Docker and Kubernetes è perfetto per te. Contiene quattro corsi essenziali.
docker run, docker ps, docker stop, docker rm, ecc.docker-compose.yml per definire applicazioni multi-container.Infine, ecco alcuni consigli e best practice per accelerare il tuo percorso di apprendimento di Docker.
La chiave per padroneggiare Docker è la pratica costante e concreta. Inizia lavorando su progetti personali, come containerizzare un semplice sito web o configurare un ambiente di sviluppo locale.
Man mano che prendi confidenza, mettiti alla prova con attività più complesse, come creare un'applicazione multi-container o distribuire un web server.
La sperimentazione regolare con casi d'uso diversi — ad esempio creare immagini Docker personalizzate o configurare una pipeline CI/CD — approfondirà la comprensione e ti aiuterà a consolidare i concetti chiave. Inoltre, partecipare a challenge o esercizi online su Docker è un ottimo modo per testare e migliorare le tue competenze in modo strutturato e orientato agli obiettivi.
Le risorse online sono preziose per imparare Docker. La documentazione ufficiale di Docker è un ottimo punto di partenza, con informazioni autorevoli e aggiornate.
Oltre a questo, ci sono molti corsi completi disponibili su piattaforme come DataCamp, che possono guidarti nel percorso di apprendimento.
Per chi preferisce imparare in modo visivo, i tutorial su YouTube del canale ufficiale di Docker e di altri formatori offrono contenuti utili e accessibili per rafforzare la comprensione.
Interagire con la community di Docker è un altro modo potente per far progredire l'apprendimento. Partecipa a forum come Docker Community Forums e Reddit per scambiare idee, fare domande e condividere esperienze con altri studenti e professionisti.
Partecipare a meetup, webinar o conferenze su Docker è anche un ottimo modo per restare aggiornato sulle tendenze del settore e ampliare la tua rete.
Contribuire a progetti open-source che utilizzano Docker può essere un ottimo modo per acquisire esperienza pratica e reale.
Siti come GitHub offrono opportunità per collaborare a progetti legati a Docker, permettendoti di imparare dagli altri e applicare le tue competenze in contesti diversi. La collaborazione insita nel lavoro open-source ti espone a approcci e soluzioni differenti, favorendo una comprensione più profonda delle capacità di Docker.
Infine, restare aggiornato con gli ultimi sviluppi di Docker è essenziale per mantenere la padronanza. Tieni d'occhio il blog ufficiale di Docker e le note di rilascio per novità su funzionalità o cambiamenti. Partecipare alle discussioni della community su forum e social media ti informerà anche su tendenze emergenti e best practice, aiutandoti a perfezionare continuamente le tue competenze su Docker.
Con pratica regolare, coinvolgimento attivo nella community e apprendimento continuo, costruirai una solida base su Docker e resterai pronto a gestire gli ultimi sviluppi nel campo.
Docker ha rivoluzionato il deploy delle applicazioni e la gestione dei dati impacchettando applicazioni e dipendenze in container isolati. Questo risolve problemi comuni come le incongruenze dell'ambiente e garantisce flussi di lavoro coerenti, scalabili ed efficienti per i professionisti dei dati.
Questa guida ti ha fornito i passaggi fondamentali per padroneggiare Docker, dai concetti chiave alla pratica sul campo. Per approfondire ulteriormente, valuta di esplorare risorse aggiuntive come i corsi Introduction to Docker e Intermediate Docker su DataCamp. Man mano che avanzi, ampliare le competenze con strumenti di orchestrazione come Kubernetes è altrettanto importante — dai un'occhiata al corso Introduction to Kubernetes per iniziare.
Esercitandoti regolarmente, usando le risorse disponibili e restando attivo nella community, sbloccherai tutto il potenziale di Docker per gestire ambienti dati complessi.
Il tempo necessario per imparare Docker dipende dal tuo livello di esperienza. Per i principianti, possono bastare pochi giorni per familiarizzare con le basi, come container, immagini e Dockerfile. Per una comprensione più profonda, inclusi concetti come Docker Compose e Kubernetes, possono servire alcune settimane di pratica regolare.
Sebbene Docker sia essenziale per la containerizzazione, Kubernetes è prezioso per gestire e orchestrare deploy su larga scala tra più container. Dopo aver padroneggiato Docker, imparare Kubernetes è altamente consigliato per lavorare su applicazioni complesse o quando devi automatizzare lo scaling e la gestione dei container.
Per acquisire esperienza pratica con Docker, puoi iniziare con piccoli progetti come containerizzare un sito web personale o configurare un ambiente di sviluppo locale per un'app web. Quando sarai più avanti, prova a creare un'applicazione multi-container con Docker Compose o a distribuire una semplice pipeline CI/CD. Puoi anche fare pratica contribuendo a progetti open-source che usano Docker.
Sì, Docker è estremamente utile per i professionisti dei dati. Ti permette di creare ambienti riproducibili che garantiscono il corretto funzionamento delle pipeline dallo sviluppo alla produzione. Docker semplifica anche la gestione delle dipendenze e migliora la collaborazione tra team, rendendolo uno strumento essenziale per i flussi di lavoro dati moderni.
Alcune delle migliori risorse per iniziare a imparare Docker includono:
AWS Certified Cloud Solutions Architect, DevOps, Cloud Engineer con una profonda conoscenza dell’architettura ad alta disponibilità e dei relativi concetti. Ho competenze in cloud engineering e DevOps e sono abile nell’utilizzare risorse open source per implementare applicazioni enterprise. Sviluppo applicazioni cloud su AWS usando AWS CDK, AWS SAM, CloudFormation, Serverless Framework, Terraform e Django.
Approfondisci Docker con questi corsi!
Programma
Corso
Corso
blog
Tim Lu
12 min

blog
Abid Ali Awan
15 min

blog
Abid Ali Awan
10 min