Docker (software)

Docker
Docker logo.svg
Originalautor (en) Solomon Hykes
Entwickler (en) Docker, Inc.
Erstveröffentlichung 20. März 2013; Vor 9 Jahren[1]
Stabile Version
20.10.17[2] Edit this on Wikidata / 7. Juni 2022; Vor 57 Tagen
Repository
Geschrieben in gehen[3]
Betriebssystem Linux, Fenster, Mac OS
Plattform x86-64, ARM, S390X, ppc64le
Typ Virtualisierung auf OS-Ebene
Lizenz Kostenlos / bezahlt [4]
Webseite Docker.com
Ehemaliges Logo

Docker ist ein Satz von Plattform als Dienst (PAAS) Produkte, die verwenden Virtualisierung auf OS-Ebene Software in Paketen angerufen zu liefern Behälter.[5] Der Service hat sowohl kostenlose als auch Premium -Ebenen. Die Software, die die Container hostet, heißt Docker -Motor.[6] Es wurde zum ersten Mal im Jahr 2013 gestartet und wurde von entwickelt von Docker, Inc.[7]

Hintergrund

Behälter sind voneinander isoliert und bündeln ihre eigene Software. Bibliotheken und Konfigurationsdateien; Sie können über gut definierte Kanäle miteinander kommunizieren.[8] Weil alle Container die Dienste einer einzigen teilen Betriebssystem KernelSie verwenden weniger Ressourcen als virtuelle Maschinen.[6]

Betrieb

Docker kann verschiedene Schnittstellen verwenden, um auf Virtualisierungsfunktionen des Linux -Kernels zuzugreifen.[9]

Docker kann eine Anwendung und ihre Abhängigkeiten in einem virtuellen Container verpacken, der auf jedem Linux, Windows oder MacOS -Computer ausgeführt werden kann. Dadurch kann die Anwendung an verschiedenen Orten ausgeführt werden, wie z. auf dem Gelände, in Öffentlichkeit oder private Wolke.[10] Beim Ausführen auf Linux verwendet Docker die Ressourcen -Isolationsfunktionen der Linux Kernel (wie zum Beispiel CGROUPS und Kernel Namespaces) und ein Union-fähige Dateisystem (wie zum Beispiel Overlayfs)[11] Damit Container innerhalb einer einzelnen Linux -Instanz laufen können, vermeiden Sie den Overhead von Starten und Wartung virtuelle Maschinen.[12] Docker auf Mac OS Verwendet ein Linux virtuelle Maschine die Behälter ausführen.[13]

Da Docker -Container leicht sind, kann ein einzelner Server oder eine virtuelle Maschine mehrere Container gleichzeitig ausführen.[14] Eine Analyse aus dem Jahr 2018 ergab, dass ein typischer Docker -Anwendungsfall acht Container pro Host ausführt und dass ein Viertel der analysierten Organisationen 18 oder mehr pro Host betrieben wird.[15]

Die Unterstützung des Linux -Kernels für Namespaces hauptsächlich[16] Isoliert die Sicht auf die Betriebsumgebung einer Anwendung, einschließlich Prozessbäume, Netzwerk, Benutzer -IDs und montierten Dateisystemen, während die CGroups des Kernels eine Ressourcenbeschränkung für Speicher und CPU bieten.[17] Seit Version 0.9 enthält Docker eine eigene Komponente (genannt ".libcontainer") zur Verwendung von Virtualisierungseinrichtungen, libvirt, LXC und systemd-nspawn.[18][9][10][19]

Docker implementiert eine hohe Ebene API leichte Behälter bereitstellen, die Prozesse isoliert ausführen.[20] Docker -Container sind Standardprozesse. Daher ist es möglich, Kernelfunktionen zur Überwachung ihrer Ausführung zu verwenden - einschließlich der Verwendung von Tools wie Strace zum Beobachten und Interessen mit Systemaufrufen.[21]

Komponenten

