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.