`````markdown
# 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.

... (Inhalt gekürzt für Übersicht)

`````