Docker (Software)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Docker
Logo
Entwickler Docker, Inc.
Erscheinungsjahr 2013
Aktuelle Version 17.05.0
(5. Mai 2017)
Betriebssystem Linux
Programmiersprache Go
Kategorie Virtualisierung
Lizenz Apache 2.0
deutschsprachig nein
www.docker.com

Docker ist eine Open-Source-Software, die dazu verwendet werden kann, Anwendungen mithilfe von Betriebssystemvirtualisierung in Containern zu isolieren.

Dies vereinfacht die Bereitstellung von Anwendungen, weil sich Container, die alle nötigen Pakete enthalten, leicht als Dateien transportieren und installieren lassen. Container gewährleisten die Trennung sowie Verwaltung der auf einem Rechner genutzten Ressourcen. Das beinhaltet laut Aussage der Entwickler: Code, Laufzeitmodul, System-Tools, Systembibliotheken - alles was auf einem Server installiert werden kann.[1]

Grundlagen[Bearbeiten | Quelltext bearbeiten]

Docker können verschiedene Schnittstellen verwenden, um auf Virtualisierungsfunktionen des Linux-Kernels zugreifen.

Docker basiert auf Linux-Techniken wie Cgroups und Namespaces, um Container zu realisieren. Während anfänglich noch die LXC-Schnittstelle des Linux-Kernels verwendet wurde, haben die Docker-Entwickler mittlerweile eine eigene Programmierschnittstelle namens libcontainer entwickelt, die auch anderen Projekten zur Verfügung steht. Als Speicher-Backend verwendet Docker das Overlay-Dateisystem AuFS, ab Version 0.8 unterstützt die Software aber auch btrfs.[2]

Prinzipiell ist Docker auf die Virtualisierung mit Linux ausgerichtet. Docker kann allerdings auch mit Hilfe von Hyper-V (Standard)[3] oder VirtualBox auf Windows und mit Hilfe von VirtualBox auf macOS verwendet werden. Da die Ressourcentrennung alleine mit den Docker zugrunde liegenden Techniken wie Namespaces und Cgroups nicht völlig sicher ist, hat die Firma Red Hat Unterstützung für die Sicherheitstechnologie SELinux implementiert, welche die Container auf der Ebene des Host-Systems zusätzlich absichert.[4]

Begriffe[Bearbeiten | Quelltext bearbeiten]

Image
ein Image ist bei Docker eine portable Abbildung eines Containers.
Container
ein Container ist ein lauffähiges, virtuelles Betriebssystem.
Dockerfile
eine Textdatei, die Befehle enthält, um ein Image den eigenen Anforderungen anzupassen.
Docker Hub
ein Online-Dienst, der eine Registry für Docker-Images und Repositorys beinhaltet
libcontainer
eine Schnittstelle zu den Grundfunktionen von Docker.
libswarm
eine Schnittstelle um Docker-Container zu steuern.
libchan
eine Schnittstelle zu Dockers Netzwerkfunktionen.

Geschichte[Bearbeiten | Quelltext bearbeiten]

Docker wurde im März 2013 von dotCloud veröffentlicht.[5] Der initiale Commit auf dem Git-Repository stammt allerdings vom 19. Januar 2013 und umfasste 1146 Zeilen Code.[6]

Am 29. Oktober 2013 kündigte dotCloud an, sich in Docker Inc. umzubenennen.[7] Anfang August 2014 verkaufte Docker dann seinen Platform as a Service Dienst dotCloud an die Berliner Firma cloudControl.[8]

Im Laufe des Jahres 2014 hat Docker stark an Bekanntheit und Popularität gewonnen. Das hatte z. B. zur Konsequenz, dass es Teil der aktuellen Red Hat Enterprise Linux 7.0 ist.[9] Außerdem wurde es von openSUSE in das Software-Repertoire aufgenommen.[10] Im Juli 2014 haben sich die Firmen Microsoft, Red Hat, IBM, Docker, Mesosphere, CoreOS und Saltstack dem Kubernetes-Projekt angeschlossen, das von Google initiiert wurde. Ziel der Kooperation ist es, mit Kubernetes Docker-Container auf sämtlichen privaten, öffentlichen und Hybrid-Cloud-Umgebungen bereitstellen zu können.[11] Ab Version 1.0 verfügt Docker über die beiden offiziellen von der IANA zugewiesenen Portnummern 2375 für HTTP- und 2376 für HTTPS-Kommunikation.[12]

Das Unternehmen hinter Docker hat im Januar 2014 von verschiedenen Geldgebern zusammen 15 Millionen US-Dollar an Investitionen erhalten.[13] Im April 2015 folgten Investitionen in Höhe von 95 Millionen US-Dollar.[14] Insgesamt belaufen sich die Investitionen in die ursprünglich unter dem Namen dotCloud gegründete Firma damit auf gut 120 Millionen US-Dollar.

