Erster Container

Ersten Container ausführen

Nachdem Docker Desktop auf unserem System läuft, können wir nun ein erstes Container auf unserem Rechner ausführen. Dazu werden wir die das mitinstallierte Docker CLI nutzen.

nginx Webserver ausführen

docker run --name mein-server \
  -p 1080:80 \
  -d nginx:alpine
docker run --name mein-server -p 1080:80 -d nginx:alpine

Unable to find image 'nginx:alpine' locally
alpine: Pulling from library/nginx
e1779b8a5a13: Download complete
81eecc9295df: Download complete
9afea992cb63: Pull complete
e6b7df06dc76: Pull complete
223f9efb3159: Pull complete
0bd713040ebb: Pull complete
d85e26d0c84d: Pull complete
2422bf732277: Pull complete
e350a0f963e3: Pull complete
29b7c987abf6: Pull complete
Digest: sha256:289decab414250121a93c3f1b8316b9c69906de3a4993757c424cb964169ad42
Status: Downloaded newer image for nginx:alpine
76c073965f57bc7351a7259b6e71b70a990cb42bcc4cda7ee41c6f38bb11963d
  • docker run startet ein neues Container
  • --name <eingener_container_name> gibt dem Container den Namen mein-server. Dies ist optional. Wird kein Name angegeben, “würfelt” Decker einen aus.
  • -p 1080:80 Durchreichen eines Ports aus dem Container (hier Port 80 des nginx Servers) zu dem Host-Port (hier 1080)
  • -d Starten Container als “Detached” (Hintergrundprozess), so dass die Kommandozeile weiter genutzt werden kann.
  • nginx:alpine ist der Image, das wir verwenden. nginx ist dabei der Name des Images (Repository). alpine ist ein Tag (Version).

In der Ausgabe sehen wir, dass Docker am Anfang das Image nicht hat (Unable to find image 'nginx:alpine' locally). Aus diesem Grund stößt dieser an, das Image aus dem Docker Hub herunterzuladen. Dies kann einige Zeit dauern, abhängig von der Internetverbindung und der Größe des Images. In unserem Fall ist das Image sehr klein (ca. 20MB).

Nun können wir über http://localhost:1080 auf unseren neuen Webserver zugreifen.

Container liefert Web-Inhalt

Container stoppen und löschen

docker stop mein-server
docker rm mein-server

nginx mit eigenen Inhalt ausführen

Statt der langweiligen Standardseite von nginx können wir auch diesen dazu bewegen, unsere eigen statische Seite auszuliefern. Dazu erstellen wir zuerst einen Ordner und legen da eine einfache HTML Seite ab.

Hinweis

Beispiel Seite finden Sie in dem verlinkten GitHub Repository im Ordner nginx-site

docker run --name mein-server \
  -p 1080:80 \
  -v ./nginx-site:/usr/share/nginx/html:ro \
  -d nginx:alpine
  • -v <ordner/pfad/auf/dem/host>:/usr/share/nginx/html:ro Mapping für Speicher (Volume)
    • der 2. Teil nach dem : ist der Ordner innerhalb vom Container, das auf unseren lokalen Ordner gemappt werden soll. nginx erwartet Web-Inhalt in dem Ordner /usr/share/nginx/html
    • ro am Ende steht für read only. D.h. der Container kann nur lesend auf unseren lokalen Ordner zugreifen.

Eigene Web-Site mit nginx

docs