CodeGym /Kurse /Docker SELF /Auswahl eines Basis-Images

Auswahl eines Basis-Images

Docker SELF
Level 14 , Lektion 1
Verfügbar

7.1 Basis-Image

Basis-Images spielen eine wichtige Rolle bei der Erstellung von Docker-Images, da sie den Ausgangspunkt für den Build liefern und die Umgebung definieren, in der deine Anwendung ausgeführt wird. Die richtige Auswahl und Konfiguration von Basis-Images kann die Leistung, die Größe und die Sicherheit des End-Images erheblich beeinflussen. In dieser Vorlesung schauen wir uns an, wie man Basis-Images für Docker auswählt und konfiguriert.

Ein Basis-Image (oder ein Start-Image) — ist ein Docker-Image, das als Ausgangsschicht für die Erstellung eines neuen Docker-Images verwendet wird. Es kann ein minimales Betriebssystem, notwendige Tools und Bibliotheken enthalten oder sogar leer sein (scratch-Image). Die Auswahl des Basis-Images bestimmt, welche Ressourcen und Pakete standardmäßig in deinem Container verfügbar sind.

Auswahl eines Basis-Images

Bei der Auswahl eines Basis-Images solltest du mehrere Faktoren berücksichtigen:

  1. Image-Größe: Kleinere Images werden schneller geladen, benötigen weniger Speicherplatz und können die Bereitstellung von Anwendungen beschleunigen.
  2. Support und Updates: Die Verwendung offizieller Images mit regelmäßigen Updates gewährleistet ein höheres Maß an Sicherheit, die Behebung von Schwachstellen und die Stabilität.
  3. Kompatibilität: Das Basis-Image sollte die erforderlichen Bibliotheken und Abhängigkeiten enthalten, die deine Anwendung für einen einwandfreien Betrieb benötigt.

Beliebte Basis-Images

1. Alpine Linux

Ein sehr leichtgewichtiges Image, das etwa 5 MB groß ist. Es ist ideal für Anwendungen, die ein minimales Betriebssystem benötigen. Entwickler sollten jedoch beachten, dass viele Standardbibliotheken in Alpine nicht enthalten sind, sodass für einige Anwendungen zusätzliche Konfigurationen erforderlich sein können.

dockerfile

FROM alpine:3.12

2. Debian/Ubuntu

Vollständigere Images, die ein breites Spektrum an Tools und Bibliotheken enthalten. Sie eignen sich für komplexere Anwendungen, die eine umfassendere Umgebung oder bekannte Standard-Linux-Bibliotheken benötigen.

dockerfile

FROM ubuntu:20.04 

3. Offizielle Language-Images

Offizielle Images für Programmiersprachen wie Node.js, Python, Ruby und andere. Diese Images enthalten bereits die erforderliche Entwicklungs- und Ausführungsumgebung für Anwendungen in der jeweiligen Sprache, was die Konfiguration erleichtert.

dockerfile

FROM node:14 

7.2 Konfiguration des Basis-Image

Nachdem du ein Basis-Image ausgewählt hast, musst du es gemäß den Anforderungen deiner Anwendung anpassen. Die Konfiguration umfasst die Installation der benötigten Pakete, das Kopieren der Anwendungsdateien und das Einrichten der Umgebung.

Beispiel: Konfiguration eines Basis-Image basierend auf Alpine Linux

dockerfile


# Wir verwenden ein Basis-Image von Alpine Linux
FROM alpine:3.12
        
# Installation der benötigten Pakete
RUN apk add --no-cache python3 py3-pip
        
# Festlegen des Arbeitsverzeichnisses
WORKDIR /app
        
# Kopieren der Anwendungsdateien
COPY . .
        
# Installation der Abhängigkeiten
RUN pip3 install -r requirements.txt
        
# Festlegen des Befehls zum Starten der Anwendung
CMD ["python3", "app.py"]

In diesem Beispiel wird das Basis-Image alpine:3.12 verwendet, erforderliche Pakete werden installiert, Anwendungsdateien kopiert und Abhängigkeiten installiert. Der finale Befehl alpine:3.12 gibt an, wie die Anwendung gestartet wird.

Beispiel: Konfiguration eines Basis-Image basierend auf Ubuntu

dockerfile


# Wir verwenden ein Basis-Image von Ubuntu
FROM ubuntu:20.04
        
# Aktualisieren und Installation der notwendigen Pakete
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
        
# Festlegen des Arbeitsverzeichnisses
WORKDIR /app
        
# Kopieren der Anwendungsdateien
COPY . .
        
# Installation der Abhängigkeiten
RUN pip3 install -r requirements.txt
        
# Festlegen des Befehls zum Starten der Anwendung
CMD ["python3", "app.py"] 

Dieses Dockerfile verwendet das Image ubuntu:20.04, installiert Python und pip. Danach kopiert es die Anwendungsdateien und installiert die Abhängigkeiten, ähnlich wie im vorherigen Beispiel.

7.3 Best Practices

Wie man Basisimages richtig auswählt und konfiguriert:

1. Wählt minimale Images: Startet mit den kleinsten Images, die die Anforderungen eurer Anwendung erfüllen. Das reduziert die Größe des endgültigen Images und erhöht die Sicherheit.

2. Installiert keine unnötigen Pakete: Fügt nur die Abhängigkeiten hinzu, die eure Anwendung wirklich braucht. Das verringert die Image-Größe und reduziert potenzielle Schwachstellen.

3. Löscht Cache von Paket-Managern: Entfernt nach der Installation von Paketen temporäre Dateien und den Cache, um das Image leichter zu machen.

dockerfile


RUN apt-get update && apt-get install -y python3 python3-pip && rm -rf /var/lib/apt/lists/*

4. Verwendet Multi-Stage-Builds: Diese ermöglichen es, die Build- und Laufzeit-Phasen zu trennen, was dabei hilft, schlankere und sicherere Images zu erstellen.

Terminal

        
# Build-Phase
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
        
# Finale Phase
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

5. Aktualisiert Images regelmäßig: Nutzt aktuelle Versionen von Basisimages, um die neuesten Sicherheits-Patches und Updates einzuschließen.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION