Docker – Commands

Docker (Container) - Testautomatisierung.org
  1. Installation und Grundkonfiguration
    • wsl –install
      • Richtet unter Windows das Windows Subsystem for Linux (WSL2) ein, damit Docker Desktop ressourcenschonend Linux-Container ausführen kann.
    • curl -fsSL https://get.docker.com -o get-docker.sh
      • Lädt das offizielle Convenience-Installationsskript für Docker Engine auf Linux herunter.
    • sudo sh get-docker.sh
      • Führt das Skript aus und installiert Docker Engine samt CLI auf dem System.
    • sudo usermod -aG docker $USER
      • Fügt den aktuellen Benutzer der docker‑Gruppe hinzu, damit docker ohne sudo läuft (Ab- und wieder anmelden nicht vergessen).
    • docker version
      • Prüft, ob Client und Server (Daemon) korrekt installiert und erreichbar sind.
  2. Basis-Nutzung: Container starten, Logs, Stoppen, Löschen
    • docker run -p 8080:80 nginx:alpine
      • Startet einen Nginx‑Container und leitet Host-Port 8080 auf Port 80 im Container weiter (http://localhost:8080).
    • docker run -p 127.0.0.1:8081:80 nginx:alpine
      • Startet Nginx und bindet ihn nur an die lokale Loopback‑Adresse des Hosts (nur lokal erreichbar).
    • docker ps
      • Listet laufende Container mit Namen/IDs, Ports und Startzeit auf.
    • docker logs
      • Zeigt die Logausgaben des Containers (z. B. Nginx‑Startmeldungen) an.
    • docker stop
      • Stoppt den Container kontrolliert (SIGTERM, danach SIGKILL bei Timeout).
    • docker rm
      • Entfernt den (gestoppten) Container, damit keine Reste übrig bleiben.
  3. Images bauen, taggen und veröffentlichen
    • Dockerfile-Direktiven:
      • FROM nginx:alpine
        • Legt das Basis‑Image fest (schlankes Alpine‑Linux mit Nginx – guter Default für Demo/Web‑Static).
      • COPY index.htm /var/www/html/
        • Kopiert eine lokale index.htm ins Webroot des Nginx‑Containers (Default‑Pfad).
      • RUN apk add curl nano
        • Führt zur Buildzeit Paketinstallationen im Alpine‑Image aus (curl/nano als gängige Tools).
    • docker build -t meinname/webserver .
      • Baut aus dem Dockerfile im aktuellen Ordner ein Image und taggt es als meinname/webserver.
    • docker login
      • Meldet sich bei einer Registry (standardmäßig Docker Hub) an, um Images pushen zu können.
    • docker push meinname/webserver
      • Lädt das lokale Image in die Registry hoch (empfohlenes Tag-Schema: repo:version, z. B. meinname/webserver:1.0.0).

Empfohlene Default-Konfigurationen aus dem Internet (bewährte Praxis)

  • Tagging-Konventionen: Semantic Versioning wie latest, 1, 1.0, 1.0.0; auf Produktion nie latest, sondern feste Minor/Patch-Version (z. B. :1.21.3).
  • Multi-Arch: Offizielle Images (nginx, postgres, mariadb) liefern automatisch die passende Architektur; keine -arm Tags mehr pflegen nötig.
  • Base-Images: Für kleine Web/Utility-Container bevorzugt alpine-Varianten (nginx:alpine, python:3.12-alpine), für komplexe Builds ggf. debian/bookworm-slim.
  1. Compose: Mehrere Container definieren und betreiben
    • docker compose up -d
      • Startet die in docker-compose.yml definierten Services im Hintergrund (detached).
    • docker compose down
      • Stoppt und entfernt die gestarteten Services, Netzwerke und anonyme Volumes.
    • (Altvariante) docker-compose up -d / docker-compose down
      • Ältere CLI-Form; heute bevorzugt „docker compose …“ (ohne Bindestrich).

Vorgeschlagene ausgefüllte docker-compose.yml (Minimalbeispiel)

  • version: „3.8“
  • services:
    • web:
      • image: nginx:alpine
      • container_name: web
      • restart: always
      • ports:
        • „8080:80“
      • volumes:
        • ./html:/usr/share/nginx/html:ro
      • healthcheck:
        • test: [„CMD-SHELL“, „wget -qO- http://localhost || exit 1“]
        • interval: 30s
        • timeout: 3s
        • retries: 3
        • start_period: 10s
          Erläuterung: Bindet ein lokales Verzeichnis ./html als Webroot ein (read-only), setzt einen Healthcheck und nutzt eine robuste Restart-Policy.
  1. Paketmanager/Allgemeine Linux-Kommandos (Kontext)
    • apt install
      • Installiert Pakete auf Debian/Ubuntu‑basierten Systemen (z. B. apt install docker-compose-plugin auf älteren Systemen).
    • mkdir
      • Legt Verzeichnisse an (z. B. mkdir -p ./html für statische Inhalte der Nginx‑Demo).

Sinnvolle Reihenfolge (kurz)

  1. Windows-Nutzer: wsl –install (nur bei Bedarf) → Docker Desktop installieren.
  2. Linux-Nutzer: curl get.docker.com → sudo sh get-docker.sh → sudo usermod -aG docker $USER → docker version.
  3. Erstes Testen: docker run -p 8080:80 nginx:alpine → docker ps → docker logs → docker stop/rm.
  4. Eigenes Image: Dockerfile (FROM/COPY/RUN) → docker build -t repo/name:tag . → docker login → docker push repo/name:tag.
  5. Mehrere Services: docker-compose.yml anlegen (version/services/ports/restart/volumes) → docker compose up -d → docker compose down.

Möchtest du, dass ich dir die Beispielstruktur (Projektordner + html/index.htm + Dockerfile + docker-compose.yml) als ZIP bereitstelle? Dann kannst du sie direkt starten.

gpt-5 icon30. Okt., 12:19

Gut, jetzt formatiere es so das es in einer WordPress seite gut aussieht

1.2s nachgedacht

Hier ist eine sauber strukturierte Fassung, die in WordPress (Classic-Editor oder Gutenberg) gut aussieht. Überschriften, Listen, Codeblöcke und kurze Erklärungen sind webtauglich formatiert.


Docker und Linux Kommandos – Kurz erklärt und sinnvoll geordnet

1) Installation und Grundkonfiguration

  • wsl –install
    Richtet unter Windows WSL2 ein, um Linux-Container effizient laufen zu lassen.
  • curl -fsSL https://get.docker.com -o get-docker.sh
    Lädt das offizielle Docker-Installationsskript für Linux.
  • sudo sh get-docker.sh
    Installiert Docker Engine und CLI auf dem System.
  • sudo usermod -aG docker $USER
    Ermöglicht docker ohne sudo; danach ab- und wieder anmelden.
  • docker version
    Prüft, ob Client und Daemon korrekt installiert und erreichbar sind.

2) Basis-Nutzung: Container starten, prüfen, stoppen

  • docker run -p 8080:80 nginx:alpine
    Startet Nginx und bindet Host-Port 8080 auf Container-Port 80 (http://localhost:8080).
  • docker run -p 127.0.0.1:8081:80 nginx:alpine
    Startet Nginx nur auf der lokalen Host-IP (nur lokal erreichbar).
  • docker ps
    Listet laufende Container mit IDs, Namen und Port-Mappings.
  • docker logs <ID|Name>
    Zeigt Logausgaben des Containers (Fehlersuche/Status).
  • docker stop <ID|Name>
    Stoppt den Container kontrolliert.
  • docker rm <ID|Name>
    Entfernt einen (gestoppten) Container vollständig.

Tipps:

  • Container benennen: –name <name> bei docker run
  • Portweiterleitung: -p HostPort:ContainerPort (z. B. -p 8080:80)

3) Images bauen, taggen und veröffentlichen

