2016-08-07 6 views
3

Dockerの最新リリースでは、ハイパーバイザを使用してコンテナに接続する代わりに、仮想マシンを使用しなくなりました。これは、私はもはや、ログインpsqlでpostgresにしないためにできることを意味します:Mac上のDocker(1.12.0)コンテナ内のPostgresサーバーに接続する方法は?

➜ 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"? 

を私もホストとしてlocalhostを指定しようとしたが、それは奇妙な出力になり:

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

は、誰もが何をすべきかを知っていますこの場合?ありがとうございました。

+1

参考:VirtualBoxだけではなくVMを使用していますが、Macではxhyve Virtual Machineを使用していますが、ネットワーキングにはUnixソケットを使用しています。 "本来の"モデルが必要な場合(例えば、本番システムに近づけるため)、従来のVM環境を使う方が良いかもしれません。 – ldg

+0

あなたの実行ステートメントで 'docker run -d -p 5433:5432 --name = db postgres'とすると仮定します。 – ldg

答えて

0

psql -h 0.0.0.0 -p 5433 -U postgres(127.0.0.1など)のようなIPを使用すると、TCP経由で接続できます。

デフォルトの「localhost」を使用すると、ローカルドメインソケットを使用します(Dockerのバージョンではこの動作は変わりませんが、一般的にはtcpでコンテナ化されたdbに接続する必要があります)。 follwingコマンドで

+0

何らかの理由で動作しません。 – picardo

1

docker run -d -p 5433:5432 db postgres 

あなたがドッキングウィンドウ・エンジンの5433ポートにドッキングウィンドウの5432ポートを輸出しています。ないあなたのホストマシンの5433

これは、あなたがライン

> 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" 
を次のようになる与えるべきである(あなたのドッキングウィンドウのVM名は defaultであると仮定して)次のコマンドで

docker-machine env default 

をお使いのドッキングウィンドウ・マシンのIPアドレスを取得します

Postgresがコンテナ内で実行に接続するために、あなたのドッキングウィンドウ・マシンのIPアドレスを使用し

>psql -h 192.168.99.100 -p 5433 -U postgres 

psql (9.5.0, server 9.5.5) 
Type "help" for help. 

postgres=# 
+0

それは私のために完全に働いた。ありがとう!間違ったIPアドレスを使用していました。 –

関連する問題