Docker-Image-Grundlagen
Was ist ein Docker-Image?
Ein Docker-Image ist ein leichtgewichtiges, eigenständiges und ausführbares Paket, das alles enthält, was zum Ausführen einer Software benötigt wird, einschließlich des Codes, der Laufzeitumgebung, der Systemwerkzeuge, der Bibliotheken und der Einstellungen. Es dient als Blaupause für die Erstellung von Docker-Containern.
Wichtige Eigenschaften von Docker-Images
Unveränderlichkeit (Immutability)
Docker-Images sind unveränderlich, was bedeutet, dass sie nach der Erstellung nicht mehr geändert werden können. Jede Modifikation erfordert die Erstellung eines neuen Images.
graph LR
A[Dockerfile] --> B[Build Image]
B --> C[Create Container]
C --> D[Run Application]
Schichtarchitektur (Layered Architecture)
Docker-Images verwenden ein schichtbasiertes Dateisystem, das eine effiziente Speicherung und Übertragung der Bilddaten ermöglicht.
Schichttyp |
Beschreibung |
Beispiel |
Basis-Schicht |
Grundlegendes Betriebssystem |
Ubuntu 22.04 |
Abhängigkeits-Schicht |
Systembibliotheken und -werkzeuge |
Python, Node.js |
Anwendungs-Schicht |
Anwendungs-Code und -konfiguration |
Ihre benutzerdefinierte Anwendung |
Methoden zur Image-Erstellung
1. Dockerfile
Die gebräuchlichste Methode zur Erstellung von Docker-Images ist die Verwendung einer Dockerfile.
## Example Dockerfile for a Python application
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y python3 python3-pip
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
CMD ["python3", "app.py"]
2. Docker Commit
Sie können ein Image aus einem laufenden Container mit docker commit
erstellen.
## Create an image from a container
docker commit container_name new_image_name:tag
Namenskonvention für Images
Docker-Images folgen einem bestimmten Namensformat:
repository_name/image_name:tag
- Beispiel:
labex/python-app:latest
Befehle zur Image-Verwaltung
## List local images
docker images
## Pull an image from Docker Hub
docker pull ubuntu:22.04
## Remove an image
docker rmi image_name:tag
Best Practices
- Halten Sie die Images klein und fokussiert.
- Verwenden Sie offizielle Basis-Images.
- Minimieren Sie die Anzahl der Schichten.
- Verwenden Sie mehrstufige Builds (multi-stage builds) für komplexe Anwendungen.
Indem Sie diese Grundlagen verstehen, sind Sie gut gerüstet, um in Ihrem Entwicklungsworkflow effektiv mit Docker-Images zu arbeiten.