Docker Container Einrichtung auf Ubuntu

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 vermittelt Entwicklern und IT-Experten die notwendigen Kenntnisse zur Containerisierungstechnologie. Durch die Erkundung der Kernkonzepte, der Architektur und der praktischen Implementierungsstrategien von Docker erhalten die Lernenden praktische Kenntnisse, um die Anwendungsbereitstellung zu optimieren und die Softwareentwicklungsworkflows zu verbessern.

Docker-Grundlagen

Einführung in Docker

Docker ist eine leistungsstarke Plattform für die Containerisierung, die die Software-Verpackung und -Bereitstellung revolutioniert. Als führende Containertechnologie ermöglicht Docker Entwicklern die konsistente Erstellung, Bereitstellung und Ausführung von Anwendungen in verschiedenen Computing-Umgebungen.

Kernkonzepte der Containerisierung

Die Containerisierung ermöglicht es, Anwendungen mit allen Abhängigkeiten zu bündeln, um eine einheitliche Leistung auf verschiedenen Systemen sicherzustellen. Im Gegensatz zu traditionellen virtuellen Maschinen teilen Container den Kernel des Host-Systems, was sie leicht und effizient macht.

graph TD A[Anwendungscode] --> B[Docker-Container] B --> C[Konsistente Bereitstellung] B --> D[Isolierte Umgebung]

Docker-Architektur

Komponente Beschreibung Funktion
Docker-Daemon Hintergrunddienst Verwaltet Docker-Objekte
Docker-Client Befehlszeilenschnittstelle Sendet Befehle an den Docker-Daemon
Docker-Registry Speicherort für Images Speichert und verteilt Docker-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

## Docker-Repository einrichten
echo "deb [arch=$(dpkg --print-architecture) 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
docker --version

## Image von Docker Hub ziehen
docker pull ubuntu:latest

## Verfügbare Images auflisten
docker images

## Container starten
docker run -it ubuntu:latest /bin/bash

Hauptvorteile von Docker

Die Containerisierung mit Docker bietet erhebliche Vorteile:

  • Konsistente Umgebung zwischen Entwicklung und Produktion
  • Schnelle Anwendungsbereitstellung
  • Effiziente Ressourcennutzung
  • Vereinfachte Abhängigkeitsverwaltung
  • Verbesserte Skalierbarkeit und Portabilität

Container-Lebenszyklus

Containerzustände und Verwaltung

Docker-Container durchlaufen während ihres Lebenszyklus mehrere Zustände, von der Erstellung bis zur Beendigung. Das Verständnis dieser Zustände ist entscheidend für eine effektive Containerverwaltung und -bereitstellung.

stateDiagram-v2 [*] --> Created Created --> Running Running --> Paused Paused --> Running Running --> Stopped Stopped --> Removed Removed --> [*]

Containererstellung und Initialisierung

## Basis-Image ziehen
docker pull ubuntu:latest

## Container erstellen und starten
docker run -d --name mycontainer ubuntu:latest

## Container mit interaktivem Terminal starten
docker run -it ubuntu:latest /bin/bash

Containerverwaltungsbefehle

Befehl Funktion Beispiel
docker create Neuen Container erstellen docker create ubuntu:latest
docker start Einen gestoppten Container starten docker start mycontainer
docker stop Einen laufenden Container stoppen docker stop mycontainer
docker restart Einen Container neu starten docker restart mycontainer
docker pause Containerprozesse pausieren docker pause mycontainer
docker unpause Containerprozesse fortsetzen docker unpause mycontainer

Containerbereitstellungsstrategien

## Mehrere Containerinstanzen bereitstellen
docker run -d --name web1 nginx
docker run -d --name web2 nginx
docker run -d --name web3 nginx

## Laufende Container prüfen
docker ps

Container Skalierung mit Docker Compose

version: "3"
services:
  webapp:
    image: nginx
    deploy:
      replicas: 3

Ressourcenverwaltung

## Containerressourcen begrenzen
docker run -d --cpus=0.5 --memory=512m nginx

Containerentfernung

## Gestoppten Container entfernen
docker rm mycontainer

## Laufenden Container erzwingt entfernen
docker rm -f mycontainer

## Alle gestoppten Container entfernen
docker container prune

Container-Best Practices

Dockerfile-Optimierung

## Verwendung eines spezifischen Image-Tags
FROM ubuntu:22.04

## Minimierung der Layer-Anzahl
RUN apt-get update \
 && apt-get install -y python3 \
 && rm -rf /var/lib/apt/lists/*

## Verwendung von Multi-Stage-Builds
FROM python:3.9-slim
COPY --from=builder /app /app

Container-Überwachungsstrategien

graph TD A[Container-Überwachung] --> B[Ressourcenverbrauch] A --> C[Leistungsmetriken] A --> D[Protokollierung]

Leistungsmetriken-Verfolgung

Metrik Befehl Zweck
CPU-Auslastung docker stats Überwachung der Prozessor-Auslastung
Speicher docker top Verfolgung der Speichernutzung
Netzwerk docker network inspect Analyse der Netzwerkperformance

Sicherheits-Best Practices

## Container mit minimalen Rechten ausführen
docker run --read-only --tmpfs /tmp nginx

## Container-Funktionen begrenzen
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx

Container-Gesundheitschecks

HEALTHCHECK --interval=5m --timeout=3s \
 CMD curl -f || exit 1

Protokollierung und Fehlerbehebung

## Container-Protokolle anzeigen
docker logs mycontainer

## Echtzeit-Protokollüberwachung
docker logs -f mycontainer

## Detaillierte Container-Inspektion
docker inspect mycontainer

Ressourcenverwaltung

## Festlegung von Ressourcenbeschränkungen
docker run -d \
  --cpus=1 \
  --memory=512m \
  --memory-reservation=256m \
  nginx

Container-Orchestrierungsprinzipien

version: "3"
services:
  webapp:
    image: myapp
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure

Zusammenfassung

Docker revolutioniert die Softwareentwicklung, indem es leichte, konsistente und portierbare Containerumgebungen bietet. Dieses Tutorial hat Sie mit grundlegenden Fähigkeiten ausgestattet, um Docker zu installieren, Container zu verwalten und Containerisierungstechnologien effektiv auf verschiedenen Computing-Plattformen einzusetzen. Durch die Beherrschung dieser Techniken können Entwickler die Zuverlässigkeit, Skalierbarkeit und die Bereitstellungseffizienz von Anwendungen verbessern.