다음 명령을 사용하여 Docker에서 실행되는 PostgreSQL 인스턴스가 있습니다.
mkdir -p $HOME/vols/postgres
docker pull postgres:12.0
docker run --rm --name pg-docker -e POSTGRES_PASSWORD=docker \
-v $HOME/vols/postgres:/var/lib/postgresql/data \
-d -p 5432:5432 postgres
실행 중이며 내 로컬 컴퓨터에 설치된 DBeaver에서 액세스 할 수 있습니다. 또한 다음 명령으로 pgAdmin4를 설치했습니다.
mkdir -p $HOME/vols/pgadmin4
docker pull dpage/pgadmin4
docker run --rm --name pgadmin4 -p 5050:80 \
-v $HOME/vols/pgadmin4:/var/lib/pgadmin \
-e '[email protected]' \
-e 'PGADMIN_DEFAULT_PASSWORD=12345678' \
-d dpage/pgadmin4
pgAdmin도 잘 작동하고 있으며 http : // localhost : 5050을 통해 쉽게 액세스하고 로그인 할 수 있습니다 .
하지만 pgAdmin4-container 인스턴스를 통해 내 postgre-container 인스턴스에 연결하려면 다음 오류가 발생합니다.
서버에 연결할 수 없음 :
서버에 연결할 수 없습니다 : 연결이 거부되었습니다. 서버가 호스트 "localhost"(127.0.0.1)에서 실행 중이고 포트 5432에서 TCP / IP 연결을 수락합니까? 서버에 연결할 수 없습니다. 주소를 사용할 수 없습니다. 서버가 호스트 "localhost"(:: 1)에서 실행 중이고 포트 5432에서 TCP / IP 연결을 허용합니까?
아무도 여기서 무슨 일이 일어나고 있는지 알고 있습니까? 미리 감사드립니다.
참고 : 내 호스트 컴퓨터는 Fedora 31입니다.
컨테이너 내부에서 루프백 주소 ( localhost
또는 127.0.0.1)는 "이 컨테이너"를 나타냅니다. 127.0.0.1
pgAdmin4 컨테이너 내부 에 연결하려고 하면 Postgres 서비스가 pgAdmin4 컨테이너 내부에서 실행되고 있지 않기 때문에 실패합니다.
이 작업을 수행하는 가장 쉬운 방법은 두 컨테이너를 사용자 정의 네트워크에 배치하는 것입니다.이 경우 두 컨테이너는 이름으로 서로를 참조 할 수 있습니다.
네트워크를 생성하여 시작하십시오.
docker network create dbnet
그런 다음 해당 네트워크에서 postgres 컨테이너를 시작합니다.
docker run --rm --name pg-docker -e POSTGRES_PASSWORD=docker \
--net dbnet \
-v $HOME/vols/postgres:/var/lib/postgresql/data \
-d -p 5432:5432 postgres
마지막으로 해당 네트워크에서 pgAdmin4 컨테이너를 시작합니다.
docker run --rm --name pgadmin4 -p 5050:80 \
--net dbnet \
-v $HOME/vols/pgadmin4:/var/lib/pgadmin \
-e '[email protected]' \
-e 'PGADMIN_DEFAULT_PASSWORD=12345678' \
-d dpage/pgadmin4
당신이 당신의 pgadmin UI를 액세스 할 때 지금, 당신은 호스트에 연결할 수 있습니다 pg-docker
대신 localhost
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다