Un container non è una macchina virtuale né un’entità separata dal sistema operativo. Dal punto di vista del kernel un container è costituito da uno o più processi Linux avviati sul sistema host isolati tramite namespace e limitati tramite cgroup ed eseguiti direttamente dal kernel.
Un processo è un'istanza di un programma in esecuzione creato e gestito direttamente dal kernel Linux: nasce quando il kernel Linux carica un file eseguibile in memoria e ne avvia l’esecuzione. Quando un comando viene eseguito, il kernel crea un processo assegnandogli un identificativo univoco (PID), le risorse necessarie (CPU, memoria, I/O) e uno stato di esecuzione.
I container sono oggi al cuore di molti ambienti di sviluppo e produzione. Ma cosa succede sotto il cofano?
I namespaces sono una funzionalità del kernel Linux che permette di suddividere e isolare le risorse del sistema. In questo modo il kernel è in grado di separare i processi tra loro facendo sì che ciascun gruppo abbia una propria visione del sistema indipendente dagli altri.
I cgroups (Control Groups) sono una funzionalità del kernel Linux che permette di controllare, limitare e monitorare l’utilizzo delle risorse da parte dei processi come CPU, memoria RAM, I/O su disco e numero di processi generati. In questo modo si evita che un singolo programma possa rallentare o bloccare l’intero sistema.
I processi vengono organizzati all’interno di una gerarchia gestita direttamente dal kernel.
Un container è come una piccola scatola dove l’applicazione vive da sola con tutto ciò che serve: se sposto la scatola da un computer all’altro funziona sempre.
Il Docker Engine è un progetto open source e può essere scaricato dal sito ufficiale di Docker.
Docker Desktop è uno strumento pensato per rendere la vita più semplice a chi crea applicazioni in locale. E' un’applicazione pensata soprattutto per gli sviluppatori. Un ambiente completo che rende il lavoro con i container molto più semplice e organizzato.
Podman è un container engine creato da Red Hat che punta su sicurezza e semplicità di gestione. Fedora e tutte le distribuzioni basate su Red Hat ha una migliore compatibilità con Podman. Su Fedora è preinstallato e su tutte le altre distribuzioni Linux, MS Windows e Mac seguire la documentazione dell'installazione di Podman.
Quando inizi a studiare o usare i container prima o poi arriva la domanda su quale sistema operativo conviene installare Docker Engine? E allo stesso tempo qual è il sistema operativo più adatto per Podman?
Introduzione dei comandi fondamentali per lavorare con Docker partendo dalla gestione delle immagini fino all’esecuzione al monitoraggio e alla configurazione dei container.
Un Dockerfile è un file di testo che contiene una serie di istruzioni usate per creare un’immagine Docker su misura. È uno strumento fondamentale perché descrive in modo chiaro e versionabile come deve essere costruita l’immagine rendendo il processo ripetibile e facilmente automatizzabile.
Docker Compose è uno strumento che ti permette di far partire più container insieme come se fossero un’unica applicazione.
Creare un’immagine Docker partendo da un container in esecuzione permette di salvare tutte le modifiche fatte “a mano” dentro un ambiente attivo, trasformandole in una nuova immagine riutilizzabile. È un metodo molto utile nei laboratori e aiuta a capire in modo pratico come funzionano i layer di Docker.


