Grundlagen von Cloud und Containern

FROM alpine
ENTRYPOINT ["ping", "-c", "3"]
CMD ["localhost"]

Das aus dem obigen Dockerfile gebaute Image pinger wird mit docker run pinger example.com gestartet. Welcher Befehl wird im Container ausgeführt?

  1. Aping -c 3 localhost
  2. Bping -c 3 example.com
  3. Cexample.com (der Versuch, es als Befehl auszuführen, schlägt mit einem Fehler fehl)
Antwort und Erläuterung anzeigen

Antwort: B. ping -c 3 example.com

Ein in der exec-Form (als JSON-Array) geschriebenes ENTRYPOINT ist der Befehl, den der Container immer ausführt, und CMD liefert dessen Standardargumente. Argumente hinter dem Imagenamen in docker run ersetzen CMD und werden hinter das ENTRYPOINT angehängt, daher wird ping -c 3 example.com ausgeführt. Ohne Argumente, also mit docker run pinger, würde das localhost aus CMD verwendet, was ping -c 3 localhost ergibt. Um das ENTRYPOINT selbst zu ändern, verwendet man die Option --entrypoint von docker run.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Cloud und Containern

  1. 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?
  2. Das obige Dockerfile (B) ist aus Dockerfile (A) entstanden, in dem RUN npm ci nach COPY . . stand, indem die Reihenfolge so geändert wurde, dass zuerst nur die Abhängigkeitsdateien kopiert werden. npm ci dauert 120 Sekunden, npm run build 30 Sekunden und COPY . . 2 Sekunden; die Zeit der übrigen Anweisungen ist vernachlässigbar. Das Image wird 20-mal am Tag neu gebaut, wobei sich jeweils nur der Quellcode unter src ändert (package.json und package-lock.json bleiben unverändert). Um wie viel ist die gesamte Build-Zeit pro Tag bei B kürzer als bei A, wenn der Cache des vorherigen Builds genutzt werden kann?
  3. Welche Beschreibung von benannten Volumes und Bind-Mounts, mit denen in Docker die von einem Container geschriebenen Daten erhalten bleiben, ist richtig?
  4. 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?
  5. scratch ist ein leeres Image, das keinerlei Dateien enthält. Was enthält das endgültige Image, das mit dem obigen Dockerfile mit Multi-Stage-Build gebaut wird?