10

ホストでトンネルを使用している postgres db を使用して、docker コンテナー内から接続したいと考えています。ホストには、DB ホストを指すトンネルがあります。

host$ sudo netstat -tulpen  | grep 555
tcp        0      0 127.0.0.1:5555          0.0.0.0:*               LISTEN      1000       535901      18361/ssh       
tcp6       0      0 ::1:5555                :::*                    LISTEN      1000       535900      18361/ssh       

トンネルは次のようにセットアップされます。

host$ ps -aux | grep 18361
ubuntu    9619  0.0  0.0  10432   628 pts/0    S+   10:11   0:00 grep --color=auto 18361
ubuntu   18361  0.0  0.0  46652  1420 ?        Ss   Nov16   0:00 ssh -i /home/ubuntu/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -f -N -L 5555:localhost:5432 user@remotehost

ホストから psql コマンドを起動できます。

host$ psql -h localhost -p 5555 --username user db_name
psql (9.3.15, server 9.5.4)
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.
db_name=# 

ネットワークモードBRIDGEを使用しているため[ dockerがコンテナーポートをホストに正しく公開していないため、 HOSTを使用できません。https ://github.com/docker/compose/issues/3442を参照してください]を使用する必要があることを読みましたコンテナ IP:

3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:6c:01:5c:a5 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:6cff:fe01:5ca5/64 scope link 

この場合は172.17.0.1になります

しかし、コンテナの中に入ると:

host$ docker exec -ti container_name  /bin/bash

私が持っている接続を試みます:

container# psql -h 172.17.0.1 -p 5555                                                                                                                                                                                              
psql: could not connect to server: Connection refused
    Is the server running on host "172.17.0.1" and accepting
    TCP/IP connections on port 5555?

私が欠けているものはありますか?

4

1 に答える 1

11

bind_address を見逃したので、バインド アドレスは 127.0.0.1 になりました。トンネルを設定するには、bind_address パラメータを追加する必要があります。

-L [バインドアドレス:]ポート:ホスト:ホストポート

例えば

sudo ssh -f -N -L 172.17.0.1:5555:localhost:5432 user@remotehost
于 2016-11-24T12:03:28.290 に答える