Docker/Getting started: Unterschied zwischen den Versionen

Aus Foxwiki
Wechseln zu:Navigation, Suche
Keine Bearbeitungszusammenfassung
K Textersetzung - „ big"“ durch „"“
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Getting started ==
== Getting started ==
* DockerHub: fertige Images => hub.docker.com/search
; DockerHub
* Image downloaden: <code>docker pull <IMAGE></code>
Fertige Images
* Image starten: <code>docker run <IMAGE></code>
* https://hub.docker.com/search
 
Image download
docker pull <IMAGE>
 
Image starten
docker run <IMAGE>


=== Begriffe ===
=== Begriffe ===
{| class="wikitable options big"
{| class="table table-striped table-hover options"
|-
|-
! Begriff !! Beschreibung
! Begriff !! Beschreibung
Zeile 19: Zeile 25:


=== Beispiele ===
=== Beispiele ===
 
  docker pull debian:stable-slim
  <code>docker pull debian:stable-slim
  docker run --rm -it debian:stable-slim /bin/sh
  docker run --rm -it debian:stable-slim /bin/sh</code>
<code>debian</code> ist ein fertiges Images, welches über DockerHub bereit gestellt wird
debian ist ein fertiges Images, welches über DockerHub bereit gestellt wird
 
* Mit dem [[Postfix]] <code>stable-slim</code> wird eine bestimmte Version angesprochen
* Mit dem Postfix <code>stable-slim</code> wird eine bestimmte Version angesprochen


Mit <code>docker run debian:stable-slim</code> startet man das Image, es wird ein Container erzeugt
Mit <code>docker run debian:stable-slim</code> startet man das Image, es wird ein Container erzeugt
Zeile 38: Zeile 43:


Im obigen Beispiel ist das <code>/bin/sh</code>, also eine Shell  
Im obigen Beispiel ist das <code>/bin/sh</code>, also eine Shell  
  <code>docker pull openjdk:latest
  docker pull openjdk:latest
  docker run --rm -v "$PWD":/data -w /data openjdk:latest javac Hello.java
  docker run --rm -v "$PWD":/data -w /data openjdk:latest javac Hello.java
  docker run --rm -v "$PWD":/data -w /data openjdk:latest java Hello</code>
  docker run --rm -v "$PWD":/data -w /data openjdk:latest java Hello
 
Auch für Java gibt es vordefinierte Images mit einem JDK
Auch für Java gibt es vordefinierte Images mit einem JDK
* Das Tag "<code>latest</code>" zeigt dabei auf die letzte stabile Version des <code>openjdk</code>-Images. Üblicherweise wird "<code>latest</code>" von den Entwicklern immer wieder weiter geschoben, d.h
* Das Tag "<code>latest</code>" zeigt dabei auf die letzte stabile Version des <code>openjdk</code>-Images. Üblicherweise wird "<code>latest</code>" von den Entwicklern immer wieder weiter geschoben, d.&nbsp;h.&nbsp;auch bei anderen Images gibt es ein "<code>latest</code>"-Tag
* auch bei anderen Images gibt es ein "<code>latest</code>"-Tag
* Gleichzeitig ist es die Default-Einstellung für die Docker-Befehle, d.&nbsp;h.&nbsp;es kann auch weggelassen werden:
* Gleichzeitig ist es die Default-Einstellung für die Docker-Befehle, d.&nbsp;h.&nbsp;es kann auch weggelassen werden: <code>docker run openjdk:latest</code> und <code>docker run openjdk</code> sind gleichwertig
docker run openjdk:latest
* Alternativ kann man hier auch hier wieder eine konkrete Version angeben
und
docker run openjdk
sind gleichwertig
 
Alternativ kann man hier auch hier wieder eine konkrete Version angeben


Über die Option <code>-v</code> wird ein Ordner auf dem Host (hier durch <code>"$PWD"</code> dynamisch ermittelt) in den Container eingebunden ("gemountet"), hier auf den Ordner <code>/data</code>
Über die Option <code>-v</code> wird ein Ordner auf dem Host (hier durch <code>"$PWD"</code> dynamisch ermittelt) in den Container eingebunden ("gemountet"), hier auf den Ordner <code>/data</code>

Aktuelle Version vom 1. August 2026, 11:09 Uhr

Getting started

DockerHub

Fertige Images

Image download

docker pull <IMAGE>

Image starten

docker run <IMAGE>

Begriffe

Begriff Beschreibung
Docker-File Beschreibungsdatei, wie Docker ein Image erzeugen soll
Image Enthält die Dinge, die lt.. dem Docker-File in das Image gepackt werden sollen
  • Kann gestartet werden und erzeugt damit einen Container
Container Ein laufendes Images (genauer: eine laufende Instanz eines Images)
  • Kann dann auch zusätzliche Daten enthalten

Beispiele

docker pull debian:stable-slim
docker run --rm -it debian:stable-slim /bin/sh

debian ist ein fertiges Images, welches über DockerHub bereit gestellt wird

  • Mit dem Postfix stable-slim wird eine bestimmte Version angesprochen

Mit docker run debian:stable-slim startet man das Image, es wird ein Container erzeugt

  • Dieser enthält den aktuellen Datenstand, d. h. wenn man im Image eine Datei anlegt, wäre diese dann im Container enthalten

Mit der Option --rm wird der Container nach Beendigung automatisch wieder gelöscht

  • Da jeder Aufruf von docker run <IMAGE> einen neuen Container erzeugt, würden sich sonst recht schnell viele Container auf dem Dateisystem des Hosts ansammeln, die man dann manuell aufräumen müsste
  • Man kann aber einen beendeten Container auch erneut laufen lassen ... (vgl. Dokumentation von docker)
  • Mit der Option --rm sind aber auch im Container angelegte Daten wieder weg! Mit der Option -it wird der Container interaktiv gestartet und man landet in einer Shell

Bei der Definition eines Images kann ein "Entry Point" definiert werden, d. h. ein Programm, welches automatisch beim Start des Container ausgeführt wird

  • Häufig erlauben Images aber auch, beim Start ein bestimmtes auszuführendes Programm anzugeben

Im obigen Beispiel ist das /bin/sh, also eine Shell

docker pull openjdk:latest
docker run --rm -v "$PWD":/data -w /data openjdk:latest javac Hello.java
docker run --rm -v "$PWD":/data -w /data openjdk:latest java Hello

Auch für Java gibt es vordefinierte Images mit einem JDK

  • Das Tag "latest" zeigt dabei auf die letzte stabile Version des openjdk-Images. Üblicherweise wird "latest" von den Entwicklern immer wieder weiter geschoben, d. h. auch bei anderen Images gibt es ein "latest"-Tag
  • Gleichzeitig ist es die Default-Einstellung für die Docker-Befehle, d. h. es kann auch weggelassen werden:
docker run openjdk:latest

und

docker run openjdk

sind gleichwertig

Alternativ kann man hier auch hier wieder eine konkrete Version angeben

Über die Option -v wird ein Ordner auf dem Host (hier durch "$PWD" dynamisch ermittelt) in den Container eingebunden ("gemountet"), hier auf den Ordner /data

  • Dort sind dann die Dateien sichtbar, die im Ordner "$PWD" enthalten sind. Über die Option -w kann ein Arbeitsverzeichnis definiert werden

Mit javac Hello.java wird javac im Container aufgerufen auf der Datei /data/Hello.java im Container, d. h. die Datei Hello.java, die im aktuellen Ordner des Hosts liegt (und in den Container gemountet wurde)

  • Das Ergebnis (Hello.class) wird ebenfalls in den Ordner /data/ im Container geschrieben und erscheint dann im Arbeitsverzeichnis auf dem Host
  • Analog kann dann mit java Hello die Klasse ausgeführt werden