Files
ihk-ausbildung/2-Ausbildungsjahr/LF9-Netzwerke-Dienste/LF9-03-Virtualisierung.md
Jan-Marlon Leibl 7df533c7a2 Add practical examples to multiple files
- 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
2026-03-13 12:01:15 +01:00

3.6 KiB

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

# 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

# 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

# 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

# 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


Stand: 2024