Direkt zum Inhalt

Führe ein Docker-Image als Container aus: Ein praktischer Leitfaden für Anfänger

In diesem Tutorial lernst du, wie du Docker-Images mit Docker-Run ausführen kannst, mit klaren Beispielen, praktischen Tipps und Hinweisen zur Fehlerbehebung.
Aktualisierte 6. Juni 2025  · 9 Min. Lesezeit

Wenn du dich fragst, wie du ein Docker-Imageausführen kannst, bist du nicht allein. Egal, ob du ein Image aus Docker Hub gezogen oder selbst eines erstellt hast, die Ausführung ist der entscheidende Schritt, um deine Anwendung zum Leben zu erwecken.

Dieses Tutorial ist dein einsteigerfreundlicher Leitfaden für den Befehl docker run und darüber hinaus. Du wirst es lernen:

  • Was Docker-Images und Container eigentlich sind.
  • Wie man ein Bild mit verschiedenen Optionen ausführt.
  • Und wie du Container stoppst, entfernst und Fehler behebst wie ein Profi.

Am Ende wirst du sicher sein, dass du deine eigenen Container starten kannst und genau weißt, was unter der Haube passiert.

Docker Images und Container verstehen

Bevor wir uns mit den Befehlsbeispielen beschäftigen, wollen wir Docker-Images und Container in einfachen Worten verstehen.

Wenn du mit diesen Begriffen bereits vertraut bist, kannst du den nächsten Abschnitt überspringen!

Was ist ein Docker-Image?

Ein Docker-Image ist eine unveränderliche Blaupause für deine Anwendung. Sie definiert alles, was dein Container braucht: den Code, die Bibliotheken, die Umgebung und die Konfigurationen. Sobald du ein Image hast, kannst du es verwenden, um einen oder hundert Container zu starten. Es bleibt jedes Mal gleich.

Woher kommen also die Bilder? Dockerfile baut sie auf. In einem Dockerfile legst du fest, welches Basis-Image du verwendest, welche Abhängigkeiten du installierst und wie deine App laufen soll.

Sobald dein Dockerfile fertig ist, führst du den Befehl docker build aus. Dieser Befehl folgt den Schritten in der Datei und verwandelt sie in ein wiederverwendbares Bild.

Was ist ein Docker-Container?

Ein Docker-Container ist die aktive Version eines Docker-Images. So kann deine Anwendung in ihrer eigenen isolierten Umgebung laufen und unabhängig vom Hostsystem ein einheitliches Verhalten gewährleisten. 

Es folgt dem Ansatz "einmal bauen, überall ausführen", sodass du die Umgebung nicht jedes Mal manuell einrichten musst. 

Bild vs. Container

Die folgende Tabelle vergleicht ein Bild und einen Container nebeneinander:

Bild

Container 

Ein Image ist ein standardisiertes Paket, das alle Dateien, Binärdateien, Bibliotheken und Konfigurationen enthält, um einen Container auszuführen.

Eine Laufzeitinstanz eines Bildes.

Ein Bild ist unveränderlich. Das bedeutet, dass sie sich nicht ändern kann, bis sie wieder aufgebaut wird.

Der Container ist veränderbar. Du kannst es im laufenden Betrieb bearbeiten, neue Pakete installieren oder Konfigurationsdateien ändern.

Ein Dockerfile (eine Reihe von Anweisungen, um ein Image zu erstellen) erstellt ein Image.

Ein Image erstellt einen Container.

Dein Computer speichert Bilddateien.

Ein Container läuft in deinem Speicher.

Wenn du ganz neu in der Containerisierung bist, führt dich unser Kurs Einführung in Docker mit praktischen Beispielen durch die wichtigsten Konzepte.

Der Befehl docker run

Wenn du den Befehl docker run ausführst, weist du Docker an, einen neuen Container auf Basis eines Images zu erstellen.

Im Klartext heißt das, dass du ein Programm in einer isolierten Umgebung startest. Das Programm kann alles Mögliche sein, eine einfache Webanwendung oder ein ausgewachsener Dienst mit mehreren Prozessen. 

Grundlegende Syntax

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  • [OPTIONS] - Zusätzliche Flags, um die Ausführung des Containers anzupassen
  • IMAGE - Der Name des Docker-Images 
  • [COMMAND] - (Optional) Setzt den Standardbefehl im Bild außer Kraft.
  • [ARG...]- (Optional) Argumente.

