AI Engineering Tools

Programmierung

Docker

Ein Suchleitfaden zu Docker Images, Containern, Dockerfile, Compose, Ports, Volumes, Logs und häufiger Fehlersuche.

33 Treffer

Grundbegriffe

Docker

Docker

docker --version

Bedeutung

Ein Tool zum Verpacken und Ausführen von Anwendungen in isolierten Containern.

Einsatz

Verwenden Sie dies, wenn Sie möchten, dass die Anwendung mit den gleichen OS-Paketen, Laufzeitumgebung und Abhängigkeiten auf verschiedenen Maschinen ausgeführt wird.

Beispiel

docker --version

Anfragebeispiel

Erläutern Sie, ob dieses Projekt mit Docker ausgeführt werden kann.

Grundbegriffe

Docker daemon

Docker daemon

Verbindung zum Docker-Daemon konnte nicht hergestellt werden.

Bedeutung

Der Hintergrunddienst, der Images erstellt und Container ausführt.

Einsatz

Wenn Docker-Befehle keine Verbindung herstellen können, sind möglicherweise Docker Desktop oder der Docker-Dienst nicht ausgeführt.

Beispiel

Verbindung zum Docker-Daemon konnte nicht hergestellt werden.

Anfragebeispiel

Überprüfen, warum Docker-Befehle keine Verbindung zum Daemon herstellen können.

Grundbegriffe

Bild

Image

node:20-alpine

Bedeutung

Eine wiederverwendbare Vorlage, die zur Erstellung von Containern verwendet wird.

Einsatz

Bilder definieren, welches Betriebssystem OS, welche Laufzeitumgebung, welche Bibliotheken und welche App-Dateien ein Container startet.

Beispiel

node:20-alpine

Anfragebeispiel

Bitte teilen Sie mir mit, welches Basis-Image diese Dockerfile-Datei verwendet.

Grundbegriffe

Container

Container

docker ps

Bedeutung

Eine laufende oder gestoppte Instanz, die aus einem Image erstellt wurde.

Einsatz

Verwenden Sie Container, um die App, die Datenbank, den Cache oder den Worker in isolierten Umgebungen auszuführen.

Beispiel

docker ps

Anfragebeispiel

Listen Sie die laufenden Container auf und erklären Sie, was jeder von ihnen tut.

Grundbegriffe

Registry

Registry

docker pull postgres:16

Bedeutung

Ein Server, auf dem Docker-Images gespeichert und heruntergeladen werden.

Einsatz

Docker Hub and private registries are used to share base images or deployable app images.

Beispiel

docker pull postgres:16

Anfragebeispiel

Erläutern Sie, von wo aus dieses Bild heruntergeladen wird.

Dockerfile

Dockerfile

Dockerfile

Dockerfile

Bedeutung

Eine Datei, die definiert, wie ein Docker-Image erstellt wird.

Einsatz

Verwenden Sie es, um Abhängigkeiten zu installieren, Anwendungsdateien zu kopieren und den Befehl zu definieren, der die Anwendung startet.

Beispiel

Dockerfile

Anfragebeispiel

Lesen Sie diese Dockerfile und fassen Sie die Build-Schritte zusammen.

Dockerfile

FROM

FROM

FROM node:20-alpine

Bedeutung

Der Dockerfile-Befehl, der das Basis-Image auswählt.

Einsatz

Es bestimmt die Start-OS-Schicht und oft auch die Laufzeitversion.

Vorsicht

Das Ändern des Basisbildes kann sich auf verfügbare Befehle, Sicherheitsupdates und die Bildgröße auswirken.

Beispiel

FROM node:20-alpine

Anfragebeispiel

Erklären Sie, was dieses FROM-Image enthält.

Dockerfile

WORKDIR

WORKDIR

WORKDIR /app

Bedeutung

Legt das Verzeichnis innerhalb des Images fest, in dem die folgenden Befehle ausgeführt werden.

Einsatz

Verwenden Sie es so, dass die COPY-, RUN- und CMD-Befehle von einem vorhersehbaren Anwendungsordner ausgeführt werden.

Beispiel

WORKDIR /app

Anfragebeispiel

Erläutern Sie, welcher Ordner in diesem Dockerfile als Anwendungsverzeichnis verwendet wird.

Dockerfile

COPY

COPY

COPY package.json package-lock.json ./

Bedeutung

