Postgres Docker- 원격 연결을 허용하도록 postgres docker를 활성화하는 방법은 무엇입니까?

Postgres Docker- 원격 연결을 허용하도록 postgres docker를 활성화하는 방법은 무엇입니까?

원격 클라이언트에서 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. 나는 당신에게 필요하지 않을 것이라고 믿었습니다.

건배 :)

관련 정보