Docker

contenitori Linux a runtime

Docker è un popolare[1] software libero che utilizza la virtualizzazione a livello di sistema operativo per eseguire applicazioni in ambienti isolati chiamati container.

I container Docker sono un'estensione dei container del sistema operativo.[2]

Docker supporta sia i container Linux che quelli Windows.

È possibile utilizzare Docker con container Linux anche nei sistemi Windows e MacOS grazie a tecniche di virtualizzazione.

Docker Inc.[3] è anche il nome della società statunitense che cura lo sviluppo e la manutenzione del software.

Docker
software
Logo
Logo
GenereVirtualizzazione a livello di sistema operativo (non in lista)
SviluppatoreDocker, Inc.
Data prima versione13 marzo 2013
Ultima versione27.3.1 (20 settembre 2024)
Sistema operativoLinux
Multipiattaforma
LinguaggioGo
Licenzalicenza proprietaria e licenza Apache 2.0
(licenza libera)
Sito webwww.docker.com

Docker è stato pubblicato nel 2013 dallo sviluppatore statunitense Solomon Hykes[4], come progetto interno di dotCloud, un'azienda platform as a service,[5] grazie al lavoro di altri ingegneri della stessa azienda tra cui Andrea Luzzardi, Francois-Xavier Bourlet e Jeff Lindsay (come collaboratore esterno). Docker rappresenta l'evoluzione della tecnologia proprietaria di dotCloud, a sua volta realizzato grazie a precedenti software open source come Cloudlets.[6]

Il codice sorgente di Docker è stato rilasciato come open source nel marzo 2013.[7] Dopo cinque mesi, la società comunicava i 60 000 download al mese.[4] Il 13 marzo 2014, con il rilascio della versione 0.9, Docker non utilizza più la tecnologia LXC come ambiente di esecuzione di predefinito ma una propria libreria chiamata libcontainer, scritta nel linguaggio di programmazione Go.[8][9] Il 13 aprile 2015 il progetto aveva oltre 20 700 stelle su GitHub rendendolo il ventesimo progetto più seguito dello stesso sito, con più di 4 700 fork e quasi 900 contributori.[10]

Una ricerca di maggio 2015 legata a Kubernetes ha evidenziato le maggiori organizzazioni legate ai contributi sul codice di Docker. In ordine dal maggior numero di contributi: Red Hat (il maggiore contributore, più del team di Docker), il team di Docker, IBM, Google Inc., Cisco Systems e Amadeus IT Group.[11][12]

Funzionamento

modifica
 
Docker può utilizzare diverse interfacce per accedere alle funzionalità di virtualizzazione del kernel Linux.[13]

Docker può impacchettare un'applicazione e le sue dipendenze in un container virtuale che può essere eseguito su qualsiasi sistema Linux, Windows o macOS.

Questo consente di utilizzare Docker sia in ambienti on-premise che cloud pubblici o privati.

Quando viene eseguito su Linux, Docker utilizza i container Linux sfruttando le funzionalità di isolamento del kernel.

Un container Docker, a differenza di una macchina virtuale, non include un sistema operativo separato. Al contrario, utilizza le funzionalità del kernel e sfrutta l'isolamento delle risorse (CPU, memoria, I/O a blocchi, rete) e i namespace separati per isolare ciò che l'applicazione può vedere del sistema operativo. Docker accede alle funzionalità di virtualizzazione del kernel Linux o direttamente utilizzando la libreria libcontainer, che è disponibile da Docker 0.9, o indirettamente attraverso libvirt, LXC o systemd-nspawn[14][15].

Utilizzando i container le risorse possono essere isolate, i servizi limitati e i processi avviati in modo da avere una prospettiva completamente privata del sistema operativo, col loro proprio identificativo, file system e interfaccia di rete. Più container condividono lo stesso kernel, ma ciascuno di essi può essere costretto a utilizzare una certa quantità di risorse, come la CPU, la memoria e l'I/O.

In sistemi Windows è possibile utilizzare i container Windows.

Docker può utilizzare i container Linux anche in ambienti Windows o macOS tramite una macchina virtuale Linux in cui vengono eseguiti i container.

In Windows è possibile sfruttare WSL per ottenere una macchina virtuale leggera.

In macOS viene utilizzato il toolkit HyperKit.

Integrazione

modifica

Docker può essere integrato in varie infrastrutture, tra cui Amazon Web Services,[16] Ansible,[17] Boinc, CFEngine,[18] Chef,[19] Google Cloud Platform,[20] IBM Bluemix,[21] Jelastic,[22] Jenkins,[23] Microsoft Azure,[24] NoMachine,[25] OpenStack Nova,[26] OpenSVC,[27] Puppet,[28] Salt,[29] e Vagrant.[30]