Kopiert Dateien aus dem Build-Kontext in das Image.

Einsatz

Verwenden Sie es, um Abhängigkeitsdateien, Quellcode und statische Assets zum Image hinzuzufügen.

Beispiel

COPY package.json package-lock.json ./

Anfragebeispiel

Bitte teilen Sie mir mit, welche Dateien dieser COPY-Schritt dem Image hinzufügt.

Dockerfile

RUN

RUN

RUN npm ci

Bedeutung

Führt einen Befehl während des Erstellungsprozesses des Images aus.

Einsatz

Verwenden Sie es, um Betriebssystem-Pakete OS zu installieren, Abhängigkeiten zu installieren oder Anwendungsdateien zu erstellen.

Vorsicht

RUN wird während des Image-Build-Prozesses ausgeführt, nicht wenn der Container startet.

Beispiel

RUN npm ci

Anfragebeispiel

Trennen Sie Build-Zeit-Befehle für Dockerfiles von Startbefehlen für Container.

Dockerfile

CMD

CMD

CMD ["npm", "run", "start"]

Bedeutung

Definiert den Standardbefehl, der ausgeführt wird, wenn der Container startet.

Einsatz

Verwenden Sie es, um den Webserver, den API-Server, den Worker oder das Skript zu starten.

Beispiel

CMD ["npm", "run", "start"]

Anfragebeispiel

Sagen Sie mir, mit welchem Befehl dieser Container gestartet wird.

Dockerfile

EXPOSE

EXPOSE

EXPOSE 3000

Bedeutung

Dokumentieren Sie, auf welchem Port die containerisierte Anwendung voraussichtlich lauschen wird.

Einsatz

Verwenden Sie es als einen Hinweis und veröffentlichen Sie dann den Port mit "docker run -p" oder Compose-Ports.

Vorsicht

EXPOSE allein macht die App nicht von Ihrem Browser aus erreichbar.

Beispiel

EXPOSE 3000

Anfragebeispiel

Erläutern Sie, ob dieser freigegebene Port tatsächlich veröffentlicht ist.

Dockerfile

.dockerignore

.dockerignore

node_modules

Bedeutung

Eine Datei, die Pfade aus dem Docker-Build-Kontext ausschließt.

Einsatz

Verwenden Sie es, um lokale Abhängigkeiten, Build-Ausgaben, Geheimnisse und temporäre Dateien außerhalb des Image-Builds zu halten.

Beispiel

node_modules

Anfragebeispiel

Überprüfen Sie, ob diese .dockerignore unsichere oder unnötige Dateien ausschließt.

Dockerfile

Kontext erstellen

Build context

docker build -t my-app .

Bedeutung

Der Ordner, der während des Image-Builds an Docker gesendet wird.

Einsatz

Der abschließende Punkt in `docker build` bedeutet normalerweise, dass das aktuelle Verzeichnis der Build-Kontext ist.

Vorsicht

Ein großer Kontext verlangsamt den Build-Prozess und kann versehentlich private Dateien enthalten.

Beispiel

docker build -t my-app .

Anfragebeispiel

Erklären Sie, welche Dateien für diesen Docker-Build verfügbar sind.

Docker Compose

Docker Compose

Docker Compose

docker compose up

Bedeutung

Ein Tool zum Ausführen mehrerer Docker-Dienste aus einer YAML-Datei.

Einsatz

Verwenden Sie es für App-Plus-Datenbank-, Cache-, Worker- oder lokale Entwicklungsumgebungen.

Beispiel

docker compose up

Anfragebeispiel

Erklären Sie, welche Dienste diese Compose-Datei startet.

Docker Compose

Dienste

services

services: web: db:

Bedeutung

Benannte App-Teile, die in einer Compose-Datei definiert sind.

Einsatz

Ein Webdienst könnte die App ausführen, während ein Datenbankdienst PostgreSQL ausführt.

Beispiel

services: web: db:

Anfragebeispiel

Listen Sie die Dienste in dieser Compose-Datei auf und was jeder von ihnen tut.

Docker Compose

docker compose up

docker compose up

docker compose up -d

Bedeutung

Startet die in einer Compose-Datei definierten Dienste.

Einsatz

Verwenden Sie -d, wenn Sie möchten, dass Dienste im Hintergrund ausgeführt werden.

Beispiel

docker compose up -d

Anfragebeispiel

Starten Sie die Compose-Dienste und zeigen Sie an, welche davon ausgeführt werden.

