Wie eine Verbindung zu einem PostgreSQL-server in einem Docker (1.12.0) container auf einem Mac?

Die neueste Version von Docker nicht die Verwendung einer virtuellen Maschine nicht mehr, stattdessen ein hypervisor-Verbindung zu den Containern. Das bedeutet ich kann mich nicht mehr einloggen postgres mit psql:

  postgres git:(master)  docker run -d -p 5433:5432 db postgres
<sha>
  postgres git:(master)  docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
111f3bed4c52        db                  "/docker-entrypoint.s"   17 minutes ago      Up 17 minutes       0.0.0.0:5433->5432/tcp   zen_hugle
  postgres git:(master)  psql -p 5433 -U postgres
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5433"?

Ich habe auch versucht, die Angabe von „localhost“ als host, sondern, dass die Ergebnisse in eine seltsame Ausgabe:

  postgres git:(master)  psql -h localhost -p 5433 -U postgres
psql: %

Weiß jemand, was in diesem Fall zu tun? Danke.

  • FYI, es tut einer VM, nur eben nicht mit VirtualBox, es nutzt xhyve Virtuelle Maschine auf Mac, aber nicht die Verwendung von Unix-sockets für die Vernetzung. Wenn Sie die „native“ – Modell (z.B., um näher imitieren Produktions-system), können Sie besser dran mit einem traditionellen VM-Umgebung.
  • Ich nehme an in Ihrem Lauf Aussage, die es sein sollte docker run -d -p 5433:5432 --name=db postgres
InformationsquelleAutor picardo | 2016-08-07



2 Replies
  1. 1

    Mit folgendem Befehl,

    docker run -d -p 5433:5432 db postgres

    Sie exportieren Ihre docker ‚ s port 5432, um docker-engine port 5433. Nicht Ihre host-Maschine 5433.

    Hol deinen docker-Maschine mit der IP-Adresse mit dem folgenden Befehl (vorausgesetzt, Ihre docker-vm-name ist default)

    docker-machine env default

    Dies sollte Ihnen ähnliches Ergebnis wie die folgenden Zeilen

    > export DOCKER_TLS_VERIFY="1"
    > export DOCKER_HOST="tcp://192.168.99.100:2376"
    > export DOCKER_CERT_PATH="/Users/<your-user>/.docker/machine/machines/default"
    > export DOCKER_MACHINE_NAME="default"

    Verwenden Sie Ihre docker-Maschine mit der IP-Adresse eine Verbindung zu Postgres läuft im container

    >psql -h 192.168.99.100 -p 5433 -U postgres
    
    psql (9.5.0, server 9.5.5)
    Type "help" for help.
    
    postgres=#
    • Es funktionierte perfekt für mich. Danke! Ich war mit der falschen IP-Adresse.
  2. 0

    Können Sie eine Verbindung über tcp mithilfe einer IP wie psql -h 0.0.0.0 -p 5433 -U postgres (oder 127.0.0.1, etc.).

    Mithilfe der Standard-oder „localhost“ wird versucht, mit Hilfe der local-domain-socket (obwohl die version von Docker nicht, dieses Verhalten zu ändern, musst du normalerweise eine Verbindung zu einem Container-db über tcp).

    • Es ist nicht aus irgendeinem Grund arbeiten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.