Docker

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search
Docker
software
Logo
GenereVirtualizzazione a livello di sistema operativo (non in lista)
SviluppatoreDocker, Inc.
Data prima versione13 marzo 2013
Sistema operativoLinux
Multipiattaforma
LinguaggioGo
LicenzaApache 2.0 e licenza proprietaria
(licenza libera)
Sito webwww.docker.com

Docker è un progetto open-source che automatizza il deployment (consegna o rilascio al cliente, con relativa installazione e messa in funzione o esercizio, di un'applicazione o di un sistema software tipicamente all'interno di un sistema informatico aziendale) di applicazioni all'interno di contenitori 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 cgroup e namespace 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 e i file system montati, mentre i cgroup 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 cgroup e namespace), 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) 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.[6][9]

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.

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]

Orchestrazione[modifica | modifica wikitesto]

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

Tecnologia[modifica | modifica wikitesto]

Docker è stato originariamente sviluppato per Linux, dove utilizza le funzionalità di isolamento delle risorse tipiche del Linux (kernel) come cgroup e kernel namespace oltre a un file system compatibile come OverlayFS e altri così da permettere a "container indipendenti" di funzionare utilizzando un'unica istanza Linux, evitando il sovraccarico relativo all'avvio e all'utilizzo della Macchina virtuale.[senza fonte]

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 un'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 e 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 su 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 (archiviato dall'url originale l'8 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 (archiviato dall'url originale l'8 agosto 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, GitHub. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 27 dicembre 2013).
  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, su docs.saltstack.com. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 3 febbraio 2014).
  25. ^ philspitler/vagrant-docker, GitHub. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 9 agosto 2013).
  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