Gemeinsame Flaggen und Optionen

  • -d: Getrennter Modus: führt Container im Hintergrund aus
  • -p: Port Mapping: Um von deinem Browser aus auf einen Dienst (z. B. eine API oder eine Web-App) zuzugreifen, musst du einen Port freigeben. Beispiel: -p 3000:3000 ordnet den Port 3000 deines Computers dem Port 3000 des Containers zu.
  • --name: Docker gibt dem Container einen Standardnamen, aber du kannst ihm mit diesem Flag einen neuen Namen geben.
  • -v:  Damit hältst du alle Daten getrennt vom Container selbst und stellst sicher, dass sie auch dann erhalten bleiben, wenn der Container angehalten oder gelöscht wird.
  • --rm: Wenn der Container anhält, wird er mit diesem Flag automatisch gelöscht.
  • -e: Nutze sie, um Datenbankpasswörter oder API-Schlüssel zu übergeben, ohne sie in deiner App zu kodieren.

Interaktiver Betrieb vs. losgelöste Container

Docker führt Container auf zwei Arten aus: im interaktiven Modus (-it) und im Detach-Modus (-d). Jeder Modus hat spezifische Anwendungsfälle, die von deinen Zielen abhängen. 

  • -it: Interaktiver Modus: Wenn du mit dem Terminal direkt in einem Container arbeiten willst, kannst du das -it Flag verwenden. Er versetzt den Container in den interaktiven Modus, sodass du Befehle eingeben, die Ausgabe sehen und in Echtzeit arbeiten kannst.
    • -i: Hält die Eingabe offen, damit du Befehle in den Container eingeben kannst
    • -t: Bietet dir eine terminalähnliche Oberfläche innerhalb des Containers
  • -d: Getrennter Modus: Er führt den Container im Hintergrund aus, sodass dein Terminal für andere Aufgaben frei ist. 

Mit unserem Docker for Data Science Cheat Sheet hast du die wichtigsten Befehle und Best Practices immer griffbereit.

Docker-Images abrufen und ausführen

Da du nun die Syntax des Befehls docker run kennst, zeige ich dir in diesem Abschnitt, wie du benutzerdefinierte Bilder erstellst und sie ausführst.

Images von Docker Hub verwenden

Docker Hub ist wie eine Online-Bibliothek für Container-Images. Du kannst vorgefertigte erstellen oder deine hochladen, um sie mit anderen zu teilen. Es unterstützt sowohl öffentliche als auch private Repositories, sodass du Bilder offen mit der Community teilen oder Zugangskontrollen für deine internen Teams einrichten kannst.

Benutzerdefinierte Bilder ausführen 

Um ein Docker-Image auszuführen, musst du es zunächst mit einer Dockerdatei erstellen. Dann kannst du sie lokal ausführen oder sie im Docker Hub freigeben. 

Lass uns also zuerst ein Dockerfile erstellen. Hier ist ein Beispiel:

# Use official Python base image
FROM python:3.11-slim
# Set working directory in the container
WORKDIR /app
# Copy requirements file and install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the app code
COPY . .
EXPOSE 5000
# Set default command
CMD ["python", "app.py"]

Was bedeutet das obige Dockerfile?

  • FROM python:3.11-slim: Basis-Image mit Python 3.11 Version
  • WORKDIR /app: Legt /app als Arbeitsverzeichnis innerhalb des Containers fest.
  • COPY requirements.txt . : Verschiebt alle Abhängigkeiten vom lokalen Rechner in das App-Verzeichnis des Containers.
  • RUN pip install --no-cache-dir -r requirements.txt: Installiert die Abhängigkeiten in der requirements.txt.
  • COPY . . : Kopiert den Code des aktuellen Arbeitsverzeichnisses (Apps, Konfigurationsdateien und andere) in das App-Verzeichnis des Containers.
  • CMD ["Python", "app.py"]: führt app.py aus, wenn ein Container von diesem Image gestartet wird.

Schritt 1. Dockerfile erstellen 

Schauen wir mal, was passiert, wenn du dieses Dockerfile baust.

  • Führe den folgenden Befehl aus:
docker build -t my-python-app .

