Solo una ventina di anni dopo nasce una soluzione più vicina a quella dei container in uso oggigiorno: si tratta di FreeBSD Jail, introdotta nel 2000. FreeBSD Jail consentiva di ripartire il sistema in più sottosistemi isolati chiamati jail. Rispetto a chroot, la funzionalità aggiuntiva di questi ambienti era la possibilità di isolare anche i file di sistema, gli utenti e la rete, rendendoli molto più sicuri. La soluzione aveva però alcune debolezze in termini di implementazione e presto venne sostituita da metodi più efficienti.
L’anno dopo, nel 2001, viene sviluppata una soluzione simile a Jail chiamata Linux VServer, capace di partizionare le risorse di un computer nei cosidetti “security context”, all’interno dei quali vi era un sistema VPS (Virtual Private Server). Il progetto VServer, lanciato da Jacques Gèlinas, getta le basi per la creazione di più spazi utente controllati in Linux e, nel corso del tempo, con l’inserimento di tecnologie ed elementi aggiuntivi, si arriverà allo sviluppo degli attuali container Linux.
Grazie allo sviluppo di nuove tecnologie e ai progressi compiuti in materia di namespaces (spazi dei nomi utente), nel 2008 nasce il progetto LinuX Container (LXC): la soluzione più completa di gestione di container in quegli anni. Tra i componenti fondamentali del progetto vi è lo sviluppo dei cgroups, creati da Google nel 2006, i quali consentono di controllare e limitare l’utilizzo delle risorse da parte di un processo o di un gruppo di processi.
Il 2013 è l’anno di svolta: arriva Docker, il sistema di container Linux più utilizzato in campo IT. Docker è un progetto open source sviluppato dalla compagnia Dotcloud (in seguito rinominata Docker) sulla base di LXC, che, attraverso ulteriori avanzamenti, diventò ciò che è la tecnologia Docker di oggi. Dal 2014 Docker non utilizza più LXC come ambiente di esecuzione di default, sostituito dalla propria libreria libcontainer scritta nel linguaggio di programmazione Go. Docker è un ecosistema complesso ma molto intuitivo per il deployment e la gestione dei container, ricco di funzonalità tra le quali un sistema di immagini, registri locali e globali per i container e un’interfaccia a linea di comando.
Abbiamo parlato nello specifico di Docker in quanto è il più diffuso a livello mondiale, ma non è l’unico sistema di gestione dei container: esistono svariate soluzioni tecnologiche che hanno la stessa funzione tra le quali Kubernetes, Google Container Engine e molte altre.