Die Docker -Software als Serviceangebot besteht aus drei Komponenten:

  • Software: Der Docker Dämon, genannt Dockerd, ist ein anhaltender Prozess, der Docker -Container verwaltet und Containerobjekte behandelt. Der Daemon hört auf Anfragen zu, die über die Docker Engine -API gesendet werden.[22][23] Das Docker -Client -Programm, genannt Docker, liefert a Befehlszeilenschnittstelle (CLI), mit der Benutzer mit Docker -Daemons interagieren können.[22][24]
  • Objekte: Docker -Objekte sind verschiedene Entitäten, die zur Zusammenstellung einer Anwendung in Docker verwendet werden. Die Hauptklassen von Docker -Objekten sind Bilder, Container und Dienste.[22]
    • Ein Docker -Container ist eine standardisierte, eingekapselte Umgebung, in der Anwendungen ausgeführt werden.[25] Ein Container wird mit der Docker -API verwaltet oder Cli.[22]
    • Ein Docker-Bild ist eine schreibgeschützte Vorlage, die zum Erstellen von Containern verwendet wird. Bilder werden zum Speichern und Versand von Anwendungen verwendet.[22]
    • Mit einem Docker -Service können Container über mehrere Docker -Dämonen skaliert werden. Das Ergebnis ist als a bekannt Schwarm, eine Reihe kooperierender Daemons, die durch die Docker -API kommunizieren.[22]
  • Registrien: Eine Docker -Registrierung ist ein Repository für Docker -Bilder. Docker -Clients stellen eine Verbindung zu Registries her, um Bilder zum Herunterladen von Bildern ("Pull") zum Herunterladen von Bildern oder zum Upload -Bildern ("Push"), die sie erstellt haben. Registrien können öffentlich oder privat sein. Zwei Hauptregister der öffentlichen Register sind Docker Hub und Docker Cloud. Docker Hub ist die Standardregistrierung, in der Docker nach Bildern sucht.[22][26] Docker Registries erlauben auch die Erstellung von Benachrichtigungen auf der Grundlage von Ereignissen.[27]

Werkzeug

  • Docker komponieren ist ein Tool zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Container.[28] Es verwendet Yaml Dateien zum Konfigurieren der Dienste der Anwendung und führt den Erstellungs- und Startprozess aller Container mit einem einzigen Befehl durch. Das Docker-Compose Mit CLI Utility können Benutzer Befehle auf mehreren Containern gleichzeitig ausführen, z. B. Erstellen von Bildern, Skalierung Behälter, laufende Behälter, die gestoppt wurden, und mehr.[29] Befehle in Bezug auf Bildmanipulation oder Benutzerinteraktive sind für Docker Compose nicht relevant, da sie einen Container ansprechen.[30] Das Docker-compose.yml Die Datei wird verwendet, um die Dienste einer Anwendung zu definieren und verschiedene Konfigurationsoptionen enthält. Zum Beispiel die bauen Die Option definiert Konfigurationsoptionen wie den Dockerfile -Pfad, die Befehl Die Option ermöglicht es einem, Standard -Docker -Befehle zu überschreiben, und mehr.[31] Die erste öffentliche Beta -Version von Docker Compose (Version 0.0.1) wurde am 21. Dezember 2013 veröffentlicht.[32] Die erste Produktionsversion (1.0) wurde am 16. Oktober 2014 zur Verfügung gestellt.[33]
  • Docker Schwarm Bietet einheimisch Clustering Funktionalität für Docker -Container, die eine Gruppe von Docker -Motoren in eine einzelne virtuelle Docker -Engine verwandeln.[34] In Docker 1.12 und höher ist der Swarm -Modus in Docker Engine integriert.[35] Das Docker Schwarm Cli[36] Mit dem Dienstprogramm können Benutzer Schwarmbehälter ausführen, Discovery -Token erstellen, Knoten im Cluster auflisten und vieles mehr.[37] Das Dockerknoten Mit CLI Utility können Benutzer verschiedene Befehle ausführen, um Knoten in einem Schwarm zu verwalten, beispielsweise die Knoten in einem Schwarm aufzulisten, Knoten zu aktualisieren und Knoten aus dem Schwarm zu entfernen.[38] Docker verwaltet Schwärme mit der Floß Konsens Algorithmus. Laut RAFT muss die Mehrheit der Schwarmknoten auf das Update zustimmen, damit ein Update durchgeführt wird.[39][40]
  • Docker -Volumen Erleichtert die unabhängige Persistenz von Daten und ermöglicht es, dass Daten auch nach dem Löschen des Containers bleiben oder neu erstellt werden.[41]

