Docker-Image-Grundlagen
Docker-Images verstehen
Docker-Images sind grundlegende Bausteine der Containertechnologie und dienen als schreibgeschützte Vorlagen zur Erstellung von Containern. Ein Image enthält alles, was zum Ausführen einer Anwendung benötigt wird: Code, Laufzeitumgebung, Bibliotheken, Umgebungsvariablen und Konfigurationsdateien.
graph LR
A[Dockerfile] --> B[Docker Image]
B --> C[Docker Container]
Aufbau und Komponenten von Images
Docker-Images bestehen aus mehreren Schichten, die jeweils eine Reihe von Änderungen am Dateisystem darstellen. Diese Schichten sind effizient gestapelt, um den Speicherplatzbedarf zu minimieren und die Leistung zu verbessern.
Schichttyp |
Beschreibung |
Beispiel |
Basisschicht |
Grundlegendes Betriebssystem |
Ubuntu 22.04 |
Anwendungsschicht |
Software und Abhängigkeiten |
Python 3.9 |
Konfigurationsschicht |
Laufzeiteinstellungen |
Umgebungsvariablen |
Erstellen von Docker-Images mit Dockerfile
Hier ist ein praktisches Beispiel für die Erstellung eines Docker-Images für eine Python-Webanwendung:
## Erstellen Sie ein neues Verzeichnis für das Projekt
mkdir python-webapp
cd python-webapp
## Erstellen Sie Dockerfile
touch Dockerfile
## Bearbeiten Sie Dockerfile
cat > Dockerfile << EOL
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y python3 python3-pip
WORKDIR /app
COPY . /app
RUN pip3 install flask
EXPOSE 5000
CMD ["python3", "app.py"]
EOL
## Erstellen Sie eine einfache Flask-Anwendung
cat > app.py << EOL
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Docker Image Beispiel"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
EOL
## Erstellen Sie das Docker-Image
docker build -t python-webapp:v1 .
## Führen Sie den Container aus dem Image aus
docker run -p 5000:5000 python-webapp:v1
Wichtige Dockerfile-Anweisungen
FROM
: Gibt das Basis-Image an
RUN
: Führt Befehle während der Imageerstellung aus
COPY
: Überträgt Dateien vom Host in das Image
WORKDIR
: Legt das Arbeitsverzeichnis fest
EXPOSE
: Deklariert Netzwerkports
CMD
: Definiert den Standard-Startbefehl des Containers
Best Practices für die Imageverwaltung
Eine effiziente Imageverwaltung beinhaltet das Verständnis von Schicht-Caching, die Minimierung der Imagegröße und die Verwendung von mehrstufigen Builds zur Optimierung von Container-Workflows.