Docker Compose

docker compose down

docker compose down

docker compose down

Bedeutung

Stoppt und entfernt Container, die von Compose erstellt wurden.

Einsatz

Verwenden Sie es, wenn Sie mit einem lokalen Entwicklungsumfeld fertig sind.

Vorsicht

Benannte Volumes bleiben normalerweise erhalten, es sei denn, Sie entfernen die Volumes explizit.

Beispiel

docker compose down

Anfragebeispiel

Stoppen Sie diesen Compose-Stack, ohne persistente Daten zu löschen.

Befehle

docker build

docker build

docker build -t my-app .

Bedeutung

Erstellt ein Docker-Image aus einer Dockerfile und einem Kontext.

Einsatz

Verwenden Sie es nach dem Schreiben einer Dockerfile oder dem Ändern von App-Abhängigkeiten.

Beispiel

docker build -t my-app .

Anfragebeispiel

Erstellen Sie dieses Docker-Image und fassen Sie alle Build-Fehler zusammen.

Befehle

docker run

docker run

docker run --name my-app -p 3000:3000 my-app

Bedeutung

Erstellt und startet einen Container aus einem Image.

Einsatz

Verwenden Sie es, wenn Sie einen Container direkt ohne Compose starten möchten.

Beispiel

docker run --name my-app -p 3000:3000 my-app

Anfragebeispiel

Führen Sie dieses Bild aus und erklären Sie die Browser-URL.

Befehle

docker ps

docker ps

docker ps

Bedeutung

Listet laufende Container auf.

Einsatz

Verwenden Sie "docker ps -a", wenn Sie auch gestoppte Container anzeigen möchten.

Beispiel

docker ps

Anfragebeispiel

Zeigen Sie laufende Container und ihre veröffentlichten Ports an.

Befehle

docker stop

docker stop

docker stop my-app

Bedeutung

Stoppt einen laufenden Container.

Einsatz

Verwenden Sie es vor dem Entfernen eines Containers oder dem Freigeben eines Ports.

Beispiel

docker stop my-app

Anfragebeispiel

Stoppen Sie den Container unter Verwendung von Port 3000.

Befehle

docker logs

docker logs

docker logs my-app

Bedeutung

Gibt Protokolle von einem Container aus.

Einsatz

Verwenden Sie es, wenn ein Container beendet wird, abstürzt oder die Anwendung nicht reagiert.

Beispiel

docker logs my-app

Anfragebeispiel

Lesen Sie die Protokolle dieses Containers und finden Sie den ersten Fehler.

Befehle

docker exec

docker exec

docker exec -it my-app sh

Bedeutung

Führt einen Befehl innerhalb eines bereits laufenden Containers aus.

Einsatz

Verwenden Sie es, um Dateien, Umgebungsvariablen oder installierte Tools innerhalb eines Containers zu untersuchen.

Vorsicht

Änderungen, die manuell innerhalb eines Containers vorgenommen wurden, können verloren gehen, wenn der Container neu erstellt wird.

Beispiel

docker exec -it my-app sh

Anfragebeispiel

Eine Shell in diesem Container öffnen und die Umgebungsvariablen überprüfen.

Ports und Netzwerk

Ports

ports

3000:3000

Bedeutung

Ordnet einen Port auf Ihrem Computer einem Port innerhalb des Containers zu.

Einsatz

Verwenden Sie es so, dass ein Browser auf eine Webanwendung zugreifen kann, die innerhalb eines Containers ausgeführt wird.

Vorsicht

Der linke Teil ist der Host-Port, und der rechte Teil ist der Container-Port.

Beispiel

3000:3000

Anfragebeispiel

Erläutern Sie, welche URL ich für diese Port-Einstellungen öffnen sollte.

Ports und Netzwerk

localhost in Docker

localhost in Docker

host.docker.internal

Bedeutung

localhost kann sich auf den Container selbst beziehen, nicht auf Ihren Host-Rechner, wenn Code innerhalb von Docker ausgeführt wird.

Einsatz

Verwenden Sie Servicenamen in Compose-Netzwerken oder host.docker.internal, wenn ein Container den Host-Computer erreichen muss.

Beispiel

host.docker.internal

Anfragebeispiel

Erläutern Sie, warum localhost nicht auf die Datenbank von diesem Container zugreifen kann.

Dateien und Daten

Lautstärke