Geschichte

Docker Inc. wurde von Kamel Founadi, Solomon Hykes und Sebastien Pahl gegründet[42] während der Y Kombinator Sommer 2010 Startup Incubator Group und 2011 gestartet.[43] Das Startup war auch eines der 12 Startups in Gründerhöhle Erste Kohorte.[44] Hykes startete das Docker -Projekt in Frankreich als internes Projekt innerhalb Dotcloud, a Plattform-AS-a-Service Gesellschaft.[45]

Docker debütierte zur Öffentlichkeit in Santa Clara bei Pycon im Jahr 2013.[46] Es wurde als freigelassen als Open Source Im März 2013.[20] Zu der Zeit wurde es verwendet LXC als Standardausführungsumgebung. Ein Jahr später ersetzte Docker mit der Veröffentlichung von Version 0.9 LXC durch eine eigene Komponente. libcontainer, was in der geschrieben wurde gehen Programmiersprache.[18][47]

Im Jahr 2017 gründete Docker das Moby -Projekt für offene Forschung und Entwicklung.[48]

Annahme

  • 19. September 2013: roter Hut und Docker kündigte eine Zusammenarbeit an Fedora, Red Hat Enterprise Linux (Rhel) und OpenShift.[49]
  • 15. Oktober 2014: Microsoft kündigte die Integration des Docker -Engine in an in Windows Serversowie native Unterstützung für die Docker -Client -Rolle in Windows.[50][51]
  • November 2014: Docker Container Services wurden für die angekündigt Amazon Elastic Compute Cloud (EC2).[52]
  • 10. November 2014: Docker kündigte eine Partnerschaft mit an Stratoskala.[53]
  • 4. Dezember 2014: IBM kündigte eine strategische Partnerschaft mit Docker an, die es Docker ermöglicht, enger in die IBM Cloud zu integrieren.[54]
  • 22. Juni 2015: Docker und mehrere andere Unternehmen gaben bekannt, dass sie an einem neuen Anbieter und einem operativ-System-unabhängigen Standard für Software-Container arbeiten.[55][56]
  • Dezember 2015: Oracle Cloud Docker -Container -Unterstützung nach dem Erwerb hinzugefügt Stackengine, ein Docker -Container -Startup.[57]
  • April 2016: WindClocks, ein unabhängiger ISV, veröffentlichte ein Open -Source -Projekt von Docker an Windows, das Windows Server 2012 R2 und Server 2016 unterstützt, mit allen Ausgaben von SQL Server 2008.[58]
  • Mai 2016: Analyse zeigte die folgenden Organisationen als Hauptbeiträge für Docker: Das Docker -Team, Cisco, Google, Huawei, IBM, Microsoft, und roter Hut.[59]
  • 8. Juni 2016: Microsoft kündigte an, dass Docker jetzt nativ verwendet werden könnte Windows 10.[60]
  • Januar 2017: Eine Analyse von LinkedIn Profilerwartungen zeigten, dass die Präsenz der Docker 2016 um 160% gestiegen ist.[61]
  • 6. Mai 2019: Microsoft kündigte die zweite Version von an Windows -Subsystem für Linux (WSL). Docker, Inc. kündigte an, an einer Version von Docker für Windows zu arbeiten, die auf WSL 2 ausgeführt wird.[62] Insbesondere bedeutet dies, dass Docker unter Windows 10 Home ausgeführt werden kann (zuvor war es auf Windows Pro und Enterprise beschränkt, seit es Hyper-V verwendet hat).
  • August 2020: Microsoft kündigte Backport von WSL2 bis Windows 10 -Versionen 1903 und 1909 an (zuvor war WSL2 nur für Version 2004 verfügbar)[63] und Docker -Entwickler kündigten die Verfügbarkeit von Docker für diese Plattformen an.[64]
  • August 2021: Docker Desktop für Windows und MacOS ist für Unternehmensbenutzer nicht mehr kostenlos. Docker beendete die kostenlose Docker -Desktop -Verwendung für größere Geschäftskunden und ersetzte seinen kostenlosen Plan durch einen persönlichen Plan. Docker über Linux -Distribos bleibt unberührt.[65]

