Docker

Da Wikipedia, l'enciclopedia libera.
Docker
Logo
Sviluppatore Docker, Inc.
Data prima versione 13 marzo 2013
Ultima versione 17.11.0 (20 novembre 2017)
Sistema operativo Linux
Multipiattaforma
Linguaggio Go
Genere Virtualizzazione a livello di sistema operativo (non in lista)
Licenza Apache 2.0 e licenza proprietaria
(licenza libera)
Sito web

Docker è un progetto open-source che automatizza il deployment (consegna o rilascio al cliente, con relativa installazione e messa in funzione o esercizio, di una applicazione o di un sistema software tipicamente all'interno di un sistema informatico aziendale) di applicazioni all'interno di container software, fornendo un'astrazione aggiuntiva grazie alla virtualizzazione a livello di sistema operativo di Linux.[1] Docker utilizza le funzionalità di isolamento delle risorse del kernel Linux come ad esempio cgroups e namespaces per consentire a "container" indipendenti di coesistere sulla stessa istanza di Linux, evitando l'installazione e la manutenzione di una macchina virtuale.[2]

I namespace del kernel Linux per lo più[3] isolano ciò che l'applicazione può vedere dell'ambiente operativo, incluso l'albero dei processi, la rete, gli ID utente ed i file system montati, mentre i cgroups forniscono l'isolamento delle risorse, inclusa la CPU, la memoria, i dispositivi di I/O a blocchi e la rete. A partire dalla versione 0.9, Docker include la libreria libcontainer per poter utilizzare direttamente le funzionalità di virtualizzazione del kernel Linux, in aggiunta alle interfacce di virtualizzazione astratte come libvirt, LXC e systemd-nspawn.[4][5][6]

Secondo la ditta di analisi industriale 451 Research, "Docker è uno strumento che può pacchettizzare un'applicazione e le sue dipendenze in un container virtuale che può essere eseguito su qualsiasi server Linux."[7]

Funzionalità[modifica | modifica wikitesto]

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

Docker implementa API di alto livello per gestire container che eseguono processi in ambienti isolati.[8] Poiché utilizza delle funzionalità del kernel Linux (principalmente cgroups e namespaces), un container di Docker, a differenza di una macchina virtuale, non include un sistema operativo separato.[7] Al contrario, utilizza le funzionalità del kernel e sfrutta l'isolamento delle risorse (CPU, memoria, I/O a blocchi, rete) ed 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.[6][9]

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

L'utilizzo di Docker per creare e gestire i container può semplificare la creazione di sistemi distribuiti, permettendo a diverse applicazioni o processi di lavorare in modo autonomo sulla stessa macchina fisica o su diverse macchine virtuali. Ciò consente di effettuare il deployment di nuovi nodi solo quando necessario, permettendo uno stile di sviluppo del tipo platform as a service (PaaS) per sistemi come Apache Cassandra, MongoDB o Riak. Docker inoltre semplifica la creazione e la gestione di code di lavori in sistemi distribuiti.[10][11]

Integrazione[modifica | modifica wikitesto]

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

Storia[modifica | modifica wikitesto]

Solomon Hykes ha creato Docker come un progetto interno di dotCloud, un'azienda platform as a service,[26] grazie al lavoro di altri ingegneri di dotCloud tra cui Andrea Luzzardi e Francois-Xavier Bourlet. Jeff Lindsay è stato coinvolto nel progetto come collaboratore esterno. Docker rappresenta l'evoluzione della tecnologia proprietaria di dotCloud, a sua volta realizzato grazie a precedenti software open-source come Cloudlets.

Docker è stato pubblicato come open source nel marzo 2013.[8] Il 13 marzo 2014, con il rilascio della versione 0.9, Docker non utilizza più LXC come ambiente di esecuzione di default, sostituito dalla propria libreria libcontainer scritta nel linguaggio di programmazione Go.[4][9] Il 13 aprile 2015 il progetto aveva oltre 20 700 stelle su GitHub (rendendolo il ventesimo progetto più seguito di GitHub), più di 4 700 fork e quasi 900 contributori.[27]

Una ricerca di maggio 2015 ha evidenziato che le seguenti organizzazioni sono i maggiori contributori nello sviluppo di Docker: Red Hat (il maggiore contributore, addirittura più dello stesso team di Docker), il team di Docker, IBM, Google, Cisco Systems e Amadeus IT Group.[28]

Collaborazioni[modifica | modifica wikitesto]

  • 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à.[29]
  • Il 19 settembre 2013 Red Hat e Docker annunciarono una importante collaborazione su Fedora, Red Hat Enterprise Linux e OpenShift.[30]
  • Il 22 gennaio 2014 Docker annunciò che aveva completato un venture capital di serie B da 15 milioni di dollari, guidato dalla Greylock Partners.[31]
  • Il 23 luglio 2014 Docker acquistò Orchard, i creatori di Fig.[32]
  • Il 16 settembre 2014 Docker annunciò che aveva completato un venture capital di serie C da 40 milioni di dollari, guidato dalla Sequoia Capital.[33]
  • Il 15 ottobre 2014 Microsoft ha annunciato l'integrazione di Docker nella successiva versione (2016) di Windows Server ed il supporto nativo per il client Docker su Windows.[34][35]
  • 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 sulla IBM Cloud.[36]
  • 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.[37]

Note[modifica | modifica wikitesto]

  1. ^ Maureen O'Gara, Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud, SYS-CON Media, 26 luglio 2013. URL consultato il 9 agosto 2013.
  2. ^ Docker Documentation: Kernel Requirements, su docker.readthedocs.org, 4 gennaio 2014. URL consultato il 20 agosto 2014 (archiviato dall'url originale il 21 agosto 2014).
  3. ^ Dan Walsh, Yet Another Reason Containers Don't Contain: Kernel Keyrings, su projectatomic.io. URL consultato il 13 aprile 2015.
  4. ^ a b Steven J. Vaughan-Nichols, Docker libcontainer unifies Linux container powers, ZDNet, 11 giugno 2014. URL consultato il 30 luglio 2014.
  5. ^ libcontainer - reference implementation for containers, su github.com. URL consultato il 30 luglio 2014.
  6. ^ a b c Docker 0.9: Introducing execution drivers and libcontainer, su docker.com, 10 marzo 2014. URL consultato il 20 gennaio 2015.
  7. ^ a b Katherine Noyes, Docker: A 'Shipping Container' for Linux Code, Linux.com, 1º agosto 2013. URL consultato il 9 agosto 2013.
  8. ^ a b Abel Avram, Docker: Automated and Consistent Software Deployments, InfoQ, 27 marzo 2013. URL consultato il 9 agosto 2013.
  9. ^ a b Chris Swan, Docker drops LXC as default execution environment, InfoQ, 13 marzo 2014. URL consultato il 20 gennaio 2015.
  10. ^ Adron Hall, OSCON : Conversations, Deployments, Architecture, Docker and the Future?, CloudAve, 31 luglio 2013. URL consultato il 9 agosto 2013.
  11. ^ Travis Reeder, How Docker Helped Us Achieve the (Near) Impossible, Iron.io, 22 aprile 2014. URL consultato il 25 luglio 2014.
  12. ^ Amazon EC2 - Docker Documentation, su docs.docker.com. URL consultato il 18 ottobre 2014 (archiviato dall'url originale il 18 ottobre 2014).
  13. ^ /, ansible/library/cloud/docker[collegamento interrotto], GitHub. URL consultato il 20 gennaio 2014.
  14. ^ CFEngine, CFEngine. URL consultato il 6 giugno 2014 (archiviato dall'url originale il 13 giugno 2014).
  15. ^ thoward/docker-cookbook, GitHub. URL consultato il 20 gennaio 2014.
  16. ^ Containers on Google Cloud Platform, Google Inc.
  17. ^ Bluemix Launches IBM Containers Beta Based on Docker, IBM, 4 dicembre 2014. URL consultato il 20 aprile 2015.
  18. ^ Jelastic Announces Docker Integration to Provide the Most Advanced Orchestrated Application Delivery, PRWeb. URL consultato il 3 dicembre 2014.
  19. ^ georgebashi/jenkins-docker-plugin, GitHub. URL consultato il 20 gennaio 2014.
  20. ^ Here's how Microsoft is supporting the open-source Docker container model, su ZDNet, 10 giugno 2014. URL consultato il 16 ottobre 2014.
  21. ^ Stefano Maffulli  June 7th, 2013, OpenStack Community Weekly Newsletter (May 31 – June 7) » The OpenStack Blog, Openstack.org, 7 giugno 2013. URL consultato il 20 gennaio 2014.
  22. ^ OpenSVC Docker, OpenSVC. URL consultato il 29 maggio 2014 (archiviato dall'url originale il 31 maggio 2014).
  23. ^ Gareth Rushgrove, garethr/docker, Puppet Forge. URL consultato il 20 gennaio 2014.
  24. ^ saltstack/dockerio, docs.saltstack.com. URL consultato il 20 gennaio 2014.
  25. ^ philspitler/vagrant-docker[collegamento interrotto], GitHub. URL consultato il 20 gennaio 2014.
  26. ^ One home for all your apps, dotCloud. URL consultato l'8 maggio 2014 (archiviato dall'url originale il 17 maggio 2014).
  27. ^ dotcloud/docker, GitHub. URL consultato il 13 aprile 2015.
  28. ^ Look who's helping build Docker -- besides Docker itself, InfoWorld, 27 maggio 2015.
  29. ^ Barb Darrow, PaaS pioneer dotCloud gets new CEO in industry vet Ben Golub, GigaOM, 23 luglio 2013. URL consultato il 9 agosto 2013.
  30. ^ DotCloud Pivots And Wins Big With Docker, The Cloud Service Now Part Of Red Hat OpenShift, TechCrunch, 19 settembre 2013. URL consultato il 20 gennaio 2014.
  31. ^ Jordan Novet, Docker's open-source bet pays off with $15M round, VentureBeat, January 21, 2014. URL consultato il 22 gennaio 2014.
  32. ^ Ben Kepes, Docker Makes Its Move, Acquires Orchard In A Sign Of Things To Come, Forbes, July 23, 2014. URL consultato il 23 luglio 2014.
  33. ^ Jack Clark and Peter Burrows, Docker Said to Be Valued at $400 Million in Funding Round, Bloomberg, September 16, 2014. URL consultato il 16 settembre 2014.
  34. ^ Mary Jo Foley, Docker container support coming to Microsoft's next Windows Server release, ZDNet, 15 ottobre 2014. URL consultato il 16 ottobre 2014.
  35. ^ Scott Guthrie, Docker and Microsoft: Integrating Docker with Windows Server and Microsoft Azure, Microsoft, 15 ottobre 2014. URL consultato il 12 gennaio 2015.
  36. ^ IBM and Docker Announce Strategic Partnership to Deliver Enterprise Applications in the Cloud and On Prem, IBM, 4 dicembre 2014. URL consultato il 20 aprile 2015.
  37. ^ Docker, CoreOS, Google, Microsoft, Amazon And Others Come Together To Develop Common Container Standard, TechCrunch, 22 giugno 2015. URL consultato il 22 giugno 2015.

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

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