Volume

db-data:/var/lib/postgresql/data

Bedeutung

Docker-managed storage that can persist data outside a container's lifecycle.

Einsatz

Verwenden Sie Volumes für Datenbankdaten oder andere Dateien, die während der Wiederherstellung des Containers erhalten bleiben sollen.

Vorsicht

Das Entfernen von Volumes kann zum Löschen persistenter Daten führen.

Beispiel

db-data:/var/lib/postgresql/data

Anfragebeispiel

Bitte teilen Sie mir mit, welche Compose-Volumes persistente Daten speichern.

Dateien und Daten

Bind-Mount

Bind mount

./src:/app/src

Bedeutung

Verbindet einen Host-Ordner direkt mit einem Container-Pfad.

Einsatz

Verwenden Sie es während der Entwicklung, sodass Codeänderungen auf dem Host im Container sichtbar sind.

Vorsicht

Eine Bind-Mount-Operation kann Dateien ausblenden, die in das Image am selben Pfad kopiert wurden.

Beispiel

./src:/app/src

Anfragebeispiel

Erläutern Sie, ob dieses Volume ein benanntes Volume oder eine Bind-Mount-Option ist.

Dateien und Daten

Umgebung

environment

DATABASE_URL=postgres://db:5432/app

Bedeutung

Konfigurationswerte, die an einen Container übergeben werden.

Einsatz

Verwenden Sie Umgebungsvariablen für Datenbank-URLs, Ports, Modi, Feature-Flags und Laufzeit-Einstellungen.

Vorsicht

Geben Sie keine Geheimnisse in öffentliche Bilder ein oder speichern Sie keine echten Geheimniswerte.

Beispiel

DATABASE_URL=postgres://db:5432/app

Anfragebeispiel

Überprüfen, welche Umgebungsvariablen dieser Container benötigt.

Fehlersuche

Port ist bereits belegt

port is already allocated

Bindung an 0.0.0.0:3000 fehlgeschlagen: Der Port ist bereits belegt.

Bedeutung

Docker cannot publish a host port because another process or container is already using it.

Einsatz

Den Prozess oder Container finden, der den Port verwendet, und ihn dann stoppen oder einen anderen Host-Port auswählen.

Beispiel

Bindung an 0.0.0.0:3000 fehlgeschlagen: Der Port ist bereits belegt.

Anfragebeispiel

Finden, welcher Docker-Port verwendet wird, und eine sichere Lösung vorschlagen.

Fehlersuche

Der Containernamen wird bereits verwendet.

container name is already in use

Konflikt. Der Containernamen "/my-app" wird bereits verwendet.

Bedeutung

Ein Container mit demselben Namen existiert bereits.

Einsatz

Listen Sie vorhandene Container auf und verwenden Sie dann den alten Container wieder, entfernen Sie ihn oder benennen Sie ihn um.

Beispiel

Konflikt. Der Containernamen "/my-app" wird bereits verwendet.

Anfragebeispiel

Beheben Sie diesen Konflikt mit dem Container-Namen, ohne Daten unerwartet zu löschen.

Fehlersuche

Cache erstellen

Build cache

docker build --no-cache -t my-app .

Bedeutung

Docker can reuse previous build layers to make builds faster.

Einsatz

Wenn eine Änderung ignoriert wird, untersuchen Sie die Reihenfolge im Dockerfile oder führen Sie einen Neustart ohne Cache als Diagnose durch.

Vorsicht

Die Option `--no-cache` kann den Build-Prozess verlangsamen, daher sollte sie nur bewusst verwendet werden.

Beispiel

docker build --no-cache -t my-app .

Anfragebeispiel

Erläutern Sie, ob der Docker-Build-Cache möglicherweise meine Änderung verbirgt.

Sicherheit

docker system prune

docker system prune

docker system prune

Bedeutung

Entfernt ungenutzte Docker-Daten wie gestoppte Container, ungenutzte Netzwerke und hängende Images.

Einsatz

Verwenden Sie es, wenn Docker zu viel Festplattenspeicher verwendet und Sie verstehen, was entfernt wird.

Vorsicht

Mit zusätzlichen Flags kann "prune" Bilder oder Volumes löschen, die Sie möglicherweise noch benötigen.

Beispiel

docker system prune

Anfragebeispiel

Bevor Sie Docker bereinigen, zeigen Sie, was entfernt würde und welche Daten sicher sind.