Einführung in die Welt der Docker Container - Docker

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Einleitung

Wozu benötigt man Docker?

  • Bei der Entwicklung von Anwendungen benötigt man stets die unterschiedlichsten Bibliotheken, Datenbanken oder Tools. Wenn man mehrere Anwendungen gleichzeitig auf dem selben System in Betrieb nehmen möchte, muss erst die Kompatibilität der einzelnen Tools etc. überprüft werden. Meist stoßt man hier schon auf Streitigkeiten.
  • Docker baut einen eigenen Container, der eine unabhängige und kleine Plattform bietet für die Anwendung.
  • Dadurch das die Container in ihrer "eigenen Umgebung" laufen beeinflussen sie die anderen Container nicht und somit können mehrere Container auf einem System mit den Unterschiedlichsten Tool Versionen laufen.

Was kann ich mir unter Docker vorstellen?

  • Docker ist ein Tool welches die Entwicklung und Einbringung von Anwendungen mithilfe der Containervirtualisierung erleichtert. Ein Docker-Container packt alle Bibliotheken, Datenbanken, Treiber oder auch Konfigurationsdateien zusammen.
  • Durch virtueller Betriebssysteme können Docker-Container systemunabhängig integriert werden.

Was ist Docker nicht?

  • Docker ist nicht für Client Anwendungen wie Word oder Excel gedacht. Docker sind für Server-Anwendungen wie z.B. ein Webserver.

Grobe Entwicklungsgeschichte

  • Die Firma Docker Inc. wurde im Sommer 2010 von Solomon Hykes und Sebatian Pahl gegründet.
  • Docker lief erstmalig mit der Technologie von LXC (Linux Container). 2014 wurde diese durch eine eigene Docker-Komponente ersetzt.
  • Sepbtember 2013 Begonn die Zusammenarbeit zwischen Docker und "Fedora Linux" und "Red Hat Enterprice Linux" und "Open Shift Container".
  • Oktober 2014 integriete Microsof die Docker Engine in Windows Server.
  • November 2014 begann Amazon mit dem Einsatz von Docker Container.
  • Mai 2019 Microsoft beginnt mit der Entwicklung einer Docker Version auf Basis von "WSL 2".
  • November 2019 wurde Scott Johnston von Rob Bearden der neue CEO von Docker.

Docker Begriffe

Was ist ein Container?

  • Ein Container ist die Zusammenfassung mehrerer Komponenten in einer eigenen Umgebung.
  • Container sind von einander getrennt aber können über einen definierten Kommunikationskanal Informationen austauschen.
  • Durch die Entkopplung der Container werden Versionsunterschiede von Tools, Bilbiotheken, etc. umgangen

Was ist ein Container Image?

  • Docker Images sind die Grundbausteine eines Containers.
  • Ein Image stellt eine Anwendung bereit mit allen nötigen Bibliotheken und Tools.
  • Aus einem Image geht dann ein Docker-Container hervor mit der laufenden Anwendung.

Das Dockerfile

  • Das Dockerfile ist ein Textdokument, dass die Befehle für das zusammenstellen eines Images beeinhaltet.
  • Diese Befehle können auch einfach in der Kommandozeile abgesetzt werden um den Container aus dem Image zu bauen.
  • Hier sind ein paar Elemente des Dockerfiles:
    • FROM-Anweisung
      • Als erstes wird die FROM-Anweisung gegeben FROM <imagename>[:<tag>] .
      • Diese Bestimmt welches Image genutzt wird.
      • Der tag kann optional bestimmt werden um die Version zu bestimmen.
    • RUN-Anweisung
      • Diese Anweisung führt beliebige shell Kommandos durch
      • Bsp.: RUN chmod +x ./hello.sh (macht die Datei hello.sh im Container ausführbar)
    • CMD-Anweisung
      • Die CMD Anweisung ist ähnlich der RUN Anweisung, aber kann nur einmal in einem Dockerfile verwendet werden.
      • Das Bedeutet wenn die CMD Anweisung öfter auftritt wird nur die letzte des Files gewertet.
      • Bsp.: RUN ["param1", "param2"]
    • COPY-Anweisung
      • COPY kopiert Dateien oder Verzeichnisse des Host Systems auf dem Dateisystem des Images zu.
      • Bei der COPY Anweisung wird immer eine <src> und eine <dest> angegeben.
      • Bsp.: COPY html /usr/share/nginx/html

Was ist die Docker Engine?

  • Die Docker Engine stellt die Laufzeit-Umgebung der Container zur Verfügung.
  • Diese läuft auf jeglichen Betriebssystemen wie Windows, MacOS und Linux

Was ist ein Docker Host?

  • Der Docker Host ist der Computer der die Container Engine ausführt

Was sind Container Netzwerke?

  • Docker stellt eigene Netzwerke zur Verfügung damit die Container miteinander oder mit der Anwendung kommunizieren können
  • Dabei stellt Docker vier Netzwerkarten zur Verfügung:
    • Host Network
    • Overlay Network
    • Closed Network/ none Network
    • Bridge Network

Was ist die Container Registry?

  • Eine Registry ist eine Ansammlung von Container Images.
  • In der Registry können Images verwaltet bzw. hoch- und runtergeladen.
  • Eine der bekanntesten Registrys ist Docker Hub
  • Vergleichbar mit Git

Was ist der Docker Hub?

  • Das Docker Hub ist das wichtigste öffentliche Docker Repository
  • Hier werden alle Docker Tools abgegriffen
  • Es dient zur Verwaltung von öffentlichen und privaten Images

Unterschied zwischen Container und Virtuellen Maschinen?

  • Ein Container benötigt kein vollständiges Betriebssystem und Kernels wie eine VM
  • Die Container nutzen den Host Kernel um als eigenständiger Prozess zu laufen
  • Dadurch das kein Betriebssystem virtualisiert werden muss, ist der Ressourcenbedarf viel geringer als bei einer VM
  • Zusammengefasst: Docker-Container sind leichtgewichtig und schnell, während VMs vollständige Betriebssystemumgebungen mit stärkerer Isolation bieten