Docker

Das Praxisbuch für Entwickler und DevOps-Teams

  • Rheinwerk
  • Hardcover
  • 585 Seiten
  • 5. Auflage
  • 24,0 cm x 16,8 cm
  • Erscheinungsdatum: 05.03.2026
  • Artikelnummer 978-3-367-11495-5

Hardcover

lieferbar innerhalb von 3-4 Werktagen
Auf den Merkzettel

Software-Container verstehen und produktiv einsetzen Docker ist aus der modernen Softwareentwicklung nicht mehr wegzudenken. Ob Sie Entwickler oder Administrator sind, ob Sie gerade einsteigen oder bereits produktiv mit Software-Containern arbeiten: In diesem Buch zeigen Ihnen Michael Kofler und Bernd Öggl Docker und die Containerwelt. Dabei lassen die Autoren Sie auch bei Troubleshooting und Orchestrierung nicht alleine. Inklusive Best Practices, umfangreichem Werkzeugkasten und vielen Tipps zu Projektmigration, Container-Sicherheit, Docker ohne Root, Kubernetes, Podman, Docker Desktop und mehr.- Schritt für Schritt vom Setup bis zur Orchestrierung- Continuous Delivery: Grundlagen, Konzepte und Beispiele- Praxiswissen zu Projekt-Migration, Sicherheit, Kubernetes, Cloud-Setups, Podman, Portainer und mehr Aus dem Inhalt:- Konzepte und Grundlagen- Docker-Kommandos- Eigene Docker-Images- Container-Sicherheit- Webserver und Tools- Datenbanksysteme- Programmiersprachen- Webapplikationen und CMS- Praxisbeispiele: Webapplikation, Grafana, Gitlab und mehr- Anwendungen migrieren- Deployment- Gitlab- Continuous Integration und Continuous Delivery- Orchestrierung mit Swarm und Kubernetes- Docker in der Cloud: AWS, Azure, Google Cloud


Vorwort ... 11


TEIL I. Einführung ... 15


1. Hello World ... 17




1.1 ... Docker-Schnellinstallation ... 17


1.2 ... Apache mit PHP 8 ... 18


1.3 ... Node.js ... 21


1.4 ... Python ... 24


1.5 ... Fazit ... 25




2. Installation ... 27




2.1 ... Viele Wege führen zum Ziel ... 27


2.2 ... Docker-Installation unter Windows ... 32


2.3 ... Docker-Installation unter macOS ... 34


2.4 ... Docker-Installation unter Linux ... 35


2.5 ... Rootless Docker ... 39


2.6 ... Docker Desktop unter Linux ... 44


2.7 ... Podman installieren ... 46




3. Grundlagen ... 49




3.1 ... Grundlagen und Nomenklatur ... 49


3.2 ... Container ausführen ... 55


3.3 ... Container interaktiv verwenden ... 57


3.4 ... Portweiterleitung ... 66


3.5 ... Datenspeicherung in Volumes ... 69


3.6 ... Volumes mit Namen ... 76


3.7 ... Volumes in eigenen Verzeichnissen ... 77


3.8 ... Kommunikation zwischen mehreren Containern ... 79


3.9 ... Administration ... 86




4. Eigene Images ... 93




4.1 ... Hello, Dockerfile! ... 94


4.2 ... Dockerfile-Syntax ... 97


4.3 ... Ein eigenes Webserver-Image ... 104


4.4 ... Images in den Docker Hub hochladen ... 106


4.5 ... Multi-Arch-Images ... 110


4.6 ... Beispiel: Pandoc- und LaTeX-Umgebung als Image einrichten ... 113




5. Container-Setups mit 'compose' ... 117




5.1 ... YAML-Syntax ... 119


5.2 ... Hello Compose! ... 121


5.3 ... Die Datei compose.yaml ... 124


5.4 ... Ports und Netzwerke ... 132


5.5 ... Passwörter und andere Geheimnisse ... 138


5.6 ... Neue Projekte einrichten (docker init) ... 140




6. Tipps, Tricks und Interna ... 143




6.1 ... Docker Desktop und Podman Desktop ... 144


6.2 ... Visual Studio Code ... 146


6.3 ... Portainer ... 150


6.4 ... Pull-Limit im Docker Hub ... 151


6.5 ... Unterschiedliche CPU-Architekturen nutzen ... 156


6.6 ... Container automatisch starten ... 158


6.7 ... Windows mit dockur ausführen ... 163


6.8 ... Docker-Interna ... 167


6.9 ... Podman-Interna ... 182


6.10 ... Toolbx ... 192




7. Kommandoreferenz ... 199


TEIL II. Werkzeugkasten ... 223


8. Alpine Linux ... 225




8.1 ... Merkmale ... 227


8.2 ... Paketverwaltung mit apk ... 230




9. Webserver und Co. ... 235




9.1 ... Apache HTTP Server ... 236


9.2 ... Nginx ... 241


9.3 ... Nginx als Reverse Proxy mit SSL-Zertifikaten von Let's Encrypt ... 244


9.4 ... Caddy ... 252


9.5 ... Node.js mit Express ... 255


9.6 ... HAProxy ... 259


9.7 ... Traefik-Proxy ... 261




10. Datenbanksysteme ... 267




