Mein Service wurde mit dem folgenden Befehl mit Docker erstellt:
docker service create --mount type=bind,src=/tmp/postgres,dst=/var/lib/postgresql/data --name dev_db --network mynetwork -p 5432:5432 -d postgres
Das Problem ist, dass ich, wenn ich das Overlay-Netzwerk nicht verwende --network
, eine Verbindung zu dieser Docker-Instanz von einem anderen Host herstellen kann, indem ich einfach den einfachen postgresql-Client verwendet:
psql -h (ipofthehost) mydatabase -Umydatabase
Aber jetzt, wo ich mich von einem anderen Host verbinden möchte, erhalte ich diesen Fehler:
psql: could not connect to server: Connection refused Is the server running on host "ipofdehost" and accepting TCP/IP connections on port 5432?
Was sagt mir, dass es laufen könnte, aber es kann es nicht sehen. Ich habe überprüft, ob der Dienst ausgeführt wird mit:
docker service ls ID NAME MODE REPLICAS IMAGE PORTS 8hr0qwtca230 dev_db replicated 1/1 postgres:latest *:5432->5432/tcp
Ich habe mit ss überprüft, ob der Dienst zuhört:
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::22 :::* LISTEN 0 128 :::5432 :::* LISTEN 0 128 :::12376 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 :::443 :::*
Es scheint, als ob es wegen der Leitung :::5432
abhört:, aber für mich scheint es nur für ipv6-Verbindungen zu sein, also wie kann ich es schaffen, auf ipv4-Verbindungen zu hören? Alles, was ich geändert habe, war, dass ich diesen Knoten mit dem verbunden habe Overlay-Netzwerk, daher verstehe ich nicht, warum die Ports nicht öffentlich zugänglich gemacht werden, wenn ich sie freigegeben habe.
Vielen Dank!