Auswahl eines Startbefehls für dein Docker-Image

Einführung in Docker

Tim Sangster

Software Engineer @ DataCamp

Was ist ein Startbefehl?

Das Hello-World-Image gibt Text aus und stoppt dann.

docker run hello-world
Hello from Docker!

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon created a new container from the hello-world image which runs the
    executable that produces the output you are currently reading.
 3. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
Einführung in Docker

Was ist ein Startbefehl?

Ein Image mit Python könnte Python beim Start öffnen.

docker run python3-sandbox
Python 3.10.6 (main, Nov  2 2022, 18:53:38) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
...
....
>>> exit()
repl@host:/#
Einführung in Docker

Shell-Befehls beim Start ausführen

CMD <shell-command>

Die CMD-Anweisung:

  • wird ausgeführt, wenn das Image gestartet wird,
  • vergrößert das Image nicht,
  • verlängert die Build-Zeit nicht.
  • Wenn es mehrere Anweisungen gibt, zählt nur die letzte.
Einführung in Docker

Typische Verwendung

Starten einer Anwendung, um einen Workflow auszuführen oder externe Verbindungen zuzulassen

CMD python3 my_pipeline.py
CMD postgres

Ein Skript starten, das dann mehrere Anwendungen startet

CMD start.sh
CMD python3 start_pipeline.py
Einführung in Docker

Wann wird gestoppt?

$$

  • Hello-World-Image -> Nach Textausgabe
  • Ein Datenbank-Image -> Wenn die Datenbank beendet wird

$$

Ein allgemeineres Image braucht einen allgemeineren Startbefehl.

  • Ein Ubuntu-Image -> Wenn die Shell geschlossen wird
Einführung in Docker

Den Standard-Startbefehl überschreiben

Ein Image starten

docker run <image>

Ein Image mit einem benutzerdefinierten Startbefehl starten

docker run <image> <shell-command>

Ein Image interaktiv mit einem benutzerdefinierten Startbefehl starten

docker run -it <image> <shell-command>
docker run -it ubuntu bash
Einführung in Docker

Zusammenfassung

Verwendung Dockerfile-Anweisung
Shell-Befehl hinzufügen, der ausgeführt wird, wenn ein Container aus dem Image gestartet wird CMD <shell-command>

Verwendung Shell-Befehl
Das im Image eingestellt CMD überschreiben docker run <image> <shell-command>
Das im Image eingestellte CMD überschreiben und interaktiv starten docker run -it <image> <shell-command>
Einführung in Docker

Lass uns üben!

Einführung in Docker

Preparing Video For Download...