LXC (Linux Containers) e le macchine virtuali sono due approcci diversi per raggiungere un obiettivo simile – isolare un processo o un gruppo di processi dal resto del sistema.
1. LXC: LXC è un sistema di virtualizzazione a livello di sistema operativo, noto anche come “containerizzazione”. Ciò significa che tutti i “contenitori” LXC condividono lo stesso kernel dell’host, ma hanno spazi utente isolati. Questo permette di avere separatamente file system, processi, spazio di indirizzamento della memoria, ecc., ma a causa della condivisione del kernel, i contenitori LXC possono utilizzare solo sistemi operativi basati su Linux.
1. Macchine Virtuali: Le macchine virtuali sono un tipo di virtualizzazione a livello di piattaforma hardware. Una macchina virtuale emula un computer completo, compreso il hardware, e può quindi eseguire qualsiasi sistema operativo supportato da quel hardware. Le macchine virtuali hanno un proprio sistema operativo o kernel separato dall’host.
La differenza fondamentale quindi è che LXC ha meno overhead rispetto alle macchine virtuali perché le risorse sono condivise direttamente con l’host e non è necessario emulare l’hardware, ma ha meno flessibilità perché può eseguire solo sistemi operativi basati su Linux, e ha una minore isolazione rispetto alla VM, rendendolo potenzialmente meno sicuro. Le macchine virtuali, d’altra parte, possono eseguire qualsiasi sistema operativo e fornire una migliore isolazione, ma a scapito di maggiori risorse utilizzate.