web-dev-qa-db-ja.com

PostgreSQLのDocker化-psql接続が拒否されました

Dockerで遊んでいて、PostgresコンテナをDocker化したいと思います。

私は公式の をフォローしていますが、psqlを使用して実行されているイメージに接続できません。

例の内容を使用してDockerfileを作成しました。 Dockerfileからイメージを作成し、それに名前を付けました。次に、PostgreSQLサーバーコンテナーを(フォアグラウンドで)実行します。

~/test » docker run --rm -P --name pg_test eg_postgresql                                                                                                       
2014-10-10 06:12:43 UTC LOG:  database system was interrupted; last known up at 2014-10-10 06:12:29 UTC
2014-10-10 06:12:43 UTC LOG:  database system was not properly shut down; automatic recovery in progress
2014-10-10 06:12:43 UTC LOG:  redo starts at 0/1782F68
2014-10-10 06:12:43 UTC LOG:  record with zero length at 0/1782FA8
2014-10-10 06:12:43 UTC LOG:  redo done at 0/1782F68
2014-10-10 06:12:43 UTC LOG:  last completed transaction was at log time 2014-10-10 06:12:29.2487+00
2014-10-10 06:12:43 UTC LOG:  database system is ready to accept connections
2014-10-10 06:12:43 UTC LOG:  autovacuum launcher started

次に、別のターミナルを開いてポートを確認します。

~/test » docker ps                                                                                                                                             
CONTAINER ID        IMAGE                  COMMAND                CREATED             STATUS              PORTS                     NAMES
aaedb0479139        eg_postgresql:latest   "/usr/lib/postgresql   3 days ago          Up 41 seconds       0.0.0.0:49154->5432/tcp   pg_test

したがって、psqlを使用してインスタンスに接続できます。しかし、私はできません...

~/test » psql -h localhost -p 49154 -d docker -U docker --password                                                                                             
Password for user docker:
psql: could not connect to server: Connection refused
    Is the server running on Host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 49154?
could not connect to server: Connection refused
    Is the server running on Host "localhost" (::1) and accepting
    TCP/IP connections on port 49154?
could not connect to server: Connection refused
    Is the server running on Host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 49154?

どんな助けでもありがたいです。

11
Kummo

私のMacでこれを実行することは私のために働いた:

 $ boot2docker ip
 The VM's Host only interface IP address is: 192.168.59.103

そして、次の線に沿って接続します。

 $ psql -h 192.168.59.103 -p 49159 -d docker -U docker --password

これをすべて行う必要があるのは理想的とは言えませんが、 https://docs.docker.com/installation/mac/ の手順は、直接接続する場合は正しい解決策であることを示しています。マック。

9
wf.

Dockerrunコマンドに--publishオプションを追加した場合

docker run --rm -P --publish 127.0.0.1:5432:5432 --name pg_test eg_postgresql 

dockerファイルを実行すると、次のように動作します(ポートは5432になっていることに注意してください)。

psql -h localhost -p 5432 -d docker -U docker --password

私にとっての解決策は、接続文字列でlocalhostの代わりにHost.docker.internalを使用することでした。

https://github.com/npgsql/Npgsql.EntityFrameworkCore.PostgreSQL/issues/225