- LF9-03 Virtualisierung: Docker Compose + Volume examples - LF6-02 Frontend: To-Do list practical example - LF8-04 ETL: Complete ETL pipeline example - LF6-04 Sicherheit: Express.js security headers - LF2-04 Nutzwertanalyse: Cloud provider selection example - LF9-04 Monitoring: Prometheus alerts + Python logging
229 lines
3.6 KiB
Markdown
229 lines
3.6 KiB
Markdown
# 9.3 Virtualisierung
|
|
|
|
## Virtualisierung - Grundlagen
|
|
|
|
### Was ist Virtualisierung?
|
|
|
|
```
|
|
Virtualisierung
|
|
Mehrere virtuelle Maschinen auf einer
|
|
physischen Hardware betreiben
|
|
```
|
|
|
|
### Vorteile
|
|
|
|
| Vorteil | Beschreibung |
|
|
|---------|-------------|
|
|
| Kosteneinsparung | Weniger Hardware |
|
|
| Flexibilität | Schnell bereitgestellt |
|
|
| Isolation | Getrennte Umgebungen |
|
|
| Skalierung | Leicht erweiterbar |
|
|
| Testumgebung | Schnell aufgesetzt |
|
|
|
|
---
|
|
|
|
## Virtualisierungstypen
|
|
|
|
### Full Virtualization
|
|
|
|
```
|
|
Gast-OS läuft unverändert
|
|
├── VMware Workstation
|
|
├── VirtualBox
|
|
└── Hyper-V
|
|
```
|
|
|
|
### Para-Virtualization
|
|
|
|
```
|
|
Gast-OS weiß von Virtualisierung
|
|
├── Xen
|
|
└── Citrix XenServer
|
|
```
|
|
|
|
### Container-Virtualisierung
|
|
|
|
```
|
|
Leichtgewichtige Virtualisierung
|
|
├── Docker
|
|
├── Podman
|
|
└── Kubernetes
|
|
```
|
|
|
|
---
|
|
|
|
## Docker
|
|
|
|
### Grundlagen
|
|
|
|
```
|
|
Docker - Begriffe
|
|
├── Image: Vorlage (Template)
|
|
├── Container: Laufende Instanz
|
|
├── Dockerfile: Image-Beschreibung
|
|
├── Registry: Image-Speicher
|
|
└── Volume: Persistenter Speicher
|
|
```
|
|
|
|
### Docker-Befehle
|
|
|
|
```bash
|
|
# Container starten
|
|
docker run -d -p 8080:80 nginx
|
|
|
|
# Container auflisten
|
|
docker ps
|
|
docker ps -a
|
|
|
|
# Container stoppen
|
|
docker stop container_id
|
|
|
|
# Image bauen
|
|
docker build -t mein-image .
|
|
|
|
# Container entfernen
|
|
docker rm container_id
|
|
```
|
|
|
|
### Dockerfile
|
|
|
|
```dockerfile
|
|
# Basis-Image
|
|
FROM node:18-alpine
|
|
|
|
# Arbeitsverzeichnis
|
|
WORKDIR /app
|
|
|
|
# Dateien kopieren
|
|
COPY package*.json ./
|
|
COPY . .
|
|
|
|
# Abhängigkeiten installieren
|
|
RUN npm install
|
|
|
|
# Port freigeben
|
|
EXPOSE 3000
|
|
|
|
# Startbefehl
|
|
CMD ["node", "server.js"]
|
|
```
|
|
|
|
### Praktisches Beispiel: Docker Compose
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
|
|
services:
|
|
# Webanwendung
|
|
app:
|
|
build: .
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
- DATABASE_URL=postgres://db:5432/webapp
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
|
|
# Datenbank
|
|
db:
|
|
image: postgres:15-alpine
|
|
volumes:
|
|
- db_data:/var/lib/postgresql/data
|
|
environment:
|
|
- POSTGRES_PASSWORD=geheim
|
|
- POSTGRES_DB=webapp
|
|
|
|
# Cache
|
|
redis:
|
|
image: redis:7-alpine
|
|
ports:
|
|
- "6379:6379"
|
|
|
|
volumes:
|
|
db_data:
|
|
```
|
|
|
|
### Praktisches Beispiel: Docker Volume
|
|
|
|
```bash
|
|
# Volume erstellen
|
|
docker volume create mydata
|
|
|
|
# Volume einhängen
|
|
docker run -v mydata:/data ubuntu
|
|
|
|
# Volumes auflisten
|
|
docker volume ls
|
|
|
|
# Unbenutzte Volumes löschen
|
|
docker volume prune
|
|
```
|
|
|
|
---
|
|
|
|
## Kubernetes
|
|
|
|
### Architektur
|
|
|
|
```
|
|
Kubernetes - Komponenten
|
|
├── Master Node
|
|
│ ├── API Server
|
|
│ ├── Scheduler
|
|
│ ├── Controller Manager
|
|
│ └── etcd
|
|
├── Worker Nodes
|
|
│ ├── Kubelet
|
|
│ ├── Kube Proxy
|
|
│ └── Container Runtime
|
|
└── Add-ons (DNS, Dashboard)
|
|
```
|
|
|
|
### Kubernetes-Objekte
|
|
|
|
| Objekt | Beschreibung |
|
|
|--------|-------------|
|
|
| Pod | Kleinste Einheit (1+ Container) |
|
|
| Deployment | Replikate, Updates |
|
|
| Service | Netzwerkzugriff |
|
|
| Ingress | HTTP-Routing |
|
|
| ConfigMap | Konfiguration |
|
|
| Secret | Sensitive Daten |
|
|
|
|
---
|
|
|
|
## Cloud-Computing
|
|
|
|
### Service-Modelle
|
|
|
|
```
|
|
Cloud - Modelle
|
|
├── IaaS: Infrastructure as a Service
|
|
│ └── Virtuelle Maschinen, Netzwerk
|
|
├── PaaS: Platform as a Service
|
|
│ └── Laufzeitumgebung
|
|
└── SaaS: Software as a Service
|
|
└── Fertige Anwendung
|
|
```
|
|
|
|
### Anbieter
|
|
|
|
| Anbieter | Service |
|
|
|----------|----------|
|
|
| AWS | EC2, S3, Lambda |
|
|
| Azure | VMs, Blob, Functions |
|
|
| Google Cloud | Compute Engine, Cloud Storage |
|
|
|
|
---
|
|
|
|
## Querverweise
|
|
|
|
- [[LF9-02-Server|Zurück: Server]]
|
|
- [[LF9-04-Monitoring|Nächstes Thema: Monitoring]]
|
|
|
|
---
|
|
|
|
*Stand: 2024*
|