Postgres Docker - リモート接続を許可するために Postgres Docker を有効にする方法は?

Postgres Docker - リモート接続を許可するために Postgres Docker を有効にする方法は?

リモート クライアントから Postgres Docker サービスに接続したいと考えています。コンテナーの作成方法は次のとおりです。

sudo docker run --name pg -p 5432:5432 -v pg_data:/var/lib/postgres/data -e POSTGRES_DB=mydb -e POSTGRES_USER=dbowner -e POSTGRES_PASSWORD=MySecretPassword -d postgres -c "listen_addresses='*'"

調査したところ、ファイルpg_hba.confを編集する必要があるという人がいました。pg_hba.conf をどのように編集すればよいですか? を設定するための構成パラメータはありません。また、とpg_hba.confの間には違いがありますか? どちらを使用すればよく、 Docker コンテナ内にどのように配置すればよいですか?host all all all md5host all all 0.0.0.0/0 md5pg_hba.conf

netstatコンテナを作成した後の出力は次のとおりです。

$ netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 :::5432                 :::*                    LISTEN     
tcp6       0      0 :::3000                 :::*                    LISTEN     
tcp6       0      0 :::4000                 :::*                    LISTEN     
tcp6       0      0 :::4001                 :::*                    LISTEN     
tcp6       0      0 :::6379                 :::*                    LISTEN

つまり、PostgreSQL サービスは IPv6 のみをリッスンするということですか?

答え1

にエラーがあります-v option:

  • あなたはこう書く/var/lib/postgres/dataべきだ/var/lib/postgresql/data
  • ホスト パスは完全である必要があります:/root/pgdata
  • ホストがselinuxを使用している場合は、 を使用し-v /root/pgdata:/var/lib/postgresql/data:Z、そうでない場合は:rw代わりにを使用します。

これは完璧に動作しています:

root@testubt:~# docker run --name pg -p 5432:5432 -v /root/pgdata:/var/lib/postgresql/data:Z -e POSTGRES_DB=mydb -e POSTGRES_USER=dbowner -e POSTGRES_PASSWORD=MySecretPassword -d postgres:alpine


root@testubt:~# ss -tnl | grep 5432
LISTEN     0      128         :::5432                    :::*

ローカルホストをテストします:

root@testubt:~# PGPASSWORD=MySecretPassword psql -U dbowner mydb -h localhost
psql (9.5.14, server 10.5)
Type "help" for help.

mydb=# \q

他のマシンからのテスト:

alp01:~# PGPASSWORD=MySecretPassword psql -U dbowner mydb -h testubt
psql (10.5)
Type "help" for help.

mydb=#

編集したい場合は、ディレクトリpg_hba.conf内にあります/root/pgdata。これは必要ないと思います。

乾杯 :)

関連情報