Zum Hauptinhalt springen
Zurück zur Kategorie

Docker Grundlagen: Installation und wichtige Befehle

Vollständige Docker-Anleitung: Installation, grundlegende Befehle (run, stop, rm, ps), Image-Verwaltung, Volumes und Netzwerk-Grundlagen auf Linux-Servern.

Lesezeit: 14 min Serververwaltung
dockercontainerimagevolumenetzwerklinuxdevopsdocker hub

Inhaltsverzeichnis

Docker Grundlagen: Installation und wichtige Befehle

Docker ist eine Open-Source-Plattform, mit der Sie Anwendungen in isolierten Containern ausführen können. Es bietet eine konsistente Umgebung von der Entwicklung bis zur Produktion. Diese Anleitung behandelt die Docker-Installation, grundlegende Befehle und praktische Anwendungsszenarien.

Was ist Docker?

Docker verpackt Anwendungen und ihre Abhängigkeiten in portable Container. Im Gegensatz zu virtuellen Maschinen:

  • Teilt den Host-OS-Kernel (viel leichter)
  • Startet und stoppt in Sekunden
  • Verbraucht deutlich weniger Ressourcen
  • Beseitigt das 'Funktioniert bei mir'-Problem

Docker ist der Grundstein moderner Softwareentwicklung und -bereitstellung. Auf REXE-Servern können Sie Anwendungen einfach mit Docker deployen.

Docker installieren

Debian/Ubuntu

hljs bash
# Alte Versionen entfernen
sudo apt remove docker docker-engine docker.io containerd runc

# Voraussetzungen installieren
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y

# Docker GPG-Schlüssel hinzufügen
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Docker-Repository hinzufügen
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker installieren
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

# Dienst starten und aktivieren
sudo systemctl start docker
sudo systemctl enable docker

RHEL/CentOS/AlmaLinux

hljs bash
# Docker-Repository hinzufügen
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# Docker installieren
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

# Dienst starten
sudo systemctl start docker
sudo systemctl enable docker

Installation überprüfen

hljs bash
# Docker-Version prüfen
docker --version

# Test-Container ausführen
sudo docker run hello-world

# Docker ohne sudo verwenden
sudo usermod -aG docker $USER
newgrp docker

Grundlegende Docker-Befehle

Container ausführen

hljs bash
# Einfachen Container starten
docker run nginx

# Im Hintergrund (detached) ausführen
docker run -d nginx

# Mit Port-Weiterleitung
docker run -d -p 8080:80 nginx

# Mit Namen
docker run -d --name web-server -p 8080:80 nginx

# Mit Umgebungsvariable
docker run -d -e MYSQL_ROOT_PASSWORD=geheim --name mysql mysql:8.0

# Mit Volume-Mount
docker run -d -v /host/verzeichnis:/container/verzeichnis nginx

# Automatischer Neustart
docker run -d --restart unless-stopped nginx

# Interaktives Terminal
docker run -it ubuntu bash

Container-Verwaltung

hljs bash
# Laufende Container auflisten
docker ps

# Alle Container auflisten (auch gestoppte)
docker ps -a

# Container stoppen
docker stop container_name

# Container starten
docker start container_name

# Container neu starten
docker restart container_name

# Container entfernen (muss gestoppt sein)
docker rm container_name

# Laufenden Container erzwungen entfernen
docker rm -f container_name

# Alle gestoppten Container entfernen
docker container prune

Container überwachen

hljs bash
# Container-Logs anzeigen
docker logs container_name

# Logs in Echtzeit verfolgen
docker logs -f container_name

# Letzte 100 Zeilen
docker logs --tail 100 container_name

# Ressourcennutzung
docker stats

# Container-Details
docker inspect container_name

# Shell im Container öffnen
docker exec -it container_name bash

# Befehl im Container ausführen
docker exec container_name ls /var/www

Image-Verwaltung

hljs bash
# Image herunterladen
docker pull nginx
docker pull nginx:1.25
docker pull ubuntu:22.04

# Lokale Images auflisten
docker images

# Image entfernen
docker rmi nginx

# Ungenutzte Images entfernen
docker image prune

# Alle ungenutzten Ressourcen bereinigen
docker system prune -a

Images mit Dockerfile erstellen

hljs dockerfile
FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "server.js"]
hljs bash
# Image erstellen
docker build -t meine-app:1.0 .

# Zu Docker Hub pushen
docker tag meine-app:1.0 benutzername/meine-app:1.0
docker push benutzername/meine-app:1.0

Volume-Verwaltung

Volumes stellen sicher, dass Daten auch nach dem Löschen von Containern erhalten bleiben.

hljs bash
# Volume erstellen
docker volume create datenbank-daten

# Volumes auflisten
docker volume ls

# Volume in Container einbinden
docker run -d -v datenbank-daten:/var/lib/mysql mysql:8.0

# Bind-Mount (Host-Verzeichnis)
docker run -d -v /root/daten:/app/daten nginx

# Volume entfernen
docker volume rm datenbank-daten

# Ungenutzte Volumes bereinigen
docker volume prune

Netzwerk-Grundlagen

hljs bash
# Netzwerke auflisten
docker network ls

# Benutzerdefiniertes Netzwerk erstellen
docker network create app-netzwerk

# Container mit Netzwerk verbinden
docker run -d --network app-netzwerk --name web nginx
docker run -d --network app-netzwerk --name db mysql:8.0

# Container im selben Netzwerk können sich per Name erreichen
# Aus web-Container: ping db

# Netzwerk-Details
docker network inspect app-netzwerk

Praktische Beispiele

Nginx-Webserver

hljs bash
docker run -d \
  --name nginx-web \
  -p 80:80 \
  -v /var/www/html:/usr/share/nginx/html:ro \
  --restart unless-stopped \
  nginx:alpine

MySQL-Datenbank

hljs bash
docker run -d \
  --name mysql-db \
  -e MYSQL_ROOT_PASSWORD=starkes_passwort \
  -e MYSQL_DATABASE=meine-app \
  -v mysql-daten:/var/lib/mysql \
  -p 3306:3306 \
  --restart unless-stopped \
  mysql:8.0

Für die Verwaltung mehrerer Container verwenden Sie Docker Compose. Eine docker-compose.yml-Datei ermöglicht das Starten aller Dienste mit einem einzigen Befehl.

Fazit

Docker ist ein unverzichtbares Werkzeug für moderne Anwendungsbereitstellung. Nach den Grundlagen können Sie zu Docker Compose für die Verwaltung mehrerer Dienste übergehen. Auf REXE-Servern können Sie Anwendungen isoliert, sicher und portabel betreiben.