
リモート クライアントから 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 md5
host all all 0.0.0.0/0 md5
pg_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
。これは必要ないと思います。
乾杯 :)