Capitolo 2 – Architettura di Docker Per utilizzare Docker in modo efficace, è fondamentale comprendere la sua architettura e come interagiscono i vari componenti. 2.1 Componenti Principali Docker Engine È il cuore di Docker. Si occupa di eseguire container e gestire immagini. Funziona come server client-daemon : la CLI comunica con il daemon per eseguire le operazioni. Docker Daemon ( dockerd ) Processo in background che gestisce container, immagini, volumi e reti. Ascolta richieste dalla CLI o da API. Avvia container secondo le specifiche delle immagini. Docker CLI ( docker ) Interfaccia a linea di comando per interagire con Docker. Permette operazioni come: Creare, avviare e fermare container Costruire e scaricare immagini Gestire volumi e network Docker Registries Repository per immagini Docker. Docker Hub : registry pubblico più diffuso. È possibile avere registry privati per sicurezza o ambienti interni. 2.2 Come Funzionano i Container Un container è un processo isolato che condivide il kernel del sistema operativo host, ma ha: Filesystem isolato Network virtuale Volumi per persistenza dati Limiti risorse configurabili (CPU, memoria) Vantaggi: Avvio immediato Minore overhead rispetto a una VM completa Facile da distribuire 2.3 Immagini Docker Un’immagine è un modello di container immutabile . Contiene: Sistema operativo minimo Applicazioni Dipendenze Le immagini possono essere layered , permettendo riuso ed efficienza. Esempio di layer: ubuntu:22.04 Installazione Python Installazione librerie app Codice applicativo 2.4 Networking Docker Bridge network : default per container sullo stesso host. Host network : il container usa direttamente la rete dell’host. Overlay network : per container distribuiti su più host (swarm o Kubernetes). 2.5 Volumi e Persistenza I container sono effimeri: i dati all’interno vengono persi se il container viene rimosso. Volumi : spazio persistente gestito da Docker. Bind mount : collegamento diretto a cartelle dell’host. 2.6 Flusso Operativo Base La CLI invia comandi al Docker Daemon. Il Daemon verifica immagini disponibili. Se necessario, scarica l’immagine dal registry. Avvia il container con filesystem, network e volumi configurati. Il container esegue il processo richiesto in isolamento. 2.7 Conclusione Comprendere l’architettura Docker permette di: Pianificare correttamente deployment e rete Gestire volumi e dati in sicurezza Ottimizzare immagini e risorse Evitare errori comuni di isolamento e rete Nel prossimo capitolo vedremo come installare e configurare Docker su Linux, pronto per l’uso in produzione.