
원격 클라이언트에서 Postgres 도커 서비스를 연결하고 싶습니다. 컨테이너를 만드는 방법은 다음과 같습니다.
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
. 또한 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
. 나는 당신에게 필요하지 않을 것이라고 믿었습니다.
건배 :)