Siehe auch

Verweise

  1. ^ Barbier, Julien (9. Juni 2014). "Es ist hier: Docker 1.0". Docker. Docker, Inc. Abgerufen 30. September, 2019.
  2. ^ "Stichworte".
  3. ^ "Docker -Quellcode". Docker/Distribution Repo. Docker, Inc. 12. Oktober 2015. Abgerufen 24. Oktober, 2015 - via GitHub.
  4. ^ "Docker FAQs".
  5. ^ O'Gara, Maureen (26. Juli 2013). "Ben Golub, der Gluster an Red Hat verkaufte und jetzt Dotcloud leitete". Sys-Con Media. Archiviert von das Original am 13. September 2019.
  6. ^ a b "Was ist ein Behälter?". Docker.com. Docker, Inc. Abgerufen 13. Mai, 2019.
  7. ^ Ratan, Vivek (8. Februar 2017). "Docker: Ein Favorit in der DevOps -Welt". Open Source für u. Abgerufen 14. Juni, 2017.
  8. ^ "Docker stellte häufig Fragen (FAQ)". 2. März 2019.
  9. ^ a b "Docker 0.9: Einführung von Ausführungsfahrern und Libcontainer". Docker -Blog. Docker, Inc. 10. März 2014. Abgerufen 20. Januar, 2015.
  10. ^ a b Noyes, Katherine (1. August 2013). "Docker: Ein" Versandcontainer "für Linux -Code". Linux.com. Archiviert von das Original am 8. August 2013. Abgerufen 9. August, 2013.
  11. ^ "Wählen Sie eine Speicher -Treiber -Dokumentation". Docker -Dokumentation. Archiviert von das Original am 6. Dezember 2016. Abgerufen 7. Dezember, 2016.
  12. ^ "Docker -Dokumentation: Kernelanforderungen". docker.readthedocs.org. 4. Januar 2014. Archiviert von das Original am 21. August 2014. Abgerufen 20. August, 2014.
  13. ^ "Beginnen Sie mit Docker für Mac". Docker.com. Docker, Inc. Abgerufen 27. September, 2018.
  14. ^ K., Chris (14. Januar 2019). "Leichte Windows -Container: Verwenden der Docker -Prozessisolierung in Windows 10". Poweruser. Abgerufen 2. August 2019. Mehr „leichte“ reale Container (über sogenannte Prozessisolation), bei denen die Containerprozesse direkt auf dem Hostsystem ausgeführt werden-alle Prozesse auf dem Host und in den Containern teilen sich denselben Windows-Kernel. Dies ähnelt der Funktionsweise von Containern unter Linux.
  15. ^ "8 überraschende Fakten zur Real Docker Adoption". Datadog. Juni 2018. Abgerufen 4. September, 2019.
  16. ^ Walsh, Dan (15. September 2014). "Ein weiterer Grund, warum Container nicht enthalten: Kernel Keyrings". Projectatomic.io. Abgerufen 13. April, 2015.
  17. ^ "Beschränken Sie die Ressourcen eines Containers". Docker -Dokumentation. Abgerufen 7. März, 2018.
  18. ^ a b Vaughan-Nichols, Steven J. (11. Juni 2014). "Docker Libcontainer vereint Linux -Container -Kräfte". ZDNET. Abgerufen 30. Juli, 2014.
  19. ^ "LibContainer - Referenzimplementierung für Container". Docker/Libcontainer Repo. Docker, Inc. Abgerufen 30. Juli, 2014 - via GitHub.
  20. ^ a b Avram, Abel (27. März 2013). "Docker: Automatisierte und konsistente Softwarebereitstellungen". Infoq. Abgerufen 9. August, 2013.
  21. ^ Simonsson, Jesper; Zhang, lang; Morin, Brice; Baudry, Benoit; Monperrus, Martin (2021). "Beobachtbarkeit und Chaos -Engineering auf System fordern Containeranwendungen in Docker". Computersysteme zukünftige Generation. 122: 117–129. Arxiv:1907.13039. doi:10.1016/j.future.2021.04.001.
  22. ^ a b c d e f g "Dockerübersicht". Docker -Dokumentation. Docker, Inc. Abgerufen 26. Februar, 2018.
  23. ^ "Dockerd". Docker -Dokumentation. Docker, Inc. Abgerufen 26. Februar, 2018.
  24. ^ "Verwenden Sie die Befehlszeile der Docker". Docker -Dokumentation. Docker, Inc. Abgerufen 26. Februar, 2018.
  25. ^ "Das Docker -Ökosystem: Eine Einführung in gemeinsame Komponenten". www.digitalocean.com. Abgerufen 26. Februar, 2018.
  26. ^ "Über Registrierung". Docker -Dokumentation. Docker, Inc. Abgerufen 26. Februar, 2018.
  27. ^ "Mit Benachrichtigungen arbeiten". 2. März 2019.
  28. ^ "Überblick über Docker Compose". Docker -Dokumentation. Docker, Inc. Abgerufen 6. Juli, 2017.
  29. ^ "Befehlszeilenreferenz komponieren". Docker -Dokumentation. Docker, Inc. Abgerufen 28. Februar, 2018.
  30. ^ "Orchestrieren Sie Container für die Entwicklung mit Docker Compose". via @Codeship. 27. Mai 2015. Abgerufen 28. Februar, 2018.
  31. ^ "Dateiversion 3 -Referenz komponieren". Docker -Dokumentation. Docker, Inc. Abgerufen 28. Februar, 2018.
  32. ^ Firshman, Ben (21. Dezember 2013). "Release 0.0.1". Docker/komponieren. Docker, Inc. - via GitHub.
  33. ^ Prasad, Aanand (16. Oktober 2014). "Release 1.0.0". Docker/komponieren. Docker, Inc. - via GitHub.
  34. ^ "8 Container -Orchestrierungswerkzeuge zu wissen". Linux.com. 12. April 2017. Abgerufen 6. Juli, 2017.
  35. ^ "Docker Schwarm". Docker -Dokumentation. Docker, Inc. Abgerufen 6. Juli, 2017.
  36. ^ "Docker Schwarm". 4. Juni 2021.
  37. ^ "Swarm Command Line Referenz". Docker -Dokumentation. Docker, Inc. Abgerufen 28. Februar, 2018.
  38. ^ "Dockerknoten". Docker -Dokumentation. Abgerufen 28. Februar, 2018.
  39. ^ "Docker Swarm 101". aquasec.com. Abgerufen 28. Februar, 2018.
  40. ^ "Raft -Konsensalgorithmus". raft.github.io. Abgerufen 28. Februar, 2018.
  41. ^ "Docker Desktop & Docker Guides". Docker -Leitfaden. 25. April 2021. Abgerufen 25. April, 2021.
  42. ^ Hykes, Solomon (28. März 2018). "Auf Wiedersehen". Docker.com. Archiviert von das Original am 12. Januar 2021. Abgerufen 23. Januar, 2021.
  43. ^ "Über die Dotcloud -Plattform". Dotcloud. Archiviert von das Original am 2. Juli 2014. Abgerufen 23. Juni, 2019.
  44. ^ Seigler, MG (10. Januar 2011). "Gründer Den: Ein privates Clubhaus für Unternehmer eröffnet in San Francisco". Techcrunch. Archiviert von das Original am 29. März 2016. Abgerufen 2. Februar, 2021.
  45. ^ "Ein Zuhause für alle Ihre Apps". dotcloud.com. Archiviert von das Original am 17. Mai 2014. Abgerufen 8. Mai, 2014.
  46. ^ "Die Zukunft der Linux -Container". Dotcloud -Kanal. Abgerufen 13. Juli, 2018 - via Youtube.
  47. ^ Swan, Chris (13. März 2014). "Docker lässt LXC als Standardausführungsumgebung fallen lassen". Infoq. Abgerufen 20. Januar, 2015.
  48. ^ "Entmystifizierung der Beziehung zwischen Moby & Docker - Willkommen bei Collabnix". 6. Mai 2017.
  49. ^ "Dotcloud Pivots und gewinnt Big mit Docker, der Cloud -Dienst ist jetzt Teil von Red Hat OpenShift". Techcrunch. 19. September 2013. Abgerufen 20. Januar, 2014.
  50. ^ Foley, Mary Jo (15. Oktober 2014). "Docker -Container -Unterstützung, der bei der nächsten Windows Server -Version von Microsoft kommt". ZDNET. Abgerufen 16. Oktober, 2014.
  51. ^ Guthrie, Scott (15. Oktober 2014). "Docker und Microsoft: Integrieren von Docker in Windows Server und Microsoft Azure". Scottgu's Blog. Microsoft. Abgerufen 12. Januar, 2015.
  52. ^ Barr, Jeff (13. November 2014). "Amazon EC2 Container Service (ECS) - Containerverwaltung für die AWS -Cloud". Amazon Web Services Blog. Abgerufen 29. April, 2017.
  53. ^ Rath, John (10. November 2014). "StratoScale sammelt 32 Millionen US-Dollar für den Bau von OpenStack-Clouds von Docker auf Warenservern". Abgerufen 3. Januar, 2016.
  54. ^ "IBM und Docker kündigen strategische Partnerschaft zur Bereitstellung von Unternehmensanwendungen in der Cloud und in Prem an.". IBM. 4. Dezember 2014. Abgerufen 20. April, 2015.
  55. ^ Lardinois, Frederic (22. Juni 2015). "Docker, Coreos, Google, Microsoft, Amazon und andere kommen zusammen, um einen gemeinsamen Containerstandard zu entwickeln.". Techcrunch. Abgerufen 8. August, 2015.
  56. ^ Siluk, Shirley (22. Juni 2015). "Docker, Tech Giants Team beim Open Container -Projekt". cio-today.com. Abgerufen 8. August, 2015.
  57. ^ McLaughlin, Kevin (22. Dezember 2015). "Oracle erwirbt Docker Container-Startup-Stallengine, plant Austin-basiertes Cloud Computing Center". Crn. Abgerufen 13. Januar, 2022.
  58. ^ Yegulalp, Serdar (4. April 2016). "Windlocks macht das, was Docker und Microsoft nicht tun können". InfoWorld. Abgerufen 27. Oktober, 2018.
  59. ^ "Docker - Aktualisierte Projektstatistik". Github Gist. Abgerufen 22. August, 2016.
  60. ^ Sarkar, Dona (8. Juni 2016). "Ankündigung von Windows 10 Insider Preview Build 14361". Windows -Blogs. Microsoft. Abgerufen 19. Juni, 2016.
  61. ^ Mullany, Michael. "Docker Momentum Analysis 2016". LinkedIn -Puls. Abgerufen 5. Januar, 2017.
  62. ^ Vaughan-Nichols, Steven (18. Juni 2019). "Docker umfasst das Windows -Subsystem für Linux 2". ZDNET. CBS interaktiv.
  63. ^ "Die Unterstützung von WSL 2 kommt zu Windows 10 Versionen 1903 und 1909". Windows -Befehlszeile. 20. August 2020. Abgerufen 21. August, 2020.
  64. ^ "Docker Desktop & WSL 2 - Backport -Update". Docker -Blog. 20. August 2020. Abgerufen 21. August, 2020.
  65. ^ Carey, Scott (31. August 2021). "Docker Desktop ist für Unternehmensbenutzer nicht mehr kostenlos". InfoWorld. Abgerufen 18. Oktober, 2021.

Externe Links