
- 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.
- wsl –install
- 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.
- docker run -p 8080:80 nginx:alpine
- 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).
- FROM nginx:alpine
- 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).
- Dockerfile-Direktiven:
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.
- 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).
- docker compose up -d
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.
- web:
- 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).
- apt install
Sinnvolle Reihenfolge (kurz)
- Windows-Nutzer: wsl –install (nur bei Bedarf) → Docker Desktop installieren.
- Linux-Nutzer: curl get.docker.com → sudo sh get-docker.sh → sudo usermod -aG docker $USER → docker version.
- Erstes Testen: docker run -p 8080:80 nginx:alpine → docker ps → docker logs → docker stop/rm.
- Eigenes Image: Dockerfile (FROM/COPY/RUN) → docker build -t repo/name:tag . → docker login → docker push repo/name:tag.
- 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.
30. 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)
- Windows: wsl –install → Docker Desktop installieren
Linux: curl get.docker.com → sudo sh get-docker.sh → sudo usermod -aG docker $USER → docker version - Testcontainer starten: docker run -p 8080:80 nginx:alpine → docker ps → docker logs → docker stop/rm
- Eigenes Image: Dockerfile schreiben → docker build -t repo/name:tag . → docker login → docker push repo/name:tag
- Mehrere Services: docker-compose.yml anlegen → docker compose up -d → docker compose down