Docker Grundlagen für Anfänger: So meistern Sie die Basis

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Dieses umfassende Docker-Tutorial bietet Entwicklern und IT-Experten einen grundlegenden Einblick in die Containertechnologie. Durch die Erkundung der Kernkonzepte von Docker, der Installationsverfahren und praktischer Befehlszeilentechniken erwerben die Lernenden praktische Fähigkeiten zum Packen, Bereitstellen und Verwalten von Anwendungen in verschiedenen Computing-Umgebungen.

Docker-Grundlagen

Einführung in Docker und Containertechnologie

Docker ist eine leistungsstarke Plattform für die Containerisierung, die es Entwicklern ermöglicht, Anwendungen konsistent in verschiedenen Computing-Umgebungen zu verpacken, zu verteilen und auszuführen. Als wichtiges Werkzeug in der modernen Softwarebereitstellung vereinfacht Docker den Prozess der Erstellung, Verwaltung und Skalierung von Anwendungen.

Kernkonzepte von Docker

graph TD A[Docker Image] --> B[Docker Container] A --> C[Dockerfile] B --> D[Container Runtime]

Docker führt mehrere grundlegende Konzepte ein:

Konzept Beschreibung
Docker Image Nur-Leseversion, die Anwendungscode und Abhängigkeiten enthält
Docker Container Ausführbare Instanz eines Images
Dockerfile Textdatei, die Anweisungen zur Erstellung des Images enthält
Docker Registry Repository zum Speichern und Teilen von Images

Installation unter Ubuntu 22.04

## Paketindex aktualisieren
sudo apt update

## Abhängigkeiten installieren
sudo apt install apt-transport-https ca-certificates curl software-properties-common

## Offiziellen GPG-Schlüssel von Docker hinzufügen
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## Stable-Repository einrichten
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## Docker Engine installieren
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

Grundlegende Docker-Befehle

## Docker-Version überprüfen

## Image von Docker Hub ziehen

## Verfügbare Images auflisten

## Container starten

## Laufende Container auflisten

## Container stoppen

Praktisches Beispiel: Ausführung einer einfachen Webanwendung

## Nginx-Image ziehen
docker pull nginx:latest

## Nginx-Container starten
docker run -d -p 8080:80 nginx:latest

## Container-Status überprüfen
docker ps

Dieses Beispiel zeigt, wie man mit Docker schnell einen Webserver bereitstellt und verdeutlicht die Einfachheit und Effizienz der Softwarebereitstellung.

Containerverwaltung

Container-Lebenszyklusoperationen

Docker bietet umfassende Werkzeuge zur Verwaltung des Container-Lebenszyklus, die Entwicklern ermöglichen, Container effizient zu steuern und zu manipulieren.

graph LR A[Erstellt] --> B[Läuft] B --> C[Angehalten] C --> D[Entfernt] D --> E[Neu gestartet]

Containerverwaltungsbefehle

Befehl Funktion Beispiel
docker create Container erstellen docker create nginx
docker start Angehaltenen Container starten docker start <container_id>
docker stop Laufenden Container stoppen docker stop <container_id>
docker restart Container neu starten docker restart <container_id>
docker rm Container entfernen docker rm <container_id>

Erweiterte Containerkontrolle

## Container mit benutzerdefiniertem Namen starten
docker run --name web-server -d nginx:latest

## Containerdetails anzeigen
docker inspect web-server

## Container-Logs anzeigen
docker logs web-server

## Befehle im laufenden Container ausführen
docker exec -it web-server /bin/bash

Containerressourcenverwaltung

## Container-CPU und -Speicher begrenzen
docker run -d --cpus=0.5 --memory=512m nginx:latest

## Laufende Container mit Ressourcenverbrauch auflisten
docker stats

Imageverwaltungsoperationen

## Lokale Images auflisten
docker images

## Bestimmtes Image entfernen
docker rmi nginx:latest

## Nicht verwendete Images entfernen
docker image prune

## Bestimmte Imageversion ziehen
docker pull ubuntu:20.04

Containernetzwerkverwaltung

## Benutzerdefiniertes Netzwerk erstellen
docker network create mynetwork

## Container in einem bestimmten Netzwerk ausführen
docker run --network=mynetwork nginx:latest

Erweiterte Docker-Techniken

Mehrstufige Builds

Mehrstufige Builds optimieren die Komplexität von Dockerfiles und reduzieren die Größe des endgültigen Images.

## Build-Phase
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

## Produktions-Phase
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/
CMD ["myapp"]

Docker Compose-Workflow

graph LR A[Docker Compose-Datei] --> B[Dienstdefinition] B --> C[Container-Orchestrierung] C --> D[Vernetzte Anwendungen]

Beispiel für die Compose-Konfiguration

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  database:
    image: postgres:12
    environment:
      POSTGRES_PASSWORD: secret

Techniken zur Leistungssteigerung

Technik Beschreibung
Layer-Caching Minimierung von Layer-Neukompilierungen
.dockerignore Ausschließen unnötiger Dateien
Alpine-Images Verwendung minimaler Basis-Images

Erweiterte Netzwerkfunktionen

## Benutzerdefiniertes Bridge-Netzwerk erstellen
docker network create --driver bridge isolated_network

## Container mit spezifischem Netzwerk verbinden
docker run --network=isolated_network nginx:latest

Strategien zur Volumenverwaltung

## Benannte Volumes erstellen
docker volume create app-data

## Volumen an Container mounten
docker run -v app-data:/var/lib/data nginx:latest

Containerüberwachung

## Echtzeit-Metriken für Container

## Container-Logs anzeigen

Sicherheitsrichtlinien

## Container als Nicht-Root-Benutzer ausführen
docker run --user 1000 nginx:latest

## Schreibgeschütztes Dateisystem festlegen
docker run --read-only nginx:latest

Zusammenfassung

Docker revolutioniert die Softwarebereitstellung, indem es eine konsistente und effiziente Plattform für die Containerisierung bietet. In diesem Tutorial haben die Leser grundlegende Konzepte wie Docker-Images, -Container und Dockerfile-Grundlagen kennengelernt, sowie praktische Fähigkeiten zur Installation von Docker, zur Verwaltung von Containern und zum Ausführen von Webanwendungen. Diese Fähigkeiten bilden eine wichtige Grundlage für die moderne Softwareentwicklung und die Infrastrukturverwaltung.