Come funziona Docker “under the hood”

Docker è una tecnologia di containerizzazione che ha rivoluzionato il modo in cui le applicazioni vengono sviluppate, distribuite e gestite. Ma come funziona Docker “under the hood“? In questo articolo, approfondiremo i concetti delle feature del kernel linux che Docker sfrutta, ovvero namespace e cgroup.

Il concetto di namespace

Il namespace è un meccanismo di isolamento che consente di separare le risorse del sistema operativo in modo che appartenenti a processi differenti non possano accedere alle risorse degli altri. In altre parole, il namespace crea uno spazio isolato in cui i processi possono essere eseguiti senza interferire con altri processi che vengono eseguiti su altri spazi isolati.

Docker utilizza diversi tipi di namespace per isolare i processi all’interno di un container. Ad esempio, il namespace PID (Process ID) crea un’istanza isolata del namespace dei processi per ogni container Docker. Ciò significa che i processi eseguiti all’interno del container vedono solo i loro processi e non quelli eseguiti in altri container o nel sistema host.

In modo simile, il namespace net (network) crea uno spazio isolato per le risorse di rete come le interfacce di rete, i routing tables e le connessioni di rete. In questo modo, Docker può garantire che ogni container abbia il proprio indirizzo IP e le proprie risorse di rete isolate, evitando così conflitti e interferenze tra container.

Il concetto di cgroup

Cgroup (Control Group) è un altro meccanismo di isolamento che consente di limitare e controllare le risorse di sistema disponibili per un gruppo di processi. In altre parole, cgroup consente di limitare la quantità di CPU, memoria, storage e altre risorse che un processo può utilizzare.

Docker utilizza cgroup per limitare e gestire le risorse disponibili per ogni container. Ad esempio, è possibile limitare la quantità di CPU e memoria disponibile per un container, impedendo così che un singolo container possa monopolizzare tutte le risorse del sistema. Inoltre, Docker può monitorare l’utilizzo delle risorse da parte dei container e notificare gli amministratori di sistema se un container supera le proprie limitazioni.

Conclusioni

In questo articolo abbiamo visto come Docker sfrutti i namespace e i cgroup per creare un ambiente di esecuzione isolato e controllato per le applicazioni. Questi meccanismi consentono a Docker di garantire la sicurezza e la stabilità dei container, evitando conflitti e interferenze tra container e tra container e il sistema host. La tecnologia di containerizzazione sta cambiando il modo in cui le applicazioni vengono sviluppate e gestite, e Docker è sicuramente uno degli strumenti più importanti in questo contesto.

© 2023 Replio SRL
VIA Caldera, 21 – 20153 Milano
P.IVA: IT09469131214
CAP. SOC. € 15.000,00 i.v.

DOVE

Via Caldera, 21 – Milano
Italia

Tel: 02 8088 8054
info@replio.it

QUANDO

Lunedì – Venerdì
09:00 – 18:00

Sabato – Domenica
Chiuso