docker hinzugefügt
This commit is contained in:
@@ -16,7 +16,7 @@ Dieses Projekt enthält ein Bash-Skript und eine Umgebung zum automatischen Konv
|
||||
## Nutzung
|
||||
````bash
|
||||
Alle Markdown-Dateien in mkdocs/docs pdfen:
|
||||
./mkdocs-to-pdf.sh
|
||||
./mkdocs-complete.sh
|
||||
|
||||
Einzelne Datei konvertieren:
|
||||
./mkdocs-to-pdf.sh Linux_Unternehmen/nextcloud-ldap.md
|
||||
@@ -34,7 +34,7 @@ Mehrere Dateien gleichzeitig
|
||||
- LaTeX Template Datei `eisvogel.latex` im Projektverzeichnis
|
||||
|
||||
## Verzeichnisstruktur
|
||||
|
||||
````
|
||||
mkdocs/
|
||||
├── docs/ <- Markdown Quelldateien und Medien
|
||||
│ ├── Linux_Unternehmen/
|
||||
@@ -43,7 +43,7 @@ mkdocs/
|
||||
│ └── basics/
|
||||
├── mkdocs.yml <- MkDocs Konfigurationsdatei
|
||||
└── site/ <- Ergebnis von MkDocs Build (HTML, PDF)
|
||||
|
||||
````
|
||||
mkdocs-to-pdf.sh <- Bash Skript zur automatischen PDF-Erstellung
|
||||
eisvogel.latex <- LaTeX Vorlage für Pandoc PDF Export
|
||||
docker-compose.yml <- Containerdefintionen für MkDocs Umgebung
|
||||
|
||||
260
mkdocs/docs/bonus/docker-grundlagen.md
Normal file
260
mkdocs/docs/bonus/docker-grundlagen.md
Normal file
@@ -0,0 +1,260 @@
|
||||
# Docker-Grundlagen
|
||||
## Virtuelle Maschinen (VMs) vs. Container
|
||||
|
||||
|Kriterium |Virtuelle Maschine (VM) |Container |
|
||||
|-------------------|----------------------------------------------|------------------------------------|
|
||||
|Isolation |Vollständige OS-Isolation (Hardware-Ebene) |Prozess-Isolation (OS-Ebene) |
|
||||
|Ressourcenverbrauch|Hoch (eigenes OS pro VM) |Gering (teilt Host-OS-Kernel) |
|
||||
|Startzeit |Minuten |Sekunden |
|
||||
|Portabilität |Schwerer (große Images) |Leicht (kleine Images) |
|
||||
|Anwendungsfall |Vollständige Systeme (z. B. Windows auf Linux)|Mikroservices, Web-Apps, Datenbanken|
|
||||
|
||||
**Fazit**: Container sind ideal für schnelle, ressourcenschonende Bereitstellung von Anwendungen.
|
||||
## Docker installieren
|
||||
|
||||
[Immer aktuelles Setup anschauen](https://docs.docker.com/engine/install/ubuntu/)
|
||||
|
||||
````bash
|
||||
# Alte Docker-Versionen entfernen
|
||||
sudo apt removes docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
|
||||
# Abhängigkeiten installieren
|
||||
sudo apt update
|
||||
sudo apt install -y ca-certificates curl gnupg
|
||||
|
||||
# Docker-Repository hinzufügen
|
||||
sudo install -m 0755 -d /etc/apt/keyrings
|
||||
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
||||
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
||||
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
|
||||
Types: deb
|
||||
URIs: https://download.docker.com/linux/ubuntu
|
||||
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
|
||||
Components: stable
|
||||
Signed-By: /etc/apt/keyrings/docker.asc
|
||||
EOF
|
||||
|
||||
# Docker installieren
|
||||
sudo apt update
|
||||
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
# Docker-Dienst starten und aktivieren
|
||||
sudo systemctl enable docker
|
||||
sudo systemctl start docker
|
||||
|
||||
# Benutzer zur Docker-Gruppe hinzufügen (für Passwortlosigkeit)
|
||||
sudo usermod -aG docker $USER
|
||||
newgrp docker # Aktuelle Shell aktualisieren
|
||||
````
|
||||
|
||||
## Erste Schritte: "Hello World" mit Docker
|
||||
Fertigen Container ausprobieren:
|
||||
````bash
|
||||
docker run hello-world
|
||||
````
|
||||
> Ausgabe:
|
||||
````
|
||||
Hello from Docker!
|
||||
This message shows that your installation appears to be working correctly.
|
||||
...
|
||||
````
|
||||
Tatsächlich erklärt der Container selbst was er getan hat.
|
||||
* ````docker run````: Führt einen Container aus.
|
||||
* ````hello-world````: Offizielles Test-Image von Docker Hub.
|
||||
|
||||
## Eigenes Dockerfile für einen Webserver (Nginx)
|
||||
|
||||
### Dockerfile
|
||||
Erstellen Sie eine Datei namens ````Dockerfile```` mit folgendem Inhalt:
|
||||
````dockerfile
|
||||
# Basis-Image: Offizielles Nginx-Image
|
||||
FROM nginx:latest
|
||||
|
||||
# Standard-HTML-Seite ersetzen
|
||||
COPY index.html /usr/share/nginx/html
|
||||
|
||||
# Port 80 freigeben
|
||||
EXPOSE 80
|
||||
````
|
||||
### HTML-Datei bereitstellen
|
||||
Erstellen Sie eine Datei ````index.html```` im selben Verzeichnis:
|
||||
````html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Meisterkurs IT</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Willkommen zum Docker-Webserver!</h1>
|
||||
<p>Dieser Container läuft auf Port 80.</p>
|
||||
</body>
|
||||
</html>
|
||||
````
|
||||
###
|
||||
Image bauen und Container starten
|
||||
````bash
|
||||
# Image aus dem Dockerfile bauen
|
||||
docker build -t mein-nginx .
|
||||
|
||||
# Container im Hintergrund starten und Port 8080 des Hosts auf Port 80 des Containers mappen
|
||||
docker run -d -p 8080:80 --name mein-webserver mein-nginx
|
||||
````
|
||||
|
||||
### Testen
|
||||
|
||||
Öffnen Sie einen Browser und rufen Sie ````http://<Ihre-Server-IP>:8080```` auf.
|
||||
Sie sollten die HTML-Seite sehen.
|
||||
|
||||
## Docker Compose für BackupPC
|
||||
|
||||
Warum Docker Compose?
|
||||
|
||||
* Vereinfacht das Management mehrerer Container
|
||||
* Definiert alle Dienste in einer YAML-Datei.
|
||||
### Beispiel: backuppc/docker-compose.yml für BackupPC
|
||||
compose-Dateien immer in einem Ordner!
|
||||
|
||||
````yaml
|
||||
services:
|
||||
backuppc:
|
||||
image: adferrand/backuppc
|
||||
container_name: backuppc
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8081:80" # Webinterface auf Port 8081
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro # Uhrzeit vom Host
|
||||
- /etc/timezone:/etc/timezone:ro # Zeitzone vom Host
|
||||
- ./etc:/etc/backuppc # Einstellungen
|
||||
- ./home:/home/backuppc # "Userdata" von backuppc. z.B. ssh-keys
|
||||
- ./backups:/data/backuppc # Das Backupverzeichnis
|
||||
environment:
|
||||
- BACKUPC_WEB_USER=meisterkurs
|
||||
- BACKUPC_WEB_PASSWORD=passw0rd#
|
||||
- BACKUPPC_UUID=100
|
||||
- BACKUPPC_GUID=101
|
||||
|
||||
````
|
||||
### Projekt starten
|
||||
````bash
|
||||
# Docker Compose-Projekt starten
|
||||
docker compose up -d
|
||||
|
||||
# Status prüfen
|
||||
docker compose ps
|
||||
|
||||
# Log des Container anzeigen
|
||||
docker compose logs
|
||||
````
|
||||
|
||||
### Zugriff auf BackupPC
|
||||
|
||||
Öffnen Sie ````http://<Ihre-Server-IP>:8081```` im Browser.
|
||||
Anmeldung mit ````meisterkurs```` und ````passw0rd````.
|
||||
|
||||
## Docker-Grundlagenbefehle
|
||||
|
||||
### Container-Verwaltung
|
||||
|Befehl |Beschreibung |
|
||||
|--------------------------------|-----------------------------------------|
|
||||
|docker ps |Liste aller laufenden Container anzeigen.|
|
||||
|docker ps -a |Liste aller Container (auch gestoppte) anzeigen.|
|
||||
|docker start <Container> |Einen gestoppten Container starten. |
|
||||
|docker stop <Container> |Einen laufenden Container stoppen. |
|
||||
|docker restart <Container> |Einen Container neu starten. |
|
||||
|docker rm <Container> |Einen gestoppten Container entfernen. |
|
||||
|docker rm -f <Container> |Einen Container erzwingen zu entfernen (auch laufende).|
|
||||
|docker logs <Container> |Logs eines Containers anzeigen. |
|
||||
|docker logs -f <Container> |Logs eines Containers live verfolgen. |
|
||||
|docker exec -it <Container> bash|Eine interaktive Shell im laufenden Container öffnen.|
|
||||
|docker inspect <Container> |Detaillierte Informationen zu einem Container anzeigen (z. B. IP, Volumes).|
|
||||
|
||||
### Image-Verwaltung
|
||||
|
||||
|Befehl |Beschreibung |
|
||||
|------------------------|--------------------------------------------------------------|
|
||||
|docker images |Liste aller lokalen Images anzeigen. |
|
||||
|docker pull <Image> |Ein Image von Docker Hub herunterladen. |
|
||||
|docker rmi <Image> |Ein Image entfernen. |
|
||||
|docker rmi -f <Image> |Ein Image erzwingen zu entfernen. |
|
||||
|docker build -t <Name> .|Ein Image aus einem Dockerfile im aktuellen Verzeichnis bauen.|
|
||||
|docker push <Image> |Ein Image zu Docker Hub oder einer Registry hochladen. |
|
||||
|
||||
### Docker Compose-Befehle
|
||||
|
||||
|Befehl |Beschreibung |
|
||||
|--------------------------------|---------------------------------------------------------------------------|
|
||||
|docker compose up -d |Ein Projekt im Hintergrund starten (Detached-Modus). |
|
||||
|docker compose up --build |Projekt starten und Images neu bauen (falls Änderungen im Dockerfile). |
|
||||
|docker compose down |Ein Projekt komplett stoppen und entfernen (Container, Netzwerke, Volumes).|
|
||||
|docker compose ps |Status aller Container im Projekt anzeigen. |
|
||||
|docker compose logs |Logs aller Container im Projekt anzeigen. |
|
||||
|docker compose logs -f |Logs aller Container live verfolgen. |
|
||||
|docker compose logs <Service> |Logs eines bestimmten Services anzeigen. |
|
||||
|docker compose restart <Service>|Einen bestimmten Service im Projekt neu starten. |
|
||||
|docker compose build |Images für alle Services im Projekt neu bauen. |
|
||||
|docker compose pull |Alle Images für das Projekt neu herunterladen. |
|
||||
|docker compose config |Die Konfiguration des Projekts validieren (z. B. Syntax prüfen). |
|
||||
|docker compose top |Prozesse in den Containern des Projekts anzeigen. |
|
||||
|
||||
### Volumes und Netzwerke
|
||||
|
||||
|Befehl |Beschreibung |
|
||||
|---------------------------------|----------------------------------------------------------------|
|
||||
|docker volume ls |Liste aller Docker-Volumes anzeigen. |
|
||||
|docker volume inspect <Volume> |Details zu einem Volume anzeigen (z. B. Mountpunkt). |
|
||||
|docker volume rm <Volume> |Ein Volume entfernen. |
|
||||
|docker network ls |Liste aller Docker-Netzwerke anzeigen. |
|
||||
|docker network inspect <Netzwerk>|Details zu einem Netzwerk anzeigen (z. B. verbundene Container).|
|
||||
|
||||
### Praktische Beispiele:
|
||||
|
||||
#### BackupPC-Projekt neu starten
|
||||
````bash
|
||||
# Projekt stoppen und entfernen
|
||||
docker compose down
|
||||
|
||||
# Projekt mit neuem Passwort starten
|
||||
docker compose up -d
|
||||
````
|
||||
|
||||
#### Logs von BackupPC live verfolgen
|
||||
````bash
|
||||
docker compose logs -f backuppc
|
||||
````
|
||||
|
||||
#### Shell im BackupPC-Container öffnen
|
||||
````bash
|
||||
docker exec -it backuppc bash
|
||||
````
|
||||
|
||||
#### BackupPC-Image neu bauen (nach Änderungen am Dockerfile)
|
||||
````bash
|
||||
docker compose build backuppc
|
||||
docker compose up -d
|
||||
````
|
||||
#### Alle Images und Container bereinigen
|
||||
````bash
|
||||
# Alle gestoppten Container entfernen
|
||||
docker container prune
|
||||
|
||||
# Alle nicht verwendeten Images entfernen
|
||||
docker image prune -a
|
||||
|
||||
# Alle nicht verwendeten Volumes entfernen
|
||||
docker volume prune
|
||||
````
|
||||
## Inhaltsverzeichnis
|
||||
|
||||
[TOC]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user