Dockerfile-Direktiven (Beispiel)

FROM nginx:alpine
COPY index.htm /var/www/html/
RUN apk add curl nano
  • FROM nginx:alpine
    Setzt ein schlankes Nginx-Alpine als Basis.
  • COPY index.htm /var/www/html/
    Kopiert eine lokale index.htm ins Webroot.
  • RUN apk add curl nano
    Installiert zur Buildzeit nützliche Tools (Beispiel).

Build, Login, Push

  • docker build -t meinname/webserver .
    • Baut ein Image aus dem Dockerfile im aktuellen Ordner.
  • docker login
    • Meldet sich an der Registry (z. B. Docker Hub) an.
  • docker push meinname/webserver
    • Veröffentlicht das Image in der Registry.

Empfehlung:

  • Tagging nach SemVer (z. B. repo/name:1.0.0); in Produktion feste Versionen statt latest nutzen.

4) Compose: Mehrere Services definieren und betreiben

  • docker compose up -d
    Startet Services aus docker-compose.yml im Hintergrund.
  • docker compose down
    Stoppt und entfernt die gestarteten Services/Netzwerke.

(Altbefehle: docker-compose up -d / down – heute bevorzugt docker compose …)

Beispiel docker-compose.yml (Minimal, robust)

version: "3.8"
services:
  web:
    image: nginx:alpine
    container_name: web
    restart: always
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    healthcheck:
      test: ["CMD-SHELL", "wget -qO- http://localhost || exit 1"]
      interval: 30s
      timeout: 3s
      retries: 3
      start_period: 10s

Erklärung:

  • Bindet ./html als Webroot read-only ein.
  • Setzt restart: always (robustes Autorestart-Verhalten).
  • Healthcheck für bessere Betriebs-Transparenz.

5) Allgemeine Linux/Paketmanager

  • apt install <paket>
    Installiert Pakete auf Debian/Ubuntu (z. B. docker-compose-plugin).
  • mkdir <verzeichnis>
    Legt Verzeichnisse an (z. B. mkdir -p ./html für statische Inhalte).

Empfohlene Reihenfolge (Quickstart)

  1. Windows: wsl –install → Docker Desktop installieren
    Linux: curl get.docker.com → sudo sh get-docker.sh → sudo usermod -aG docker $USER → docker version
  2. Testcontainer starten: docker run -p 8080:80 nginx:alpine → docker ps → docker logs → docker stop/rm
  3. Eigenes Image: Dockerfile schreiben → docker build -t repo/name:tag . → docker login → docker push repo/name:tag
  4. Mehrere Services: docker-compose.yml anlegen → docker compose up -d → docker compose down