Docker auf Ubuntu installieren und konfigurieren

DockerDockerBeginner
Jetzt üben

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

Einführung

Dieses Tutorial bietet eine umfassende Anleitung zum Ausführen eines Docker-Images und zur Verwaltung von Docker-Containern. Sie lernen die Grundlagen von Docker kennen, erkunden Docker-Images und deren Anwendungsfälle und entdecken Techniken zum Ziehen, Verwalten und Interagieren mit Docker-Containern. Darüber hinaus behandelt das Tutorial erweiterte Themen der Containerverwaltung, wie Docker-Volumes, Netzwerke, Compose und Swarm, um Ihnen zu helfen, Ihre Anwendungen effektiv mit Docker zu deployen und zu verwalten.

Docker-Grundlagen

Was ist Docker?

Docker ist eine leistungsstarke Containerisierungstechnologie, die die Anwendungsbereitstellung und -entwicklung revolutioniert. Sie ermöglicht es Entwicklern, Anwendungen mit allen Abhängigkeiten in standardisierte Einheiten, sogenannte Container, zu verpacken, um eine konsistente Leistung in verschiedenen Computing-Umgebungen sicherzustellen.

Kernkonzepte von Docker

Containerisierungstechnologie

Die Containerisierung ermöglicht es Anwendungen, in isolierten Umgebungen zu laufen und bietet mehrere entscheidende Vorteile:

Merkmal Beschreibung
Isolation Jeder Container läuft unabhängig
Portabilität Container können auf jedem Docker-fähigen System laufen
Effizienz Leichter als herkömmliche virtuelle Maschinen
graph TD A[Anwendungskode] --> B[Docker-Container] B --> C[Host-Betriebssystem] C --> D[Infrastruktur]

Docker-Architektur

Docker verwendet eine Client-Server-Architektur mit folgenden Schlüsselkomponenten:

  1. Docker-Daemon
  2. Docker-Client
  3. Docker-Registry
  4. Docker-Images
  5. Docker-Container

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=$(dpkg --print-architecture)]  $(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 prüfen
docker --version

## Ein Image ziehen
docker pull ubuntu:latest

## Images auflisten
docker images

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

Hauptvorteile von Docker

  • Konsistente Entwicklungsumgebungen
  • Schnellere Bereitstellung
  • Ressourceneffizienz
  • Skalierbarkeit
  • Vereinfachte Konfigurationsverwaltung

Arbeiten mit Docker-Images

Docker-Images verstehen

Docker-Images sind schreibgeschützte Vorlagen, die zum Erstellen von Containern verwendet werden. Sie enthalten den Anwendungscode, die Laufzeitumgebung, Bibliotheken und Systemtools, die zum Ausführen einer Anwendung erforderlich sind.

graph LR A[Dockerfile] --> B[Docker-Image] B --> C[Docker-Container]

Befehle zur Imageverwaltung

Befehl Beschreibung
docker images Lokale Images auflisten
docker pull Images aus dem Registry ziehen
docker rmi Images entfernen
docker tag Images für die Versionsverwaltung versehen

Erstellen eines Dockerfiles

## Basis-Image
FROM ubuntu:22.04

## Metadaten
LABEL maintainer="[email protected]"

## System aktualisieren
RUN apt-get update && apt-get install -y \
  python3 \
  pip

## Arbeitsverzeichnis setzen
WORKDIR /app

## Anwendungsdateien kopieren
COPY . /app

## Abhängigkeiten installieren
RUN pip install -r requirements.txt

## Port freigeben
EXPOSE 5000

## Anwendung ausführen
CMD ["python3", "app.py"]

Erstellen von Docker-Images

## Image erstellen
docker build -t myapp:v1 .

## Image mit spezifischem Tag erstellen
docker build -t myapp:latest .

## Image mit Build-Argumenten erstellen
docker build --build-arg VERSION=1.0 -t myapp:v1 .

Docker-Image-Layers

graph TD A[Basis-Image] --> B[System-Updates] B --> C[Abhängigkeiten installieren] C --> D[Anwendungscode kopieren] D --> E[Startbefehl definieren]

Speichern und Freigeben von Images

## Anmeldung bei Docker Hub
docker login

## Image in das Registry pushen
docker push username/myapp:v1

## Image aus dem Registry ziehen
docker pull username/myapp:v1

Best Practices

  • Minimieren Sie die Größe des Images
  • Verwenden Sie mehrstufige Builds
  • Nutzen Sie Caching
  • Vermeiden Sie die Installation unnötiger Pakete

Docker in der Praxis

Container-Networking

Docker bietet verschiedene Netzwerkmodi für die Kommunikation zwischen Containern:

Netzwerkmodus Beschreibung
Bridge Standard-Netzwerkmodus
Host Direkter Host-Netzwerkzugriff
None Keine Netzwerkverbindung
## Benutzerdefiniertes Netzwerk erstellen
docker network create mynetwork

## Container auf einem bestimmten Netzwerk ausführen
docker run --network=mynetwork ubuntu

Docker Compose

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

Workflow der Container-Orchestrierung

graph TD A[Entwicklung] --> B[Containerisierung] B --> C[Tests] C --> D[Staging] D --> E[Produktive Bereitstellung]

Skalieren von Anwendungen

## Skalieren von Diensten
docker-compose up -d --scale web=3

## Überwachen der Containerressourcen
docker stats

Strategien für die Produktionsbereitstellung

## Rollout-Aktualisierung
docker service update \
  --image myapp:v2 \
  --update-parallelism 2 \
  --update-delay 10s \
  myservice

Container-Monitoring

## Container-Logs anzeigen
docker logs mycontainer

## Echtzeit-Ressourcenverbrauch
docker top mycontainer

Erweiterte Networking

## Overlay-Netzwerk erstellen
docker network create \
  -d overlay \
  --subnet 10.0.0.0/24 \
  my_overlay_network

Sicherheitsrichtlinien

Richtlinie Beschreibung
Ressourcenlimits CPU/Speicher begrenzen
Schreibgeschütztes Filesystem Änderungen verhindern
Nicht-Root-Benutzer Reduzierung der Containerrechte

Zusammenfassung

Am Ende dieses Tutorials verfügen Sie über ein fundiertes Verständnis der Ausführung von Docker-Images, der Verwaltung von Docker-Containern und der Nutzung fortgeschrittener Containerverwaltungstechniken, um Ihre Anwendungen effizienter bereitzustellen und zu verwalten. Die in diesem Tutorial erworbenen Kenntnisse ermöglichen es Ihnen, die Vorteile von Docker wie Konsistenz, Skalierbarkeit und Portabilität in Ihren Softwareentwicklungs- und Bereitstellungsprozessen zu nutzen.