Docker Container auf Ubuntu erstellen

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 grundlegende Kenntnisse über Containertechnologie. Erfahren Sie, wie Sie Docker unter Ubuntu einrichten, die Kernkonzepte verstehen und Containerisierung für eine konsistente Anwendungsbereitstellung in verschiedenen Computing-Umgebungen nutzen.

Docker-Grundlagen

Einführung in die Docker-Technologie

Docker ist eine leistungsstarke Plattform für Containertechnologie, die die Softwarebereitstellung und Virtualisierung revolutioniert. Als Open-Source-Tool ermöglicht Docker Entwicklern, Anwendungen konsistent in verschiedenen Computing-Umgebungen zu verpacken, zu verteilen und auszuführen.

Kernkonzepte von Docker

Was ist Docker?

Docker ist eine leichte Virtualisierungstechnologie, die es Entwicklern ermöglicht, Anwendungen mithilfe von Containern zu erstellen, bereitzustellen und auszuführen. Im Gegensatz zu traditionellen virtuellen Maschinen teilen Container den Kernel des Hostsystems, was sie effizienter und schneller zum Starten macht.

Containerarchitektur

graph TD A[Docker Engine] --> B[Container Runtime] A --> C[Docker Images] B --> D[Anwendungskontaner] C --> D

Wichtige Docker-Komponenten

Komponente Beschreibung Zweck
Docker Engine Kerndatenumgebung Verwaltet den Containerlebenszyklus
Docker Image schreibgeschütztes Template Definiert die Containerkonfiguration
Docker Container ausführbare Instanz Führt die Anwendung aus

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
docker --version

## Docker-Installation verifizieren
docker run hello-world

## Laufende Container auflisten
docker ps

## Alle Container auflisten
docker ps -a

Vorteile von Docker

Docker bietet erhebliche Vorteile für die moderne Softwareentwicklung:

  • Konsistente Umgebung zwischen Entwicklung und Produktion
  • Schnellere Anwendungsbereitstellung
  • Verbesserte Ressourcenauslastung
  • Vereinfachte Abhängigkeitsverwaltung
  • Verbesserte Skalierbarkeit und Portabilität

Docker-Images erstellen

Docker-Images verstehen

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

Dockerfile-Grundlagen

Ein Dockerfile ist eine Textdatei, die Anweisungen zum Erstellen eines Docker-Images enthält. Jede Anweisung erstellt eine neue Schicht im Image.

Dockerfile-Struktur

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

Häufige Dockerfile-Anweisungen

Anweisung Zweck Beispiel
FROM Basis-Image angeben FROM ubuntu:22.04
RUN Befehle ausführen RUN apt-get update
COPY Dateien in das Image kopieren COPY ./app /application
WORKDIR Arbeitsverzeichnis festlegen WORKDIR /application
CMD Standardbefehl definieren CMD ["python", "app.py"]

Erstellen eines einfachen Python-Webapp-Images

Beispiel-Dockerfile

## Offizielles Python-Laufzeit-Image als Basis verwenden
FROM python:3.9-slim

## Arbeitsverzeichnis festlegen
WORKDIR /app

## requirements.txt-Datei kopieren
COPY requirements.txt .

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

## Anwendungscode kopieren
COPY . .

## Port freigeben
EXPOSE 5000

## Startbefehl definieren
CMD ["python", "app.py"]

Docker-Image erstellen

## Image mit Tag erstellen
docker build -t hello-world-app .

## Lokale Images auflisten
docker images

## Erstelltes Image ausführen
docker run -p 5000:5000 hello-world-app

Befehle zur Imageverwaltung

## Bestimmtes Image entfernen
docker rmi hello-world-app

## Alle ungenutzten Images entfernen
docker image prune

## Image von Docker Hub herunterladen
docker pull ubuntu:22.04

Best Practices

  • Minimale Basis-Images verwenden
  • Anzahl der Schichten minimieren
  • Unnötige Pakete vermeiden
  • Mehrstufige Builds für kleinere Images verwenden
  • Build-Cache effizient nutzen

Container-Verwaltung

Übersicht über den Container-Lebenszyklus

Docker-Container haben einen definierten Lebenszyklus mit mehreren Zuständen, von der Erstellung bis zur Beendigung. Das Verständnis dieser Zustände ist entscheidend für eine effektive Containerverwaltung.

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

Grundlegende Container-Operationen

Container-Verwaltungsbefehle

Befehl Funktion Beispiel
docker create Container erstellen docker create nginx
docker start 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

Container ausführen

## Container im Vordergrund ausführen
docker run nginx

## Container im Hintergrund ausführen
docker run -d nginx

## Container mit Portweiterleitung ausführen
docker run -p 8080:80 nginx

## Container mit benutzerdefiniertem Namen ausführen
docker run --name web-server nginx

Container-Inspektion und -Überwachung

## Laufende Container auflisten
docker ps

## Alle Container auflisten
docker ps -a

## Container-Logs anzeigen
docker logs container_id

## Containerdetails anzeigen
docker inspect container_id

## Container-Ressourcenverbrauch überwachen
docker stats

Container-Netzwerk

## Docker-Netzwerke auflisten
docker network ls

## Benutzerdefiniertes Netzwerk erstellen
docker network create mynetwork

## Container mit Netzwerk verbinden
docker network connect mynetwork container_id

Erweiterte Container-Verwaltung

Container-Ressourcenlimits

## CPU und Speicher begrenzen
docker run -d \
  --cpus="1.5" \
  --memory="512m" \
  nginx

Container-Skalierung

## Mehrere Container-Instanzen erstellen
docker run -d -p 8001:80 nginx
docker run -d -p 8002:80 nginx
docker run -d -p 8003:80 nginx

Container-Bereitstellungsstrategien

Verwaltung persistenter Daten

## Volume erstellen
docker volume create myvolume

## Volume an Container mounten
docker run -v myvolume:/app/data nginx

Umgebungskonfiguration

## Umgebungsvariablen setzen
docker run -e DATABASE_URL=localhost nginx

Zusammenfassung

Docker revolutioniert die Softwareentwicklung, indem es leichte, portablen Container ermöglicht, die die Anwendungsbereitstellung vereinfachen. Durch das Beherrschen der Kernkomponenten, des Installationsvorgangs und der grundlegenden Befehle von Docker können Entwickler effizientere, skalierbare und reproduzierbare Softwareumgebungen mit minimalem Overhead und maximaler Flexibilität erstellen.