PostgreSQL in Docker-Containern zu betreiben, ist eine gängige Praxis für Entwickler und DevOps-Teams. Dennoch erfordert der produktive Einsatz sorgfältige Planung: Von der Persistenz über Performance-Tuning bis hin zu WAL-Backups, um Datenverlust zu vermeiden. In diesem Tutorial erklären wir praxisnah, wie man PostgreSQL-Container richtig konfiguriert, optimiert und sichert.
PostgreSQL Container starten
Der erste Schritt ist ein stabiler Container-Start mit persistenter Datenhaltung:
docker run -d
--name pg-container
-e POSTGRES_USER=admin
-e POSTGRES_PASSWORD=secret
-e POSTGRES_DB=mydb
-v pgdata:/var/lib/postgresql/data
-p 5432:5432
postgres:15
-v pgdata:/var/lib/postgresql/datasichert die Daten persistiert im Docker-Volume- Umgebungsvariablen definieren Benutzer, Passwort und Datenbank
- Port 5432 ermöglicht Zugriff vom Host oder anderen Containern
Persistenz mit Volumes
Ohne Volumes gehen Daten beim Neustart verloren. Docker-Volumes bieten einfache und zuverlässige Persistenz.
docker volume create pgdata
docker inspect pgdata
- Volumes isolieren Daten vom Container-Lifecycle
- Backups können direkt vom Volume erstellt werden
- Geeignet für Produktionsumgebungen mit hohem Datenaufkommen
PostgreSQL Tuning
Für Performance in Containern sollten einige Parameter angepasst werden:
Memory und Shared Buffers
PostgreSQL nutzt RAM für Caching, um I/O-Operationen zu reduzieren:
docker run -d
--name pg-container
-e POSTGRES_PASSWORD=secret
-v pgdata:/var/lib/postgresql/data
-p 5432:5432
postgres:15
-c shared_buffers=512MB
-c work_mem=64MB
shared_buffers= Speicher für häufig genutzte Tabellen/Indizeswork_mem= Speicher für Sortierungen und Joins- Parameter abhängig von Host-RAM anpassen
Connection Limits
Standardmäßig erlaubt PostgreSQL viele Verbindungen, was zu Ressourcenengpässen führen kann:
docker exec -it pg-container
psql -U admin -d mydb -c "SHOW max_connections;"
docker exec -it pg-container
psql -U admin -d mydb -c "ALTER SYSTEM SET max_connections = 100;"
- Reduziert CPU- und RAM-Überlastungen
- Wichtig für Container mit begrenzten Ressourcen
WAL Backups (Write-Ahead Logging)
WAL-Backups ermöglichen Point-in-Time-Recovery (PITR) und verhindern Datenverlust:
WAL konfigurieren
Im postgresql.conf:
wal_level = replica
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/wal_archive/%f'
- WAL-Dateien sichern alle Transaktionen
- Ermöglicht Recovery auf einen beliebigen Zeitpunkt
- Volume oder Host-Pfad für
walseinrichten
Backup durchführen
Mit pg_basebackup kann ein konsistentes Backup erstellt werden:
docker exec -it pg-container
pg_basebackup -U admin -D /var/lib/postgresql/backup -Fp -Xs -P
- Option
-Xsinkludiert WAL-Dateien für PITR - Option
-Pzeigt Fortschritt an - Backups regelmäßig durchführen, z. B. via Cronjob
Monitoring und Healthchecks
Gesundheitschecks helfen, Container automatisch neu zu starten:
docker run -d
--name pg-container
--health-cmd="pg_isready -U admin"
--health-interval=30s
--health-retries=3
postgres:15
- Kontrolliert, ob DB-Server bereit ist
- Docker kann Container bei Problemen neu starten
- Wichtig für Produktionsumgebungen
Best Practices für Produktions-Setups
- Stabile Image-Tags verwenden (nicht
latest) - Persistente Volumes für Daten und WALs
- Ressourcenlimits via
--memoryund--cpussetzen - Automatisierte Backups und WAL-Archiving einrichten
- Healthchecks und Restart-Policies aktivieren
- Netzwerke isolieren: Nur interne Container zugreifen lassen
Fazit
PostgreSQL in Docker ermöglicht flexible und standardisierte Deployments. Mit persistenten Volumes, gezieltem Tuning, WAL-Backups und Healthchecks lassen sich Container stabil betreiben und Datenverluste vermeiden. Insbesondere bei Produktionsdatenbanken sind Planung und Monitoring entscheidend.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











