2016-10-20 4 views
0

を働いている私は、私がきちんと公開サーバのIPを使用して他のホストから、例えばこのデータベースに接続することができますローカルホスト上のpostgresをdockerizedに接続することができませんが、リモート接続は

docker run -d \ 
    --name test_db \ 
    -v data:/var/lib/postgresql/data \ 
    -e "POSTGRES_PASSWORD=abcdefghij" \ 
    -e "POSTGRES_USER=testuser" \ 
    -p 5432:5432 \ 
    postgres 

とドッキングウィンドウのPostgresのインスタンスを作成しました。

psql -U testuser -h 111.111.111.111 -d testuser // in reality I use proper IP 

ただし、コンテナが実行されているのと同じホストでこれを実行する場合は、接続できません(ハングするだけです)。 postgresql.confの内部

私はpg_hba.conf(コンテナ内)

# TYPE DATABASE  USER   ADDRESS     METHOD 
local all    all          trust 
host all    all    127.0.0.1/32   trust 
host all    all    ::1/128     trust  
host all    all    0.0.0.0/0    md5 

ラインがあります:iptablesのの

listen_addresses = '*' 

関連する行:

$ iptables -L | grep sql 
ACCEPT  tcp -- anywhere    172.19.0.2   tcp dpt:postgresql 

が、それは、また、 172.19.0.2アドレスを使用するとローカルで動作しますが、パブリックサーバIPを使用するとハングアップします。なぜそれが当てはまるのかわかりません。私は自分のアプリケーションをDBを含む多くのホストに分散させていますが、場所によっては別のアドレスを使用したくありません。誰かがこれを手伝うことができますか?

答えて

0

問題はおそらくDockerではなく、パケットを111.111.111.111にルーティングする(会社)ネットワークの構成がデフォルトゲートウェイに向かっていることが説明されています。私はパブリックIP 111.111.111.111がNATの背後にあるあなたのIPだと思っています。

短い111.111.111.111は127.0.0.1にマッピングされません。これは、コンピュータの外側のどこかでバインドされているためです。あなたはこのiptables redirect all requests to localhost

+0

二つのテストサーバーのような何かをしたいと思う

はArubaCloud上の普通のきれいなVPSです。関係するNATがあるかどうかはわかりませんが、そうではありません。私はiptablesでリダイレクトを試み、それがうまくいけば言う。 – Valar

関連する問題