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.2Wie 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?
- AIn Umgebungsvariablen abgelegte Werte werden automatisch verschlüsselt, sodass selbst ein Passwort von anderen nicht gelesen werden kann
- 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
- 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.
Weiter: 9 weitere Fragen zu Grundlagen von Cloud und Containern