Grundlagen von Cloud und Containern

$ docker run -d -p 8080:80 nginx

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?

  1. Ahttp://192.0.2.10:80/
  2. Bhttp://(IP-Adresse des Containers):8080/
  3. Chttp://192.0.2.10:8080/
Antwort und Erläuterung anzeigen

Antwort: C. http://192.0.2.10:8080/

Die Option wird als -p Host-Port:Container-Port geschrieben; -p 8080:80 leitet also den Verkehr, der am Port 8080 des Hosts ankommt, an Port 80 des Containers weiter. Von einem anderen PC aus verbindet man sich mit Port 8080 der IP-Adresse des Hosts. Die IP-Adresse des Containers gehört im Allgemeinen zu einem virtuellen Netzwerk innerhalb des Hosts und ist von anderen PCs aus nicht direkt erreichbar. EXPOSE 80 im Dockerfile vermerkt nur, welchen Port der Container nutzt; es veröffentlicht für sich allein keinen Port des Hosts, daher ist -p nötig.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Cloud und Containern

  1. 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?
  2. Welche Beschreibung von benannten Volumes und Bind-Mounts, mit denen in Docker die von einem Container geschriebenen Daten erhalten bleiben, ist richtig?
  3. 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?
  4. 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?
  5. Wie heißt in Kubernetes die kleinste Einheit, die bereitgestellt und verwaltet wird und einen oder mehrere Container zusammenfasst, die sich dieselbe IP-Adresse und dieselben Volumes teilen?