Hinweis: Damit dieser Befehl funktioniert, solltest du zuerst Docker in deinem System einrichten; dieser Leitfaden hilft dir dabei.

Das Bild zeigt die Ergebnisse der Ausführung von docker build -t my-python-app im Terminal.

Hier siehst du, was hinter den Kulissen passiert, wenn du den Build-Befehl ausführst:

  1. Docker liest die Dockerdatei
  2. Das Python-Basis-Image wird von Docker Hub bezogen
  3. Das Arbeitsverzeichnis ist auf /app eingestellt.
  4. Die requirements.txt wird in den Container kopiert.
  5. Abhängigkeiten werden mit pip install installiert.
  6. Der Rest deines Codes wird in /app kopiert.
  7. Das endgültige Bild ist als my-python-app gekennzeichnet.

Schritt 2: Dockerfile ausführen

Sobald dein Bild erstellt ist, kannst du es ausführen:

docker run -p 5000:5000 my-python-app

Hier ist, was passiert, wenn du es ausführst: 

  • Ein neuer Container aus deinem benutzerdefinierten Image, my-python-app, wird erstellt.
  • Port 5000 auf deinem Rechner wird auf Port 5000 im Container abgebildet (-p 5000:5000).
  • Die CMD ["python", "app.py"] wird ausgeführt und führt die App aus.
  • Der Container läuft aufgrund der Option -d im Hintergrund (detached mode).

Jetzt kannst du http://localhost:5000 in deinem Browser besuchen und du wirst etwas wie das Folgende sehen, was bedeutet, dass deine Anwendung läuft:

Screenshot eines Browsers auf http://localhost:5000, der eine "Hallo von Docker!"-Nachricht anzeigt.

Wenn du im Bereich des maschinellen Lernens arbeitest,können diese Top-Docker-Images für ML und KIdie Einrichtung deiner Umgebung beschleunigen.

Laufende Bilder mit Konfiguration

Für einige Anwendungen musst du möglicherweise Images mit einer bestimmten Konfiguration ausführen. Hier sind zwei gängige Beispiele.

Persistierende Daten

In Containern werden Daten vorübergehend gespeichert. Sobald du sie löschst, sind die Daten weg. Ein Volume ist eine Möglichkeit, Daten außerhalb des Containers zu speichern, damit sie auch dann erhalten bleiben, wenn der Container entfernt oder neu gestartet wird.

Um ein Volume zu mounten, musst du einen Befehl wie den folgenden ausführen:

docker run -v my-volume:/app/data my-image

Die Daten, die auf /app/data geschrieben werden, bleiben im Volume gespeichert, auch wenn der Container entfernt wird.

Übergabe von Umgebungsvariablen

Umgebungsvariablen übergeben Konfigurationseinstellungen zur Laufzeit an einen Docker-Container. So kannst du deine Docker-Container anpassen, ohne deine Docker-Images zu verändern. 

Du hast zwei Möglichkeiten, Umgebungsvariablen zu übergeben: 

  1. Du kannst Umgebungsvariablen mit dem Parameter -e übergeben. Hier ist ein Beispielbefehl:
docker run -e ENV=production -e DEBUG=False my-image
  1. Du kannst eine .env Datei mit allen Umgebungsvariablen erstellen und sie an den Befehl übergeben. Hier ist ein Beispiel:
docker run --env-file .env my-image

Beispielhafte .env Datei:

ENV=staging
DEBUG=True
SECRET_KEY=mysecret

Verwaltung von laufenden Containern

Sobald ein Container läuft, kannst du ihn ansehen, anhalten und darauf zugreifen. Schauen wir uns an, wie das geht.

Aktive Container anzeigen

Um alle aktiven Docker-Container aufzulisten, die auf deinem System laufen, führe den Befehl docker ps oder docker container ls aus. Dieser Befehl zeigt die Container-ID, das Bild, den Befehl, den Port, den Status und andere Details an.

docker ps
# or
docker container ls

Um alle Container einzuschließen - nicht nur die laufenden -, z. B. solche, die beendet oder erstellt, aber nicht gestartet wurden, verwende das Flag -a:

docker ps -a

Um nur den zuletzt erstellten Container anzuzeigen, verwende das Flag -l (last):

docker ps -l

Wenn du alle Container nach Erstellungszeitpunkt sortiert sehen willst, wobei die neuesten zuerst aufgelistet werden, führe aus:

