Grundlagen von Cloud und Containern

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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Cloud und Containern

  1. Um das 500 MB große Archiv data.tar.gz zu entpacken, wurde mit dem obigen Dockerfile ein Image gebaut. Obwohl das Archiv nach dem Entpacken im selben RUN gelöscht wurde, blieb das Image um die Größe des Archivs größer. Welche Kombination aus Ursache und Abhilfe ist am besten geeignet?
  2. Fünf Images legen jeweils eine eigene Schicht von 30 MB über dasselbe Basis-Image (120 MB). Komprimierung der Schichten und Platzbedarf der Metadaten werden vernachlässigt. Wie viel Festplattenplatz belegen die Images, wenn alle fünf auf einen Server geholt werden (pull)?
  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. Aus dem Image nginx, einem Webserver, der auf Port 80 lauscht, wird mit dem obigen Befehl ein Container gestartet. Die IP-Adresse des Hosts sei 192.0.2.10, und es gebe keine Einschränkungen etwa durch eine Firewall. Mit welcher URL erreicht man diesen Webserver vom Browser eines anderen PCs im selben Netzwerk?