Diese Anleitung führt Sie durch die Ausführung von PostgreSQL mit persistentem Speicher in einem Docker-Container und die Verbindung damit.
PostgreSQL ist ein quelloffenes, objektrelationales Datenbankmanagementsystem. Sie existiert seit über 30 Jahren und bewirbt sich selbst als „die fortschrittlichste relationale Open-Source-Datenbank der Welt.“
Docker ist zu einem Standard in der IT-Branche für das einfache Packen, Bereitstellen und Ausführen verteilter Anwendungen geworden. Mit Docker-Containern können Sie schnell neue Anwendungen erstellen, ohne Ihr System mit Abhängigkeiten zu überladen.
Sie können Docker verwenden, um eine PostgreSQL-Datenbank in einem Container als Remote-Server auszuführen. Docker-Container basieren auf offenen Standards, sodass Container auf allen wichtigen Linux-Distributionen, macOS und Microsoft Windows ausgeführt werden können.
PostgreSQL in Docker ausführen
Wir werden hier das PostgreSQL-Image herunterladen, prüfen, ob das Image bereit ist, das Image mit bestimmten Parametern ausführen und schließlich eine Verbindung zur laufenden PostgreSQL-Instanz herstellen.
1. Pullen Sie ein PostgreSQL-Server-Docker-Image
Zuerst müssen wir ein vorhandenes offizielles PostgreSQL-Image vom Docker Hub abrufen. Bilder sind für die PostgreSQL-Versionen 9, 10, 11, 12 und 13 verfügbar. Ändern Sie den latest
Markieren Sie die erforderliche Version, wenn Sie eine bestimmte Version benötigen.
Ziehen wir nun das Bild:
sudo docker pull postgres:latest
Mit dem obigen Befehl wird die neueste verfügbare Version von PostgreSQL aus dem Docker Hub-Repository abgerufen.
2. Ausführen eines Containers vom PostgreSQL-Server-Docker-Image
Vor der Bereitstellung müssen Sie ein Docker-Volume oder einen Bind-Mount einrichten, um Ihre Datenbank beizubehalten. Andernfalls gehen Ihre Daten beim Neustart des Containers verloren. Die Einbindung sollte in /var/lib/postgresql/data
erfolgen Verzeichnis innerhalb des Containers.
Wir erstellen ein Docker-Volume für diesen Leitfaden und hängen es an Ihren PostgreSQL-Container an.
Der folgende Befehl erstellt das Volume auf Ihrem lokalen Computer, das Sie später mit dem PostgreSQL-Container verbinden können:
sudo docker volume create postgres-volume
Nachdem Sie nun ein PostgreSQL-Image auf Ihrem Computer und ein Volume zum Speichern der Daten haben, können Sie einen Container bereitstellen mit:
sudo docker run -d --name=postgres13 -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e POSTGRES_PASSWORD=[your_password] postgres
Der Docker-Run-Befehl erstellt eine laufende PostgreSQL-Datenbank in einem Docker-Container.
Lassen Sie uns diese Syntax aufschlüsseln. Zuerst ist hier, was jeder Parameter in diesem Befehl bedeutet:
-d
führt diesen Container in einem getrennten Modus aus, um ihn im Hintergrund auszuführen.--name
weist den Namenpostgres13
zu zu Ihrer Containerinstanz.-p
bindet den PostgreSQL-Containerport 5432 an denselben Port auf Ihrem Hostcomputer. Sie können sich mitlocalhost:5432
verbinden mit PostgreSQL-Clients (psql
), die auf Ihrem Host ausgeführt werden.-v
Option bindet diesen Datenordner innerhalb des Container-Volumes (/var/lib/postgresql
) auf das lokale Docker-Volume (postgres-volume
), die Sie im vorherigen Schritt erstellt haben.-e
setzt eine Umgebungsvariable. In diesem Fall das PostgreSQL-Root-Passwort.postgres
ist der Name des Images, das wir verwenden, um den Container zu erstellen.
Sie können überprüfen, ob der Container läuft, indem Sie die laufenden Container auflisten:
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6cb3293fe725 postgres "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres13
Herzliche Glückwünsche! Ihre neue PostgreSQL-Instanz läuft jetzt auf Docker.
Außerdem können Sie die Protokolldatei des laufenden PostgreSQL-Containers mit dem folgenden Befehl überprüfen:
sudo docker logs postgres13
3. Verbinden Sie sich mit dem PostgreSQL-Server
Sie können eine interaktive PostgreSQL-Shell erhalten, indem Sie sie an den Container anhängen und psql
ausführen Befehl. Dies stellt die vollständige PostgreSQL-Befehlszeilenschnittstelle bereit, um alle vertrauten Befehle und Flags zu verwenden.
sudo docker exec -it postgres13 psql -U postgres
Sie können sich auch mit psql
mit der PostgreSQL-Docker-Instanz verbinden PostgreSQL-Client, wenn Sie ihn auf Ihrem Host vorinstalliert haben.
psql -h localhost -U postgres
Schlussfolgerung
Einer der wichtigsten Anwendungsfälle für die Verwendung von Docker ist die einfache Erstellung und der Zugriff auf Anwendungen, die in Containern erstellt wurden, ohne sich Gedanken über Abhängigkeiten und Installationen machen zu müssen.
In diesem Tutorial haben wir gelernt, wie man einen PostgreSQL-Server mit Docker anstelle des eigentlichen Hostcomputers einrichtet.
Mit der Microservices-Architektur, bei der sich verschiedene Microservices auf ihre Datenbanken verlassen, ist die Bereitstellung von PostgreSQL-Servern als Docker-Container üblich geworden.
Es wird auch häufig für die lokale Ausführung oder End-to-End-Integrationstests in einer isolierten Umgebung verwendet.
Lassen Sie mich wissen, wenn Sie Fragen oder Vorschläge haben, und ich werde mich gerne bei Ihnen melden.