===== Docker ===== ==== Kurzfassung ==== * Docker ist eine Plattform zur Containerisierung von Anwendungen. * Container bündeln Code, Laufzeitumgebung und Abhängigkeiten in portable Images. * Der Docker-Daemon verwaltet Container-Lebenszyklen und Ressourcen auf dem Host. {{ :bilder:docker.jpg?600 | }} Quelle: https://www.opc-router.de/was-ist-docker/ ==== Schlüsselmerkmale ==== * Isolation durch Kernel-Namespaces und Cgroups. * Wiederholbare Builds via Dockerfile. * Image-Verteilung über private oder öffentliche Registries. * Schnelles Provisioning dank leichtgewichtiger Container statt VMs. ==== Architektur ==== * **Docker Engine** – Daemon (dockerd) + REST API + CLI. * **Images** – Schichtenbasiert (Layer), unveränderlich, versionierbar. * **Container** – Laufende Instanz eines Images mit writable Layer. * **Registry** – Speicherort für Images (Docker Hub, Harbor, ECR). ==== Anwendungsfälle ==== * Lokale Entwicklung mit identischen Umgebungen wie in Produktion. * Microservices-Bereitstellung und skalierbare CI/CD-Pipelines. * Tests isolierter Komponenten mit reproduzierbaren Ständen. * Legacy-Anwendungen kapseln, um Migrationen zu erleichtern. ==== Vorteile & Grenzen ==== * **Vorteile** – Portabilität, schnelle Bereitstellung, geringerer Ressourcenverbrauch. * **Grenzen** – Gemeinsamer Kernel, daher geringere Isolation als VMs; erfordert Sicherheits-Hardening. * **Best Practices** – Least-Privilege, signierte Images, regelmäßige Scans. ==== cgroup Grundlagen für Docker ==== * Control Groups (cgroups) isolieren und limitieren Ressourcen wie CPU, RAM oder I/O für Container. * Moderne Distributionen nutzen meist cgroup v2; Docker kann beide Versionen verwenden, bevorzugt jedoch einheitliche v2-Hierarchien. * Systemd-basierte Hosts mounten cgroups unter /sys/fs/cgroup; dort legt Docker pro Container eigene Unterbäume an. **Prüfen, welche Version aktiv ist:** stat -fc %T /sys/fs/cgroup Ausgabe cgroup2fs=v2, ansonsten Mischbetrieb oder v1. **Docker-Info zeigt den aktiven Modus:** docker info --format '{{.CgroupDriver}} / {{.CgroupVersion}}' **Für ressourcengesteuerte Container Limits setzen, z. B.: docker run --memory=512m --cpuset-cpus=0-1 nginx ==== Siehe auch ==== * [[docker:docker_installation|Docker Installation]] * [[docker:deployment_pipelines|Deployment Pipelines]] * [[docker:kubernetes_einstieg|Kubernetes Einstieg]] {{tag>docker container einführung}}