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
Ultima versione20.10.11 (18 novembre 2021)
Sistema operativoLinux
Multipiattaforma
LinguaggioGo
LicenzaApache 2.0 e licenza proprietaria
(licenza libera)
Sito webwww.docker.com

Docker è un progetto open-source che automatizza il processo di deployment di applicazioni all'interno di contenitori software, fornendo un'astrazione aggiuntiva grazie alla virtualizzazione a livello di sistema operativo di Linux.[1]

Storia[modifica | modifica wikitesto]

Solomon Hykes ha creato Docker come un progetto interno di dotCloud, un'azienda platform as a service,[2] 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.[3] 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][5] 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.[6]

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.[7]

Descrizione[modifica | modifica wikitesto]

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.[8]

I namespace del kernel Linux per lo più[9] 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][10][11]

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."[12]

Funzionalità[modifica | modifica wikitesto]

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

Docker implementa API di alto livello per gestire container che eseguono processi in ambienti isolati.[3] 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.[12] 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.[11][5]

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.[13][14]

Integrazione[modifica | modifica wikitesto]

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

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]

Vantaggi e svantaggi[modifica | modifica wikitesto]

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.[30]

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à.[31]
  • Il 19 settembre 2013 Red Hat e Docker annunciarono un'importante collaborazione su Fedora, Red Hat Enterprise Linux e OpenShift.[32]
  • Il 22 gennaio 2014 Docker annunciò che aveva completato un venture capital di serie B da 15 milioni di dollari, guidato dalla Greylock Partners.[33]
  • Il 23 luglio 2014 Docker acquistò Orchard, i creatori di Fig.[34]
  • Il 16 settembre 2014 Docker annunciò che aveva completato un venture capital di serie C da 40 milioni di dollari, guidato dalla Sequoia Capital.[35]
  • 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.[36][37]
  • 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.[38]
  • 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.[39]

Note[modifica | modifica wikitesto]

  1. ^ Maureen O'Gara, Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud, su maureenogara.sys-con.com, SYS-CON Media, 26 luglio 2013. URL consultato il 9 agosto 2013 (archiviato dall'url originale il 13 settembre 2019).
  2. ^ One home for all your apps, su dotcloud.com, dotCloud. URL consultato l'8 maggio 2014 (archiviato dall'url originale il 17 maggio 2014).
  3. ^ a b Abel Avram, Docker: Automated and Consistent Software Deployments, su infoq.com, InfoQ, 27 marzo 2013. URL consultato il 9 agosto 2013.
  4. ^ a b Steven J. Vaughan-Nichols, Docker libcontainer unifies Linux container powers, su zdnet.com, ZDNet, 11 giugno 2014. URL consultato il 30 luglio 2014.
  5. ^ a b Chris Swan, Docker drops LXC as default execution environment, su infoq.com, InfoQ, 13 marzo 2014. URL consultato il 20 gennaio 2015.
  6. ^ dotcloud/docker, su github.com, GitHub. URL consultato il 13 aprile 2015.
  7. ^ Look who's helping build Docker -- besides Docker itself, su infoworld.com, InfoWorld, 27 maggio 2015.
  8. ^ 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).
  9. ^ Dan Walsh, Yet Another Reason Containers Don't Contain: Kernel Keyrings, su projectatomic.io. URL consultato il 13 aprile 2015.
  10. ^ libcontainer - reference implementation for containers, su github.com. URL consultato il 30 luglio 2014.
  11. ^ a b c Docker 0.9: Introducing execution drivers and libcontainer, su docker.com, 10 marzo 2014. URL consultato il 20 gennaio 2015.
  12. ^ a b Katherine Noyes, Docker: A 'Shipping Container' for Linux Code, su linux.com, Linux.com, 1º agosto 2013. URL consultato il 9 agosto 2013 (archiviato dall'url originale l'8 agosto 2013).
  13. ^ Adron Hall, OSCON : Conversations, Deployments, Architecture, Docker and the Future?, su cloudave.com, CloudAve, 31 luglio 2013. URL consultato il 9 agosto 2013.
  14. ^ Travis Reeder, How Docker Helped Us Achieve the (Near) Impossible, su blog.iron.io, Iron.io, 22 aprile 2014. URL consultato il 25 luglio 2014 (archiviato dall'url originale l'8 agosto 2014).
  15. ^ Amazon EC2 - Docker Documentation, su docs.docker.com. URL consultato il 18 ottobre 2014 (archiviato dall'url originale il 18 ottobre 2014).
  16. ^ /, ansible/library/cloud/docker, su github.com, GitHub. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 27 dicembre 2013).
  17. ^ CFEngine, su docs.docker.com, CFEngine. URL consultato il 6 giugno 2014 (archiviato dall'url originale il 13 giugno 2014).
  18. ^ thoward/docker-cookbook, su github.com, GitHub. URL consultato il 20 gennaio 2014.
  19. ^ Containers on Google Cloud Platform, su cloud.google.com, Google Inc.
  20. ^ Bluemix Launches IBM Containers Beta Based on Docker, su developer.ibm.com, IBM, 4 dicembre 2014. URL consultato il 20 aprile 2015.
  21. ^ Jelastic Announces Docker Integration to Provide the Most Advanced Orchestrated Application Delivery, su prweb.com, PRWeb. URL consultato il 3 dicembre 2014.
  22. ^ georgebashi/jenkins-docker-plugin, su github.com, GitHub. URL consultato il 20 gennaio 2014.
  23. ^ Here's how Microsoft is supporting the open-source Docker container model, su ZDNet, 10 giugno 2014. URL consultato il 16 ottobre 2014.
  24. ^ How to run NoMachine server v. 4 inside Docker, su nomachine.com. URL consultato il 22 ottobre 2020.
  25. ^ Stefano Maffulli  June 7th, 2013, OpenStack Community Weekly Newsletter (May 31 – June 7) » The OpenStack Blog, su openstack.org. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 29 dicembre 2013).
  26. ^ OpenSVC Docker, su docs.opensvc.com, OpenSVC. URL consultato il 29 maggio 2014 (archiviato dall'url originale il 31 maggio 2014).
  27. ^ Gareth Rushgrove, garethr/docker, su forge.puppetlabs.com, Puppet Forge. URL consultato il 20 gennaio 2014.
  28. ^ saltstack/dockerio, su docs.saltstack.com. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 3 febbraio 2014).
  29. ^ philspitler/vagrant-docker, su github.com, GitHub. URL consultato il 20 gennaio 2014 (archiviato dall'url originale il 9 agosto 2013).
  30. ^ Container Docker, su ionos.it. URL consultato il 18 gennaio 2022.
  31. ^ 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.
  32. ^ 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.
  33. ^ 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.
  34. ^ 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.
  35. ^ 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.
  36. ^ 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.
  37. ^ 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.
  38. ^ 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.
  39. ^ 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 | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

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