10.1 ... MySQL und MariaDB ... 267


10.2 ... PostgreSQL ... 274


10.3 ... MongoDB ... 278


10.4 ... Redis ... 286




11. Programmiersprachen ... 289




11.1 ... JavaScript (Node.js) ... 289


11.2 ... Java ... 293


11.3 ... PHP ... 296


11.4 ... Ruby ... 302


11.5 ... Python ... 303


11.6 ... Go ... 310




12. Webapplikationen und CMS ... 319




12.1 ... WordPress ... 319


12.2 ... Nextcloud ... 328


12.3 ... Joomla ... 331




TEIL III. Praxis ... 333


13. Eine moderne Webapplikation ... 335




13.1 ... Die Anwendung ... 335


13.2 ... Das Frontend -- Vue.js ... 338


13.3 ... Der API-Server -- Node.js Express ... 348


13.4 ... Die MongoDB-Datenbank ... 359


13.5 ... Der Sessionspeicher -- Redis ... 364




14. Grafana ... 365




14.1 ... Grafana-Docker-Setup ... 366


14.2 ... Provisioning ... 376


14.3 ... Ein angepasstes Telegraf-Image ... 379




15. Prometheus ... 385




15.1 ... Grundlagen und Setup-Überblick ... 385


15.2 ... Den Node Exporter installieren ... 388


15.3 ... Docker-Setup für Traefik, Grafana und Prometheus ... 392


15.4 ... Prometheus-Weboberfläche ... 399


15.5 ... Grafana-Weboberfläche ... 401


15.6 ... Automatische Benachrichtigungen (Alerts) ... 403


15.7 ... Monitoring für Webserver (Blackbox Exporter) ... 407




16. Modernisierung einer traditionellen Applikation ... 411




16.1 ... Die bestehende Applikation ... 412


16.2 ... Planung und Vorbereitung ... 414


16.3 ... Die Entwicklungsumgebung ... 428


16.4 ... Produktivumgebung und Migration ... 429


16.5 ... Updates ... 432


16.6 ... Tipps für die Umstellung ... 433


16.7 ... Fazit ... 434




17. GitLab ... 435




17.1 ... GitLab-Schnellstart ... 437


17.2 ... GitLab-Webinstallation ... 438


17.3 ... HTTPS über ein Reverse-Proxy-Setup ... 440


17.4 ... E-Mail-Versand ... 441


17.5 ... SSH-Zugriff ... 444


17.6 ... Volumes und Backup ... 445


17.7 ... Eigene Docker-Registry für GitLab ... 447


17.8 ... Die vollständige compose-Datei ... 449


17.9 ... GitLab verwenden ... 451


17.10 ... GitLab-Runner ... 455


17.11 ... Mattermost ... 458




18. Continuous Integration und Continuous Delivery ... 465




18.1 ... Die Website dockerbuch.info mit gohugo.io ... 466


18.2 ... Docker-Images für die CI/CD-Pipeline ... 471


18.3 ... Die CI/CD-Pipeline ... 474




19. Sicherheit ... 485




19.1 ... Softwareinstallation ... 486


19.2 ... Herkunft der Docker-Images ... 487


19.3 ... 'root' in Docker-Images ... 489


19.4 ... Der Docker-Dämon ... 491


19.5 ... User Namespaces ... 492


19.6 ... cgroups ... 495


19.7 ... Secure Computing Mode ... 496


19.8 ... AppArmor-Sicherheitsprofile ... 497




20. Swarm ... 499




20.1 ... Docker Swarm ... 501


20.2 ... Docker Swarm in der Hetzner-Cloud ... 505




21. Kubernetes ... 517




21.1 ... Minikube ... 518


21.2 ... Amazon EKS (Elastic Kubernetes Service) ... 531


21.3 ... Microsoft AKS (Azure Kubernetes Service) ... 535


21.4 ... Google Kubernetes Engine ... 543




22. Künstliche Intelligenz ... 555




22.1 ... Der Docker Model Runner (DMR) ... 555


22.2 ... DMR-Beispiel 1: SQL-Abfragen von der KI ... 557


22.3 ... DMR-Beispiel 2: KI-Zugriff auf GitLab ... 565


22.4 ... Der Docker-MCP-Katalog ... 570


22.5 ... Fazit ... 577




Index ... 579

Michael Kofler
Michael Kofler hat Telematik an der TU Graz studiert und ist einer der erfolgreichsten deutschsprachigen IT-Fachbuchautoren. Zu seinen Themengebieten zählen neben Linux auch IT-Sicherheit, Python, Swift, Java und der Raspberry Pi. Er ist Entwickler, berät Firmen und arbeitet als Lehrbeauftragter.

Bernd Öggl
Bernd Öggl ist ein erfahrener Systemadministrator und Webentwickler. Bereits seit 2001 erstellt er für Kunden Websites, setzt individuelle Entwicklerprojekte um und gibt sein Wissen auf Konferenzen und in Publikationen weiter.

Bitte beachten Sie die Kontaktangaben des Herstellers bei Fragen zur Produktsicherheit.
 
Kontakt für Produktsicherheit
Rheinwerk Verlag GmbH
Rheinwerkallee 4
53229 Bonn
E-Mail: service@rheinwerk-verlag.de