docker ps -a --sort=created

Anhalten und Entfernen von Containern

Um einen bestimmten laufenden Container anzuhalten, verwendest du den Befehl docker stop, gefolgt von der Container-ID oder dem Namen:

docker stop <container_id_or_name>

Um alle laufenden Container zu stoppen, verwende:

docker stop $(docker ps -q)
  • $(docker ps -q) gibt eine Liste mit allen laufenden Container-IDs zurück.

Sobald ein Container gestoppt ist, kannst du ihn wieder entfernen:

docker rm <container_id_or_name>

Um alle gestoppten Container zu entfernen, führst du aus:

docker container prune

Wenn du noch weiter gehen und ungenutzte Container, Volumes, Netzwerke und Images entfernen willst, schau dir den Docker prune Guide an.

Zugriff auf Containerprotokolle und test-shell

  • docker logs - Der Befehl docker logs ruft im Stapelverfahren Logs ab, die zum Zeitpunkt der Ausführung vorhanden sind.
  • docker exec - docker exec ermöglicht es dir, einen neuen Befehl innerhalb eines laufenden Containers auszuführen, ohne ihn anzuhalten oder neu zu starten. Stell dir vor, du öffnest ein neues Terminal innerhalb deines Containers, in dem du herumstöbern, Skripte ausführen, Logs prüfen oder Fehler beheben kannst.
  • docker attach - docker attach verbindet dein Terminal direkt mit dem Hauptprozess eines laufenden Containers. Das bedeutet, dass du die Live-Ausgaben des Containers (Logs, Prompts usw.) sehen und sogar mit ihm interagieren kannst, wenn der Prozess Eingaben annimmt.

Fehlersuche bei allgemeinen Problemen

Einfache Lösungen für häufige Probleme. Hier sind einige häufige Fehler beim Ausführen von Docker-Images und wie du sie angehen kannst. 

Fehler 1: "Fehlerantwort vom Daemon: pull access denied for alpine-python, repository does not exist or may require 'docker login': denied: requested access to the resource is denied."

  • Was das bedeutet: Docker hat versucht, ein Image zu ziehen, in diesem Fall das alpine-python Image von Docker Hub, aber das Image existiert entweder nicht oder ist privat, und du bist nicht authentifiziert.
  • Wie man das behebt:
    • Überprüfe den Image-Namen und das Tag auf Docker Hub.
    • Wenn es sich um ein privates Image handelt, führe docker login aus, um dich zu authentifizieren.
    • Vergewissere dich, dass das Bild vorhanden ist, wenn du es aus einer benutzerdefinierten Registry ziehst.

Fehler 2: "No such image found: <image-name>:<tag>"

  • Was das bedeutet: Du hast versucht, ein Bild lokal auszuführen oder zu markieren, aber das Bild (oder die angegebene Markierung) ist auf deinem System nicht verfügbar.
  • Wie man das behebt:
    • Verwende docker images, umdie verfügbaren Bilder zu prüfen.
    • Ziehe das Bild explizit:
docker pull <image-name>:<tag>

Fehler 3: "manifest for <image>:<tag> not found: manifest unknown: Das genannte Manifest ist der Registratur nicht bekannt."

  • Was das bedeutet: Dieser Fehler tritt wahrscheinlich auf, wenn das angegebene Bild oder Tag nicht existiert.
  • Mögliche Abhilfe: Diese Tipps sollten die meisten Fehler beheben: 
    • Überprüfe das richtige Bild und den richtigen Tag-Namen.
    • Beziehe dich auf die Tags des Images auf Docker Hub oder deiner eigenen Registry.
    • Verwende docker pull :, um eine gültige Version zu erhalten.
    • Wenn du lokal baust, verwende eine korrekte Dockerfile und baue das Image mit:
docker build -t <image>:<tag> .

Portkonflikte und Bindungsausfälle

Portkonflikte entstehen, wenn mehrere Container oder ein Container und eine andere Anwendung versuchen, auf denselben Port zuzugreifen.

  • Wie man das behebt:
    • Verwende einen anderen Host-Port, wenn du deinen Container ausführst:
docker run -p 8081:80 <image>
  • Beende den Dienst, der derzeit den Port benutzt.
  • Identifiziere, was einen Port (z.B. 8080) mit benutzt:
