Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Docker - Corso COMPLETO in ITALIANO per PRINCIPIANTI
Rating: 4.8 out of 5(52 ratings)
370 students

Docker - Corso COMPLETO in ITALIANO per PRINCIPIANTI

Corso completo su Docker con un pochino di teoria e un sacco di esempi pratici..
Created byManuel Zavatta
Last updated 12/2025
Italian

What you'll learn

  • Imparare i fondamenti di Docker
  • Capire come sfruttare la containerizzazione
  • Utilizzare Docker in ambito software development
  • Utilizzare Docker in ambito operations

Course content

3 sections33 lectures4h 28m total length
  • Storia di Docker e dei container8:43

    Inizia il tuo viaggio nel mondo dei container esplorando l'evoluzione dello sviluppo software e le sfide delle applicazioni monolitiche, che hanno portato all'esigenza di soluzioni come Docker. Scopri la storia e l'analogia dei container marittimi che hanno standardizzato il trasporto e la distribuzione, per capire come Docker abbia risolto il problema della compatibilità degli ambienti di sviluppo. Vedremo i punti di forza di Docker per gli sviluppatori: on-boarding rapido, testing isolato e deployment certo tra locale e produzione.

  • L'ambiente di formazione7:31

    Per sperimentare i concetti di Docker, scegli il tuo ambiente di training ideale: Docker Desktop su Windows/Mac/Linux per comodità e GUI, il Docker Engine su un server Linux per un'esperienza di produzione completa, oppure usa il sito Play with Docker per un ambiente temporaneo e senza installazioni. Imparerai anche a distinguere tra l'Engine (il motore in background), la CLI (l'interfaccia a riga di comando) e Docker Desktop, e come verificarne la corretta installazione.

  • Avviare il primo container9:15

    Metti alla prova la tua installazione lanciando i primi container e familiarizza con il comando chiave docker run. Scopri il parametro che ti permette di avviare container in modalità interattiva e come host e container operano in modo indipendente, pur condividendo lo stesso kernel. Infine, abbraccia il concetto fondamentale del workflow Docker che predilige la creazione di immagini personalizzate e riproducibili per una gestione ottimale dell'ambiente di sviluppo.

  • Eseguire container in background9:32

    In questo capitolo vedrai come eseguire i container in modalità non interattiva e in background per farli operare come servizi. Imparerai a monitorare lo stato dei processi in esecuzione e a ispezionare i loro log, anche in tempo reale, scoprendo l'importanza del processo principale. Concluderemo esplorando le tecniche per l'arresto controllato o forzato dei container e visualizzando la lista completa di quelli attivi e spenti.

  • Riavviare e collegarsi ai container5:40

    Scoprirai come connetterti nuovamente a un container in esecuzione in background e la sequenza di shortcut per il distacco sicuro senza terminarlo. Imparerai poi l'importante distinzione tra avviare un nuovo container e riavviare uno esistente per recuperarne lo stato precedente, e come riattaccarti a quest'ultimo per interagire. Infine, vedremo che più client possono collegarsi simultaneamente allo stesso container.

  • Comprendere le immagini Docker8:54

    Esploreremo la struttura fondamentale delle immagini Docker, composte da file e metadati, e come esse siano organizzate in layer impilati per ottimizzare spazio e distribuzione. Capirai il concetto di copy-on-write e il layer di read-write esclusivo per i container, essenziale per la creazione di istanze da un'immagine. Vedrai le differenze tra immagini ufficiali e della community e l'importanza di specificare sempre un tag per la stabilità in produzione.

  • Creare immagini in modo interattivo4:16

    Vedrai come creare la tua prima immagine personalizzata in modo interattivo partendo da un container base e installando un nuovo pacchetto. Imparerai poi a tracciare le modifiche apportate al filesystem del container utilizzando un meccanismo che evidenzia solo i file aggiunti o modificati. Infine, scoprirai come salvare queste modifiche in una nuova immagine, assegnandole un nome (tag), pur sottolineando che questa tecnica manuale non è il metodo consigliato per l'automazione in produzione.

  • Creare immagini con un Dockerfile13:06

    Abbandona la creazione manuale per automatizzare il processo di costruzione delle immagini con il Dockerfile, il file di testo che funge da vera e propria ricetta. Imparerai a usare il builder di Docker per trasformare le istruzioni in layer di immagine e scoprirai l'efficace sistema di caching per velocizzare le successive build. Verrà anche analizzata l'history dell'immagine e la differenza fondamentale tra la sintassi shell e la sintassi exec per i comandi di costruzione.

  • Punti di ingresso e comandi7:03

    Scoprirai come definire il comportamento di un container all'avvio utilizzando le istruzioni CMD e ENTRYPOINT. Imparerai che CMD imposta un comando di default (facilmente sovrascrivibile), ideale per immagini con più binari. In contrasto, ENTRYPOINT definisce un comando fisso al quale vengono concatenati gli argomenti passati all'avvio, rendendolo perfetto per immagini che fungono da singola applicazione. Vedrai inoltre perché è cruciale usare la sintassi JSON per l'ENTRYPOINT.

  • Copiare file durante la build7:14

    Scopri come trasferire file locali nell'immagine usando l'istruzione COPY all'interno del Dockerfile. Approfondiremo il concetto di contesto di build e l'uso del file .dockerignore per escludere file non necessari. Vedrai in pratica come la modifica dei file invalidi la cache per garantire build sempre aggiornate.

  • Ridurre la dimensione delle immagini9:36

    L'ottimizzazione delle immagini è cruciale; questo capitolo esplora perché la rimozione manuale dei file superflui non funziona a causa dei layer. Vedremo diverse tecniche per creare immagini snelle, concentrandoci sulla multi-stage build come metodo più pulito ed efficiente per separare l'ambiente di compilazione da quello di esecuzione.

  • Registri delle immagini6:50

    Questo capitolo spiega la funzione di un Images Registry, il magazzino per archiviare e condividere le immagini Docker, e introduce il concetto di tag. Imparerai a utilizzare il famoso Docker Hub per pubblicare le tue immagini personalizzate e vedrai come configurare un semplice registry privato.

  • Nominare, etichettare e ispezionare5:26

    Scoprirai come assegnare nomi univoci ai tuoi container per un facile riferimento, oltre a come applicare etichette chiave-valore per organizzarli e filtrarli. Imparerai anche a usare l'ispezione per accedere a tutti i dettagli di configurazione e sullo stato dei tuoi container.

  • Accedere all'interno di un container6:14

    Questo capitolo spiega i metodi per interagire con i container, sottolineando che l'accesso al terminale (console) non è sempre la soluzione migliore. Imparerai come eseguire comandi all'interno di un container in esecuzione e come ispezionare il filesystem di un container arrestato o in crash per il debug, attraverso la creazione di una nuova immagine.

  • Comprendere le reti Docker6:58

    Questo capitolo introduce i concetti base del networking in Docker, mostrando come esporre servizi di rete dai container verso l'host. Imparerai a pubblicare le porte automaticamente o manualmente e scoprirai i metodi per identificare gli indirizzi IP interni assegnati ai container per verificarne la connettività.

  • Driver di rete per container5:25

    Esplorerai i diversi driver di rete di Docker, dal predefinito Bridge che isola i container, ai driver Host e None per specifici casi d'uso, fino al driver Container per la condivisione di rete. Imparerai anche a creare reti Bridge personalizzate per consentire la comunicazione tra container utilizzando il loro nome.

  • Scoperta dei servizi con i container5:20

    Questo capitolo illustra come i container possono comunicare tra loro all'interno di una rete Docker personalizzata. Scoprirai il meccanismo di Service Discovery che permette a un'applicazione di risolvere il nome di un altro servizio usando gli alias di rete o il nome del container. Verrà anche mostrato come connettere o disconnettere un container da una rete in tempo reale.

  • Lavorare con i volumi11:22

    Scoprirai come usare i Volumi Docker per garantire la persistenza dei dati, separandoli dal ciclo di vita del container. Imparerai a creare, montare e condividere volumi tra container (anche per migrazioni di database) e vedrai come utilizzare il bind-mount per la condivisione diretta di directory con l'host, ideale per lo sviluppo locale.

  • Flusso di sviluppo locale5:56

    Scoprirai come i container risolvono i problemi di dipendenze mancanti e di ambienti inconsistenti tra i membri del team. Verrà illustrato un semplice workflow di sviluppo locale con Node.js, utilizzando un volume bind-mount per abilitare il live reloading del codice e garantire che il progetto funzioni ovunque.

  • Sviluppare tramite Compose9:04

    Questo capitolo introduce Docker Compose come soluzione per definire e gestire interi stack di applicazioni (come Node.js e PostgreSQL) attraverso un unico file. Imparerai a definire servizi multipli, gestire la rete e le variabili d'ambiente in modo centralizzato, semplificando il lancio, l'arresto e la rimozione di ambienti di sviluppo complessi con un solo comando.

  • Sintassi avanzata dei Dockerfile15:42

    Questo capitolo approfondisce le istruzioni chiave per la creazione di immagini Docker complesse ed efficienti. Verranno esaminate istruzioni come RUN (per comandi a build-time), EXPOSE, COPY e ADD (per gestire file locali e remoti/archivi), VOLUME (per dati persistenti) e le istruzioni di metadata come CMD e ENTRYPOINT, che definiscono il comportamento di avvio del container. Verrà anche discusso come minimizzare i layer e sfruttare la cache.

  • Configurazione delle applicazioni4:00

    Analizzeremo i diversi metodi per configurare un'applicazione containerizzata, con i relativi pro e contro, in base a fattori come la dimensione e la frequenza di aggiornamento della configurazione. Verranno esaminati i parametri della riga di comando, le variabili d'ambiente (ideali per parametri opzionali e stack complessi), la configurazione baked-in nel codice e i volumi di configurazione.

  • Limitazione delle risorse6:28

    Questo capitolo affronta il tema della limitazione delle risorse (memoria, CPU e storage) per i container. Imparerai a usare opzioni come --memory e --memory-swap per controllare l'utilizzo di RAM e swap, --cpus per limitare l'uso della CPU in percentuale (o core), e --cpu-shares per definire la priorità. Viene inoltre evidenziata la dipendenza del limite di storage dal driver e l'importanza di monitorare lo spazio utilizzato con docker ps -as.

  • Registrazione e monitoraggio9:34

    Esploreremo le diverse strategie di logging per i container, partendo dall'uso di base di standard output e standard error (gestiti dal driver di default json-file). Vengono discussi i limiti della scrittura su file locali e la necessità di limitare le dimensioni dei file di log. Infine vedremo una configurazione di esempio con lo stack ELK (Elasticsearch, Logstash, Kibana) utilizzando il protocollo GELF per l'invio e la centralizzazione dei log.

  • Compilazione multi architetturale7:24

    Questo capitolo introduce BuildKit, il nuovo builder di Docker che migliora le performance grazie a caching avanzato ed esecuzione parallela, e abilita la costruzione di immagini multi-piattaforma. Viene spiegato come abilitare e usare docker buildx per creare immagini per architetture diverse (es. linux/amd64, linux/arm64) con un singolo comando, inviandole direttamente ad un registro. Infine, si discute del ruolo di QEMU nell'emulazione delle architetture target e delle considerazioni importanti riguardo a performance e dipendenze native.

  • Impostazioni comuni di Docker8:47

    Capirai come personalizzare Docker per un ambiente di sviluppo ottimale. Vedremo le configurazioni per storage e log (per prevenire saturazione del disco), e soprattutto quelle di networking per evitare conflitti di indirizzi IP con le reti esistenti. Scoprirai infine modifiche utili per gli sviluppatori, come la gestione dei registry insicuri e i comportamenti al riavvio del demone.

  • Funzionamento interno dei container10:00

    Scoprirai il funzionamento profondo dei container, capendo che sono processi isolati grazie a tre pilastri: gli spazi dei nomi (namespaces) per l'isolamento delle risorse logiche, i gruppi di controllo (cgroups) per la limitazione di CPU e memoria, e il meccanismo copy-on-write per un utilizzo efficiente del filesystem. Viene anche introdotta la Open Container Initiative per gli standard di formato e runtime.

  • Grazie2:01

    Un grandissimo ringraziamento per aver dedicato il tuo tempo e la tua energia nel seguire il mio intero corso su Docker!

    Spero sinceramente che questo materiale ti sia stato estremamente utile e che le nozioni acquisite ti aiutino a elevare le tue competenze e i tuoi progetti.

    La tua crescita è la migliore ricompensa per il lavoro che ho svolto.

Requirements

  • Leggi tutta la descrizione prima di effettuare l'acquisto
  • Avere una conoscenza minima sull'utilizzo del terminale

Description

Ciao, se sei uno sviluppatore software o un professionista IT, avrai sicuramente sentito parlare di Docker e delle sue straordinarie capacità nel gestire e distribuire le tue applicazioni.

In un mondo in cui il software è in costante evoluzione e la necessità di isolamento e replicabilità dell'ambiente di esecuzione è sempre più diffusa, è essenziale avere uno strumento potente e affidabile per pacchettizzare e eseguire le tue applicazioni in modo consistente. Ecco dove entra in gioco Docker!

Docker è una delle piattaforme di containerizzazione più diffuse e utilizzate nel settore DevOps ovvero lo sviluppo e delle operations. Progettato per essere veloce, efficiente e flessibile, Docker ti consente di creare, distribuire ed eseguire applicazioni all'interno di Containers. Non importa se lavori su un progetto personale o complesso, Docker ti offre un ambiente sicuro in cui isolare le dipendenze e garantire che la tua applicazione funzioni allo stesso modo ovunque.

Durante questo corso, ti guiderò attraverso i concetti fondamentali di Docker, dalla creazione di una Immagine alla gestione dei Containers, passando per il Dockerfile, il Docker Hub e le reti dei container. Esploreremo le potenti funzionalità di Docker che ti permetteranno di gestire il ciclo di vita delle tue applicazioni in modo preciso e intuitivo.

Inoltre, inizierai a conoscere Docker Compose, uno strumento che ti consentirà di definire ed eseguire applicazioni multi-container con facilità. Vedremo come lavorare in un ambiente di sviluppo e produzione containerizzato, sincronizzando i servizi e gestendo le configurazioni in modo efficace.

Che tu sia un principiante o totalmente inesperto di Docker e Containers, questo corso è pensato per fornirti una base solida per l'utilizzo di questo strumento essenziale. Sarai in grado di containerizzare le tue applicazioni in modo sicuro ed efficiente, migliorando la vostra portabilità, la scalabilità e la collaborazione con i membri del tuo team.

Quindi, preparati ad immergerti nel mondo di Docker, a scoprire le sue funzionalità e a rendere il tuo processo di sviluppo e deployment più organizzato e riproducibile.

Sei pronto? Allora, diamo il via a questo entusiasmante viaggio nella containerizzazione con Docker!

Repository GitHub: Zavy86/docker-course

ATTENZIONE: Questo corso è disponibile anche su YouTube, tuttavia acquistando il corso tramite Udemy supporterai il mio lavoro di Content Creator e avrai la possibilità di farmi domande inerenti ai contenuti pubblicati.

Grazie del tuo supporto!

Who this course is for:

  • Sviluppatori che vogliono imparare a utilizzare Docker per gestire i propri progetti
  • Amministratori di sistema che vogliono capire come sfruttare Docker nelle loro infrastrutture