Funktionen[Bearbeiten | Quelltext bearbeiten]

Neben der grundsätzlichen Funktionalität, Container mit virtuellen Betriebssystemen zu erstellen, bietet Docker noch weitere Werkzeuge, um die Arbeit mit Containern zu vereinfachen.

Docker Hub[Bearbeiten | Quelltext bearbeiten]

Docker Hub ist ein Online-Dienst, der eine Registry für Docker-Images und Repositorys beinhaltet. Die Registry teilt sich in einen öffentlichen und einen privaten Teil auf. Im öffentlichen Teil kann jeder Nutzer seine selbst erstellten Images hochladen und damit anderen Nutzern zur Verfügung stellen. Außerdem gibt es mittlerweile offizielle Images, z. B. von Linux-Distributoren. Im privaten Teil des Docker Hubs können Benutzer ihre Docker Images hochladen und dadurch einfach z. B. firmenintern verteilen, ohne dass diese damit öffentlich auffindbar sind.[15]

Die Registry Software wurde von Docker Inc. als Open-Source-Software veröffentlicht, sodass man die Vorteile dieser nun auch nutzen kann, ohne die eigenen Images auf die Server von Docker laden zu müssen.[16]

Mittels von Docker bereitgestellter APIs lassen sich Images auch automatisch aus Repositorys von GitHub oder Bitbucket erstellen.[17]

Versionsverwaltung[Bearbeiten | Quelltext bearbeiten]

Docker bietet eine eingebaute Versionsverwaltung. Diese erlaubt es, den aktuellen Stand des Containers in ein Image zu sichern, dieses auf das Docker Hub zu laden, die Unterschiede zwischen dem aktuellen Zustand des Containers und dem ursprünglichen Image sowie die sehr grobe Historie eines Images anzuzeigen.[18]

Auch wenn diese Versionsverwaltung von der Syntax her an Git angelehnt ist und auch mit diesem verglichen wird, unterscheidet sie sich stark von ihrem Vorbild.

Sicherheitsrisiken[Bearbeiten | Quelltext bearbeiten]

Der Docker-Container, und damit auch die in ihm enthaltenen Anwendungen, wird architekturbedingt als root oder in einer eigenen Nutzergruppe ausgeführt, die root gleichgestellt ist und damit uneingeschränkten Zugang zu allen Betriebssystemfunktionen hat. Gelingt es einem Angreifer, in der Virtualisierung Superuser-Rechte zu erlangen, hat er diese Rechte ebenfalls im Host und damit auch Zugriff auf alle anderen von ihm gehosteten Container. Entgegen dem Konzept von Virtualisierung (Sandbox) ist keine Ressource des Hosts vor dem Zugriff des Containers geschützt. [19][20][21] Dem Entwicklerteam von Docker ist dieses Problem bekannt, es fühlt sich allerdings nicht veranlasst, etwas dagegen zu tun,[22] sondern stellt die Sicherheitsprobleme ausdrücklich als Teil des Konzepts vor.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. What is Docker? Abgerufen am 28. Februar 2017 (englisch).
  2. Docker 0.8
  3. Microsoft Hyper-V. Abgerufen am 30. Januar 2017 (englisch).
  4. Docker unterstützt SELinux
  5. About Us | Docker. Docker Inc., abgerufen am 6. September 2014.
  6. Initial commit. aluzzardi, abgerufen am 24. August 2016.
  7. dotCloud, Inc. is becoming Docker, Inc. dotCloud Inc., abgerufen am 6. September 2014 (englisch).
  8. Julia Schmidt: Platform as a Service: cloudControl übernimmt dotCloud-Geschäft von Docker. Heise Zeitschriften Verlag GmbH & Co. KG, 5. August 2014, abgerufen am 6. September 2014.
  9. Red Hat Enterprise Linux 7 veröffentlicht
  10. Docker-Container für Open Suse 13.1 verfügbar
  11. Kubernetes für Docker
  12. Docker bei IANA
  13. Docker Closes $15 M Series B Funding
  14. 95 Millionen neue US-Dollar für Docker
  15. https://docs.docker.com/registry/
  16. https://registry.hub.docker.com/_/registry/
  17. https://docs.docker.com/docker-hub/builds/
  18. What is Docker and when to use it. CenturyLink Innovations Lab, abgerufen am 28. Februar 2017.
  19. Docker Sicherheitsempfehlungen, abgerufen am 16. April 2017
  20. Docker - ein Sicherheitsrisiko für Unternehmen?, Computerwoche vom 26. Oktober 2015, abgerufen am 1. Mai 2017
  21. Docker Security, abgerufen am 1. Mai 2017
  22. "Using the docker command to root the host", abgerufen am 16. April 2017