Orchestrazione

modifica

Per far interagire tra loro più container Docker, spesso si utilizzano dei software di orchestrazione, come ad esempio Docker Swarm o Kubernetes.

Vantaggi e svantaggi

modifica
 
Differenza fra virtualizzazione e OS-level virtualization.

I vantaggi di Docker si misurano in relazione alle macchine virtuali. Infatti, i container sono più leggeri delle macchine virtuali, vengono avviati più velocemente e richiedono meno risorse. Anche le immagini risultano di dimensioni inferiori a quelle delle macchine virtuali. Tra gli svantaggi si annovera il fatto che i container non contengono un proprio sistema operativo e quindi i processi in esecuzione non possono essere isolati in maniera perfetta.[31]

Collaborazioni

modifica
  • Il 23 luglio 2013 dotCloud Inc., l'entità commerciale dietro Docker, annunciò che l'ex CEO di Gluster and Plaxo Ben Golub si sarebbe unito all'azienda, citando Docker come l'obiettivo principale della società.[32]
  • Il 19 settembre 2013 Red Hat e Docker annunciarono un'importante collaborazione su Fedora, Red Hat Enterprise Linux e OpenShift.[33]
  • Il 22 gennaio 2014 Docker annunciò che aveva completato un venture capital di serie B da 15 milioni di dollari, guidato dalla Greylock Partners.[34]
  • Il 23 luglio 2014 Docker acquistò Orchard, i creatori di Fig.[35]
  • Il 16 settembre 2014 Docker annunciò che aveva completato un venture capital di serie C da 40 milioni di dollari, guidato dalla Sequoia Capital.[36]
  • Il 15 ottobre 2014 Microsoft ha annunciato l'integrazione di Docker nella successiva versione (2016) di Windows Server e il supporto nativo per il client Docker su Windows.[37][38]
  • Il 4 dicembre 2014 IBM ha annunciato una partnership strategica con Docker per permettere alle aziende di creare più efficacemente, velocemente e con costi contenuti la prossima generazione di applicazioni su IBM Cloud.[39]
  • Il 22 giugno 2015 è stato annunciato che Docker, CoreOS, IBM, Google, Microsoft, Amazon e altre aziende stanno lavorando su un nuovo standard per i container software indipendente dal sistema operativo.[40]
  1. ^ (EN) Stack Overflow Developer Survey 2021, su Stack Overflow. URL consultato il 4 ottobre 2024.
  2. ^ (EN) Containers explained: What they are and why you should care, su www.redhat.com. URL consultato il 4 ottobre 2024.
  3. ^ (EN) About Docker | Docker, su www.docker.com, 18 gennaio 2022. URL consultato il 4 ottobre 2024.
  4. ^ a b (EN) Cade Metz, The Man Who Would Build a Computer the Size of the Entire Internet, su wired.com, 9 settembre 2013. URL consultato il 9 giugno 2022.
  5. ^ One home for all your apps, su dotcloud.com, dotCloud. URL consultato l'8 maggio 2014 (archiviato dall'url originale il 17 maggio 2014).
  6. ^ (EN) Cloudlets, su GitHub. URL consultato il 9 giugno 2022.
  7. ^ Abel Avram, Docker: Automated and Consistent Software Deployments, su infoq.com, InfoQ, 27 marzo 2013. URL consultato il 9 agosto 2013.
  8. ^ Steven J. Vaughan-Nichols, Docker libcontainer unifies Linux container powers, su zdnet.com, ZDNet, 11 giugno 2014. URL consultato il 30 luglio 2014.
  9. ^ Chris Swan, Docker drops LXC as default execution environment, su infoq.com, InfoQ, 13 marzo 2014. URL consultato il 20 gennaio 2015.
  10. ^ dotcloud/docker, su github.com, GitHub. URL consultato il 13 aprile 2015.
  11. ^ Look who's helping build Docker -- besides Docker itself, su infoworld.com, InfoWorld, 27 maggio 2015.
  12. ^ (EN) Docker, su GitHub. URL consultato il 9 giugno 2022.
  13. ^ Docker 0.9: Introducing execution drivers and libcontainer, su docker.com, 10 marzo 2014. URL consultato il 20 gennaio 2015.
  14. ^ (EN) Docker libcontainer unifies Linux container powers, su ZDNET. URL consultato il 4 ottobre 2024.
  15. ^ (EN) Docker drops LXC as default execution environment, su InfoQ. URL consultato il 4 ottobre 2024.
  16. ^ Amazon EC2 - Docker Documentation, su docs.docker.com. URL consultato il 18 ottobre 2014 (archiviato dall'url originale il 18 ottobre 2014).
  17. ^ /, ansible/library/cloud/docker, su github.com, GitHub. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 27 dicembre 2013).
  18. ^ CFEngine, su docs.docker.com, CFEngine. URL consultato il 6 giugno 2014 (archiviato dall'url originale il 13 giugno 2014).
  19. ^ thoward/docker-cookbook, su github.com, GitHub. URL consultato il 20 gennaio 2014.
  20. ^ Containers on Google Cloud Platform, su cloud.google.com, Google Inc.
  21. ^ Bluemix Launches IBM Containers Beta Based on Docker, su developer.ibm.com, IBM, 4 dicembre 2014. URL consultato il 20 aprile 2015 (archiviato dall'url originale il 28 aprile 2015).
  22. ^ Jelastic Announces Docker Integration to Provide the Most Advanced Orchestrated Application Delivery, su prweb.com, PRWeb. URL consultato il 3 dicembre 2014.
  23. ^ georgebashi/jenkins-docker-plugin, su github.com, GitHub. URL consultato il 20 gennaio 2014.
  24. ^ Here's how Microsoft is supporting the open-source Docker container model, su ZDNet, 10 giugno 2014. URL consultato il 16 ottobre 2014.
  25. ^ How to run NoMachine server v. 4 inside Docker, su nomachine.com. URL consultato il 22 ottobre 2020.
  26. ^ Stefano Maffulli  June 7th, 2013, OpenStack Community Weekly Newsletter (May 31 – June 7) » The OpenStack Blog, su openstack.org, 7 giugno 2013. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 29 dicembre 2013).
  27. ^ OpenSVC Docker, su docs.opensvc.com, OpenSVC. URL consultato il 29 maggio 2014 (archiviato dall'url originale il 31 maggio 2014).
  28. ^ Gareth Rushgrove, garethr/docker, su forge.puppetlabs.com, Puppet Forge. URL consultato il 20 gennaio 2014.
  29. ^ saltstack/dockerio, su docs.saltstack.com. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 3 febbraio 2014).
  30. ^ philspitler/vagrant-docker, su github.com, GitHub. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 9 agosto 2013).
  31. ^ Container Docker, su ionos.it. URL consultato il 18 gennaio 2022.
  32. ^ Barb Darrow, PaaS pioneer dotCloud gets new CEO in industry vet Ben Golub, su gigaom.com, GigaOM, 23 luglio 2013. URL consultato il 9 agosto 2013 (archiviato dall'url originale il 17 agosto 2013).
  33. ^ DotCloud Pivots And Wins Big With Docker, The Cloud Service Now Part Of Red Hat OpenShift, su techcrunch.com, TechCrunch, 19 settembre 2013. URL consultato il 20 gennaio 2014.
  34. ^ Jordan Novet, Docker's open-source bet pays off with $15M round, su venturebeat.com, VentureBeat, January 21, 2014. URL consultato il 22 gennaio 2014.
  35. ^ Ben Kepes, Docker Makes Its Move, Acquires Orchard In A Sign Of Things To Come, su forbes.com, Forbes, July 23, 2014. URL consultato il 23 luglio 2014.
  36. ^ Jack Clark and Peter Burrows, Docker Said to Be Valued at $400 Million in Funding Round, su businessweek.com, Bloomberg, September 16, 2014. URL consultato il 16 settembre 2014.
  37. ^ Mary Jo Foley, Docker container support coming to Microsoft's next Windows Server release, su zdnet.com, ZDNet, 15 ottobre 2014. URL consultato il 16 ottobre 2014.
  38. ^ Scott Guthrie, Docker and Microsoft: Integrating Docker with Windows Server and Microsoft Azure, su weblogs.asp.net, Microsoft, 15 ottobre 2014. URL consultato il 12 gennaio 2015.
  39. ^ IBM and Docker Announce Strategic Partnership to Deliver Enterprise Applications in the Cloud and On Prem, su www-03.ibm.com, IBM, 4 dicembre 2014. URL consultato il 20 aprile 2015.
  40. ^ Docker, CoreOS, Google, Microsoft, Amazon And Others Come Together To Develop Common Container Standard, su techcrunch.com, TechCrunch, 22 giugno 2015. URL consultato il 22 giugno 2015.

Altri progetti

modifica

Collegamenti esterni

modifica
  Portale Software libero: accedi alle voci di Wikipedia che trattano di software libero