La containerizzazione è una tecnica di virtualizzazione esistente almeno dal 2008. Si tratta di un tipo di distribuzione software che raggruppa tutto il necessario per l'esecuzione in un unico pacchetto, compresa un'applicazione e tutte le sue dipendenze. Sebbene storicamente sia stata utilizzata negli ambienti IT, di recente ha guadagnato terreno anche in ambito OT. La containerizzazione moderna, resa popolare da Docker® dal 2013, consente una distribuzione efficiente e portatile delle applicazioni in diversi ambienti. Gli standard di settore che si concentrano sull'esperienza utente con la containerizzazione sono stati definiti dall'Open Container Initiative (OCI). La containerizzazione consente di eseguire applicazioni che altrimenti sarebbero state limitate dal dispositivo o dal sistema operativo. L'obiettivo di questo post è dimostrare la capacità della containerizzazione di semplificare la distribuzione delle applicazioni negli ambienti IT e OT, trasformando l'efficienza nei moderni sistemi di controllo industriale (ICS).
Container vs. macchine virtuali
Il confronto più semplice con i container è quello con le macchine virtuali (VM), poiché entrambi sono tipi di virtualizzazione. Una differenza fondamentale è che i container non richiedono un intero sistema operativo guest per funzionare, mentre le VM sì, e virtualizzano tutto fino al livello fisico astratto. Le VM richiedono una quantità significativa di CPU e memoria, limitando la scalabilità in ambienti con risorse limitate. I container condividono il kernel del sistema operativo host, rendendoli leggeri e veloci, con tempi di avvio di pochi secondi rispetto ai minuti delle VM. Questa efficienza deriva dal fatto che vengono impacchettati solo l'applicazione, le librerie e le configurazioni. Ad esempio, un'applicazione containerizzata funziona in modo identico sul laptop di uno sviluppatore o su un server cloud, garantendo coerenza tra sviluppo, test e, soprattutto per i sistemi di controllo industriale: produzione.