Was ist Docker?

Weit verbreitete Software-Suite zum Bauen von Container-Images, zum Austausch von Images mit Registries sowie zum Starten und Verwalten von Containern. Sie baut Images aus den Anweisungen eines Dockerfiles und startet Container mit docker run. Mit -p veröffentlicht sie Ports, in Volumes und Bind-Mounts hält sie Daten, und sie konfiguriert Netzwerke. Die Formate von Images und Containern sind als Spezifikationen der OCI (Open Container Initiative) standardisiert, sodass sich dieselben Images auch mit anderen Werkzeugen als Docker nutzen lassen.

Japanische Bezeichnung: Docker

„Docker“ kommt in 6 Übungsfragen aus 1 Themen vor, z. B. Grundlagen von Cloud und Containern.

Fachgebiet: Grundlagen von Cloud und Containern

Jetzt üben: Fragen zu Docker

Auf einem Linux-Host wird mit Docker ein Container aus einem Image gestartet, das auf einer anderen Distribution als der des Hosts beruht, und darin werden uname -r (zeigt das Release des Kernels) und cat /etc/os-release (zeigt Angaben zur Distribution) ausgeführt. Welche Beschreibung der Ergebnisse ist richtig?

  1. ASowohl uname -r als auch /etc/os-release zeigen Angaben zum Kernel und zur Distribution des Hosts
  2. BSowohl uname -r als auch /etc/os-release zeigen Angaben zur Distribution, auf der das Image beruht, und zu deren Kernel
  3. Cuname -r zeigt den Kernel des Hosts, /etc/os-release die Distribution des Images
Antwort und Erläuterung anzeigen

Antwort: C. uname -r zeigt den Kernel des Hosts, /etc/os-release die Distribution des Images

Ein Container teilt sich den Kernel des Hosts; uname -r, das den Kernel abfragt, zeigt daher auch im Container das Release des Host-Kernels. /etc/os-release ist dagegen eine Datei und wird aus dem Dateisystem gelesen, das der Container sieht, also aus dem Image; angezeigt wird der Name der Distribution des Images. Ein Image enthält keinen Kernel, sondern nur Dateien des Userspace wie Befehle und Bibliotheken. Ein Programm, das eine Funktion voraussetzt, die dem Kernel des Hosts fehlt, läuft deshalb auch im Container nicht.

In einem Container, der aus einem Image gestartet wurde, wird die im Image enthaltene Konfigurationsdatei /etc/app.conf geändert. Was geschieht beim üblichen Speichermechanismus von Docker (etwa overlay2)?

  1. ADie Datei wird in die beschreibbare Schicht des Containers kopiert und dann geändert; das Image und andere Container sind nicht betroffen
  2. BDie Datei in der Image-Schicht wird direkt geändert, sodass auch andere Container aus demselben Image den neuen Inhalt sehen
  3. CImage-Schichten sind schreibgeschützt; im Image enthaltene Dateien lassen sich daher nicht ändern, und der Schreibvorgang schlägt mit einem Fehler fehl
Antwort und Erläuterung anzeigen

Antwort: A. Die Datei wird in die beschreibbare Schicht des Containers kopiert und dann geändert; das Image und andere Container sind nicht betroffen

Das Dateisystem eines Containers zeigt die schreibgeschützten Image-Schichten mit einer darübergelegten beschreibbaren Schicht pro Container als einen einzigen Baum. Wird eine Datei aus einer unteren Schicht zum ersten Mal geändert, wird sie in die beschreibbare Schicht kopiert, und danach wird die Kopie verwendet (Copy-on-Write). Die Image-Schichten bleiben daher unverändert, und andere Container, die dasselbe Image nutzen, sind nicht betroffen. Weil die erste Kopie einer großen Datei Zeit kostet, legt man häufig geschriebene Daten wie Datenbankdaten in ein Volume.

„Docker“ in den Erläuterungen

Fragen mit „Docker“ (6)

  1. Auf einem Linux-Host wird mit Docker ein Container aus einem Image gestartet, das auf einer anderen Distribution als der des Hosts beruht, und darin werden uname -r (zeigt das Release des Kernels) und cat /etc/os-release (zeigt Angaben zur Distribution) ausgeführt. Welche Beschreibung der Ergebnisse ist richtig?
  2. In einem Container, der aus einem Image gestartet wurde, wird die im Image enthaltene Konfigurationsdatei /etc/app.conf geändert. Was geschieht beim üblichen Speichermechanismus von Docker (etwa overlay2)?
  3. Welche Kombination gibt für das obige Dockerfile richtig an, welcher Befehl beim Bauen des Images mit docker build und welcher beim Starten eines Containers mit docker run ausgeführt wird?
  4. Das aus dem obigen Dockerfile gebaute Image pinger wird mit docker run pinger example.com gestartet. Welcher Befehl wird im Container ausgeführt?
  5. Welche Beschreibung von benannten Volumes und Bind-Mounts, mit denen in Docker die von einem Container geschriebenen Daten erhalten bleiben, ist richtig?
  6. Ein Image wird mit der Angabe registry.example.com/team/web:1.4 geholt (pull). Welche Kombination gibt die Bedeutung der einzelnen Teile dieser Angabe richtig an?

Verwandte Begriffe

Container Copy-on-Write JSON (JavaScript Object Notation) Argument Autoscaling Blue-Green-Deployment Canary-Release Container-Image IaC (Infrastructure as Code) Immutable Infrastructure (unveränderliche Infrastruktur)

Zur Glossarübersicht