2017-09-01 11 views
0

ドッカーチュートリアルhttps://docs.docker.com/get-started/part2/#share-your-imageの導入では、コンテナはdocker run -p 4000:80 friendlyhelloで開始され、コンテナサーバーは期待通りにhttp://localhost:4000からアクセスできます。 しかし、私はDockerfile FROM postgres ENV POSTGRES_USER=user-ms ENV POSTGRES_PASSWORD=12345 ドッカーコンテナIPアドレスの違い

とコマンドdocker run -p 5432:5432 user-dbと、コンテナ内のPostgresを実行しようとしたとき、サーバが唯一psql -h 172.17.0.2で、ローカルホストにアクセスすることはできません。

なぜこれらの2つのケースが異なるのですか? https://docs.docker.com/engine/userguide/networking/によれば、両方ともデフォルトでブリッジネットワークに属し、172.17.0.1ゲートウェイである必要があります。最初の例は、localhost上でどのようにアクセス可能なのでしょうか?

+0

どのようなエラーが表示されますか? –

+0

'docker inspect harshavmb

+0

エラーが '' 'psql:サーバに接続できませんでした:そのようなファイルやディレクトリはありません \tサーバがローカルで動作していて、Unixドメインソケット上の \t接続を受け付けていますか?/var/run/postgresql/.s.PGSQL.5432 "?" ''、 下記のコメントをご確認ください。 –

答えて

0

本当ですか? ...

docker run --rm -it -p 5432:5432 -e POSTGRES_USER=user-ms -e POSTGRES_PASSWORD=12345 postgres 

私はドッカーホストからそれへの接続を確立しようとした

ローカルホストが働いた:

psql --user user-ms -h localhost 

とローカルIPアドレスでも働いていた:

psql --user user-ms -h "$(ifconfig \ 
| grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" \ 
| grep -v 127.0.0.1 \ 
| awk '{ print $2 }' \ 
| cut -f2 -d: \ 
| head -n1)" 
私は次のことを試してみました
+1

あなたは正しい、私の間違い。ホストを指定せずに 'psql'を使用しました。つまり、Unixドメインソケットを試しました。ドッカーを設定することでそのように占有されていた、それはその構成で何かでなければならないと思った。 –

+0

コマンドラインではなく、Dockerfileで実行したかったのです。 –

関連する問題