Ein Docker Container teilt sich den Kernel des Hostsystems, wodurch mehrere isolierte Anwendungen auf einem einzigen Betriebssystem laufen können.
Eine VM ist ein komplettes eigenes Betriebssystem oder Gastbetriebssystem auf einem Hostbetriebssystem. Ressourcen wie Prozessor, Speicher und Netzwerke werden auf die VM verteilt.
VMs stellen eine Vollständige Virtualisierung, bei der ein eigenständiges Betriebssystem in einem isoliertem Umfeld läuft. Docker-Container bieten eine leichtgewichtige, anwendungsbasierte Virtualisierung bei der Anwendungen in isolierten Containern ausgeführt werden Die Wahl zwischen den Beiden hängt von den Spezifischen Anforderungen, dem Ressourcenverbrauch und der Portabilität der Anwendung ab.
1 2
Docker ist eine freie Software zur Isolierung von Anwendungen mit Hilfe von Containervirtualisierung.
Docker 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 und Verwaltung der auf einem Rechner genutzten Ressourcen. Das umfasst laut Aussage der Entwickler: Code, Laufzeitmodul, Systemwerkzeuge, Systembibliotheken – alles was auf einem Rechner installiert werden kann.
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.
Normalerweise sind Docker auf die Virtualisierung mit Linux ausgerichtet, können aber auch mittels HyperV oder Virtualbox auf Windows oder mit HyperKit oder VirtualBox auf macOs verwendet werden.
Ein Speicherabbild eines Containers. Das Image selbst besteht aus mehreren Layern, die schreibgeschützt sind und somit nicht verändert werden können. Ein Image ist portabel, kann in Repositories gespeichert und mit anderen Nutzern geteilt werden. Aus einem Image können immer mehrere Container gestartet werden.
Als Container wird die aktive Instanz eines Images bezeichnet. Der Container wird also gerade ausgeführt und ist beschäftigt. Sobald der Container kein Programm ausführt oder mit seinem Auftrag fertig ist, wird der Container automatisch beendet.
Ein Layer ist ein Teil eines Images und enthält einen Befehl oder eine Datei, die dem Image hinzugefügt wurde. Anhand der Layer kann die ganze Historie des Images nachvollzogen werden.
Eine Textdatei, die mit verschiedenen Befehlen ein Image beschreibt. Diese werden bei der Ausführung abgearbeitet und für jeden Befehl wird ein einzelnes Layer angelegt.
Ein Repository ist ein Satz gleichnamiger Images mit verschiedenen Tags, zumeist Versionen.
Eine Registry, wie zum Beispiel Docker Hub oder Artifactory, dient der Verwaltung von Repositories.
-
"Update the apt package index and install packages to allow apt to use a repository over HTTPS:"
$ sudo apt update
$ sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
-
"Add Docker’s official GPG key:"
$ sudo mkdir -m 0755 -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
-
"Use the following command to set up the repository:"
$ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
-
"Update the package index:"
$ sudo apt-get-update
-
"Install Docker Engine, containerd, and Docker Compose:"
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
"Verify that the Docker Engine is successful by running
hello-world
image:"$ sudo docker run hello-world
5 Hypervisor oder auch Virtual-Machine-Monitor (VMM) ist die Bezeichnung für eine Klasse von Systemen der praktischen Informatik, die als abstrahierende Schicht zwischen tatsächlich vorhandener Hardware und weiteren zu installierenden Betriebssystemen dient.
Ein Hypervisor erlaubt den simultianen Betrieb von mehreren Gastsystemen auf einem Hostsystem. Der Hypervisor verwaltet die Ressourcenzuteilung für einzelne Gastsysteme.