2014-10-13 51 views
9

Tôi đang chơi xung quanh với Docker và tôi muốn Dockerize một container Postgres.Dockerizing PostgreSQL - psql kết nối từ chối

tôi sau khi chính thức example nhưng tôi không thể kết nối với các hình ảnh chạy bằng psql.

tôi tạo ra các Dockerfile với nội dung của ví dụ. Tôi đã xây dựng một hình ảnh từ Dockerfile và gán cho nó một cái tên. Sau đó, tôi chạy container máy chủ PostgreSQL (trong nền trước).

~/test » docker run --rm -P --name pg_test eg_postgresql                          
2014-10-10 06:12:43 UTC LOG: database system was interrupted; last known up at 2014-10-10 06:12:29 UTC 
2014-10-10 06:12:43 UTC LOG: database system was not properly shut down; automatic recovery in progress 
2014-10-10 06:12:43 UTC LOG: redo starts at 0/1782F68 
2014-10-10 06:12:43 UTC LOG: record with zero length at 0/1782FA8 
2014-10-10 06:12:43 UTC LOG: redo done at 0/1782F68 
2014-10-10 06:12:43 UTC LOG: last completed transaction was at log time 2014-10-10 06:12:29.2487+00 
2014-10-10 06:12:43 UTC LOG: database system is ready to accept connections 
2014-10-10 06:12:43 UTC LOG: autovacuum launcher started 

Sau đó, tôi mở thiết bị đầu cuối khác để tìm ra cổng:

~/test » docker ps                                    
CONTAINER ID  IMAGE     COMMAND    CREATED    STATUS    PORTS      NAMES 
aaedb0479139  eg_postgresql:latest "/usr/lib/postgresql 3 days ago   Up 41 seconds  0.0.0.0:49154->5432/tcp pg_test 

Vì vậy, tôi có thể sử dụng psql để kết nối với các ví dụ. Nhưng tôi không thể ...

~/test » psql -h localhost -p 49154 -d docker -U docker --password                        
Password for user docker: 
psql: could not connect to server: Connection refused 
    Is the server running on host "localhost" (127.0.0.1) and accepting 
    TCP/IP connections on port 49154? 
could not connect to server: Connection refused 
    Is the server running on host "localhost" (::1) and accepting 
    TCP/IP connections on port 49154? 
could not connect to server: Connection refused 
    Is the server running on host "localhost" (fe80::1) and accepting 
    TCP/IP connections on port 49154? 

Any help is appreciated.

+0

Liệu nó làm việc sử dụng liên kết chứa'? – cthulhu

+0

Vâng, đúng vậy. Nhưng tôi muốn có thể kết nối từ hệ thống máy chủ của tôi. – Kummo

+0

'netstat | grep 49154' nói? – cthulhu

Trả lời

8

Chạy này trên mac của tôi làm việc cho tôi:

$ boot2docker ip 
The VM's Host only interface IP address is: 192.168.59.103 

Và sau đó kết nối dọc theo dòng:

$ psql -h 192.168.59.103 -p 49159 -d docker -U docker --password 

Ít lý tưởng để thực hiện điều này, nhưng hướng dẫn tại https://docs.docker.com/installation/mac/ cho biết đó là giải pháp đúng nếu bạn muốn kết nối trực tiếp từ máy mac.

+0

Đây có phải là sự cố cấu hình mạng không? Tôi biết không dễ dàng để thiết lập mạng để hiển thị các vùng chứa của tôi với máy chủ lưu trữ cục bộ. Trường hợp của tôi là VirtualBox chạy một khách centos7. Tôi cần thêm giao diện thứ hai vào cấu hình mạng hộp ảo và sử dụng chế độ chỉ lưu trữ để tham gia máy chủ và khách trên mạng phụ thứ hai. Sau đó, tôi sử dụng mực để đảo ngược proxy giữa các mạng. Có lẽ là một cách để làm điều này với các tuyến đường, nhưng điều này dường như làm việc tốt. –

4

Nếu bạn thêm tùy chọn --publish đến Docker chạy lệnh

docker run --rm -P --publish 127.0.0.1:5432:5432 --name pg_test eg_postgresql 

khi bạn chạy file Docker, thì đây sẽ làm việc (lưu ý các cảng tại là 5432)

psql -h localhost -p 5432 -d docker -U docker --password 
+0

Tuy nhiên xảy ra, có vẻ như xuất bản các cổng không giải quyết được vấn đề này. – Kummo

+0

Bạn có một tường lửa đang ngăn bạn từ kết nối với cổng? – rapvelopment

+0

không, tôi không biết. RMBP tươi với mavericks. – Kummo

Các vấn đề liên quan