2016-08-07 4 views
3

Docker의 최신 릴리스는 하이퍼 바이저를 사용하여 컨테이너에 연결하는 대신 가상 시스템을 더 이상 사용하지 않습니다. 이것은 내가 더 이상 로그인 psql와 포스트 그레스 없다 할 수 있다는 것을 의미합니다 :Mac의 Docker (1.12.0) 컨테이너에서 Postgres 서버에 연결하는 방법은 무엇입니까?

➜ postgres git:(master) ✗ docker run -d -p 5433:5432 db postgres 
<sha> 
➜ postgres git:(master) ✗ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS     NAMES 
111f3bed4c52  db     "/docker-entrypoint.s" 17 minutes ago  Up 17 minutes  0.0.0.0:5433->5432/tcp zen_hugle 
➜ postgres git:(master) ✗ psql -p 5433 -U postgres 
psql: could not connect to server: No such file or directory 
    Is the server running locally and accepting 
    connections on Unix domain socket "/tmp/.s.PGSQL.5433"? 

을 나는 또한 호스트로 로컬 호스트를 지정 시도,하지만 이상한 출력 결과 :

➜ postgres git:(master) ✗ psql -h localhost -p 5433 -U postgres 
psql: % 

사람이 무엇을 알고 있나요 이 경우에는? 고맙습니다.

+1

참고로 VirtualBox가 아닌 VM을 사용합니다. Mac에서는 xhyve Virtual Machine을 사용하지만 네트워킹에는 Unix 소켓을 사용합니다. '기본'모델 (예 : 프로덕션 시스템을보다 자세히 모방)이 필요한 경우 기존 VM 환경을 사용하는 것이 좋습니다. – ldg

+0

당신의 run 문에서'docker run -d -p 5433 : 5432 --name = db postgres' 여야합니다. – ldg

답변

0

psql -h 0.0.0.0 -p 5433 -U postgres (또는 127.0.0.1 등)과 같은 IP를 사용하여 TCP를 통해 연결할 수 있습니다.

기본 또는 "localhost"를 사용하면 로컬 도메인 소켓을 사용하려고 시도합니다 (Docker 버전은이 동작을 변경하지 않지만 일반적으로 tcp를 통해 컨테이너 화 된 db에 연결해야합니다).

follwing을 명령
+0

어떤 이유로 든 작동하지 않습니다. – picardo

1

,

docker run -d -p 5433:5432 db postgres 

당신의 5433 포트 엔진을 고정 표시기하기 위해 고정 표시기의 5432 포트를 수출하고 있습니다. 아니 호스트 컴퓨터의 5433

명령을 다음과 당신의 고정 표시기 기계의 IP 주소 이것은 당신이 다음 줄에 유사한 결과를 제공해야합니다

docker-machine env default 

(당신의 고정 표시기의 VM 이름을 가정이 default입니다) 가져 오기

> export DOCKER_TLS_VERIFY="1" 
> export DOCKER_HOST="tcp://192.168.99.100:2376" 
> export DOCKER_CERT_PATH="/Users/<your-user>/.docker/machine/machines/default" 
> export DOCKER_MACHINE_NAME="default" 

docker-machine의 IP 주소를 사용하여 컨테이너에서 실행중인 Postgres에 연결하십시오.

>psql -h 192.168.99.100 -p 5433 -U postgres 

psql (9.5.0, server 9.5.5) 
Type "help" for help. 

postgres=# 
+0

그것은 나를 위해 완벽하게 작동했습니다. 감사! 잘못된 IP 주소를 사용하고있었습니다. –

관련 문제