Grundlagen von Cloud und Containern

$ docker run -d -e DB_HOST=db.staging.example.com web:1.4.2
$ docker run -d -e DB_HOST=db.prod.example.com web:1.4.2

Wie oben gezeigt, wird das Verbindungsziel der Datenbank nicht in das Image geschrieben, sondern beim Start des Containers als Umgebungsvariable übergeben. Was ist der wichtigste Vorteil dieses Entwurfs?

  1. AIn Umgebungsvariablen abgelegte Werte werden automatisch verschlüsselt, sodass selbst ein Passwort von anderen nicht gelesen werden kann
  2. BDasselbe Image lässt sich ohne Neubau in Staging und Produktion verwenden, wobei nur die Einstellungen geändert werden, sodass das Getestete unverändert in die Produktion ausgeliefert werden kann
  3. CDie Verbindungsangaben gelangen nicht in die Schichten des Images, sodass das Image weniger Schichten hat und Container deutlich schneller starten
Antwort und Erläuterung anzeigen

Antwort: B. Dasselbe Image lässt sich ohne Neubau in Staging und Produktion verwenden, wobei nur die Einstellungen geändert werden, sodass das Getestete unverändert in die Produktion ausgeliefert werden kann

Die Konfiguration über Umgebungsvariablen zu übergeben, empfiehlt auch die Methodik The Twelve-Factor App; sie trennt Code und Image von der Umgebung, in der sie laufen. Dasselbe Image lässt sich in Staging und Produktion verwenden, sodass in die Produktion genau das gelangt, was getestet wurde, und das Image muss nicht bei jeder Änderung des Verbindungsziels neu gebaut werden. Umgebungsvariablen werden jedoch nicht verschlüsselt; wer die Konfiguration des Containers oder die Prozessinformationen einsehen kann, kann sie lesen. Vertrauliche Werte wie Passwörter werden über Mechanismen wie Secrets in Kubernetes übergeben, die einschränken, wer sie lesen darf.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Cloud und Containern

  1. In einem System, in dem mehrere Dienste zusammenarbeiten, soll ermittelt werden, welche Dienste eine einzelne Nutzeranfrage in welcher Reihenfolge durchlaufen hat und wie viel Zeit sie jeweils darin verbracht hat. Welche der für Observability genutzten Daten eignen sich dafür am besten?
  2. Welche Kombination ordnet den Linux-Kernelfunktionen, auf denen Container beruhen, nämlich den Namespaces und den cgroups (Control Groups), ihre Aufgaben richtig zu?
  3. 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?
  4. Welche Beschreibung des Verhältnisses zwischen einem Container-Image und einem Container ist richtig?
  5. 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)?