lsof -i :8080

Fazit 

Das Ausführen eines Docker-Images ist einer der wichtigsten Schritte bei der Verwendung von Containern, egal ob du einen einfachen Webserver oder eine komplexe Anwendung bereitstellst. Mit nur wenigen Befehlen wie docker run, docker ps und docker stop bist du jetzt in der Lage, Container zu starten, zu verwalten und Fehler zu beheben.

Wenn du bereit bist, weiter zu gehen, kannst du dein eigenes Image mit einem Dockerfile erstellen, fortgeschrittene docker run Flags erkunden oder lernen, wie du mehrere Container mit Docker Compose verwaltest.

Schau dir diese Kurse an, um deine Docker-Reise fortzusetzen:

Docker und Kubernetes beherrschen

Lerne in einem interaktiven Lernpfad die Leistungsfähigkeit von Docker und Kubernetes kennen, um Anwendungen in modernen Umgebungen zu entwickeln und einzusetzen.
Lernpfad kostenlos starten

FAQs

Kann ich mehrere Container mit demselben Docker-Image ausführen?

Ja, du kannst mehrere Container mit demselben Image betreiben. Jeder Container ist isoliert und kann seine eigenen Einstellungen, Ports und Umgebungsvariablen haben.

Wie kann ich Geheimnisse oder API-Schlüssel sicher an einen Docker-Container weitergeben?

Verwende das -e Flag, um Umgebungsvariablen zu setzen oder verwende eine .env Datei und --env-file, um Geheimnisse zur Laufzeit zu übergeben, ohne sie fest zu codieren.

Wie kann ich ein Docker-Image im Hintergrund ausführen?

Verwende das -d Flag mit docker run, um den Container im losgelösten Modus zu starten, damit das Terminal für andere Befehle verfügbar bleibt.

Was ist der Unterschied zwischen Docker exec und Docker attach?

 docker exec öffnet eine neue Shell-Sitzung innerhalb des Containers, während docker attach sich mit dem Hauptprozess des Containers und dessen Live-Ausgabe verbindet.

Warum erhalte ich "pull access denied", wenn ich ein Image ausführe?

Das bedeutet normalerweise, dass das Bild privat oder falsch geschrieben ist. Überprüfe den Namen, das Tag und stelle sicher, dass du mit docker login in Docker Hub eingeloggt bist.

Wie halte ich Daten in einem Container fest, nachdem er angehalten wurde?

Verwende das -v Flag, um ein Volume zu mounten. Dadurch wird sichergestellt, dass die Daten außerhalb des Containers gespeichert werden und auch nach dem Entfernen des Containers intakt bleiben.

Wie kann ich einen Container für Entwicklungszwecke am besten betreiben?

Verwende die -it Flags für den interaktiven Modus, zusammen mit Volume Mounting und Umgebungsvariablen, um eine lokale Entwicklungsumgebung zu simulieren.

Wie kann ich herausfinden, welche Ports auf meinem Rechner in Konflikt stehen?

Verwende lsof -i :, um herauszufinden, welcher Prozess einen bestimmten Port verwendet, und halte ihn dann entweder an oder verwende einen anderen Host-Port für deinen Container.

Wie kann ich die Logs eines laufenden Docker-Containers einsehen?

Mit dem Befehl docker logs kannst du die Logs der Standardausgabe und der Fehlerströme des Containers abrufen und überprüfen.


Srujana Maddula's photo
Author
Srujana Maddula
LinkedIn

Srujana ist freiberufliche Tech-Autorin und hat einen vierjährigen Abschluss in Informatik. Das Schreiben über verschiedene Themen wie Data Science, Cloud Computing, Entwicklung, Programmierung, Sicherheit und viele andere ist für sie selbstverständlich. Sie liebt klassische Literatur und erkundet gerne neue Reiseziele.

Themen

Lerne mehr über Docker mit diesen Kursen!

Lernpfad

Containerization and Virtualization with Docker and Kubernetes

0 Min.
Learn the power of Docker and Kubernetes, this interactive track will allow you to build and deploy applications in modern environments.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 50 besten AWS-Interview-Fragen und Antworten für 2025

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interviewfragen, zusammen mit Fragen, die auf realen Situationen basieren.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Mehr anzeigenMehr anzeigen