2016-12-16 29 views
5

Ev sahibine açık olması gereken bir mongodb örneği çalıştıran bir docker kabı yapıyorum. Ancak, ana bilgisayardan mongodb konteynerine bağlanmak istediğimde bağlantı reddediliyor. Docker kapsayıcısında mongodb'ye bağlanılamıyor

Bu

benim Dockerfile geçerli:

FROM mongo:latest 

RUN mkdir -p /var/lib/mongodb && \ 
    touch /var/lib/mongodb/.keep && \ 
    chown -R mongodb:mongodb /var/lib/mongodb 

ADD mongodb.conf /etc/mongodb.conf 

VOLUME [ "/var/lib/mongodb" ] 

EXPOSE 27017 

USER mongodb 
WORKDIR /var/lib/mongodb 

ENTRYPOINT ["/usr/bin/mongod", "--config", "/etc/mongodb.conf"] 
CMD ["--quiet"] 

/etc/mongodb.conf:

Ve bu i açıkça IP 0.0.0.0 bağlayan MongoDB için config-dosyasıdır here on SO bulundu, bu 127.0.0.1 benim sorunumun temel nedeni olabilirdi (ama değil)

liman işçisi konteyner çalışıyor, ancak ana bilgisayardan bir bağlantı mümkün değildir:

host$ docker inspect 6ec958034a6f |grep IPA 
      "SecondaryIPAddresses": null, 
      "IPAddress": "172.17.0.2", 
        "IPAMConfig": null, 
        "IPAddress": "172.17.0.2", 

deneyin bağlamak için:

host$ mongo 172.17.0.2:27017 
MongoDB shell version v3.4.0 
connecting to: mongodb://172.17.0.2:27017 
2016-12-16T15:53:40.318+0100 W NETWORK [main] Failed to connect to 172.17.0.2:27017 after 5000 milliseconds, giving up. 
2016-12-16T15:53:40.318+0100 E QUERY [main] Error: couldn't connect to server 172.17.0.2:27017, connection attempt failed : 
[email protected]/mongo/shell/mongo.js:234:13 
@(connect):1:6 
exception: connect failed 

i

host$ docker run -p 27017:27017 -d --name mongodb-test mongodb-image 
host$ docker ps 
$ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS      NAMES 
6ec958034a6f  mongodb-image  "/usr/bin/mongod --co" 4 seconds ago  Up 3 seconds  0.0.0.0:27017->27017/tcp mongodb-test 

IP Adres Bul kapsayıcıya ssh, mongo'ya bağlanabilir ve test veritabanını başarıyla listeleyebilirim.

+3

Eşlenen bağlantı noktasını 28001 olarak belirlediniz, neden 27017 numaralı bağlantı noktasına bağlanıyorsunuz? – mustaccio

+3

'localhost: 28001' adlı sunucunun tarayıcısına kopyalayın. – user2915097

+1

28001 bir başka denemeden kopyalama-yapıştırma hatasıydı. Bu soru 27017 ile değiştirdim. Ve sorun aynı btw kalır. İpucu için thx @mustaccio – delete

cevap

1

Ip yerine localhost'u kullanarak bağlantıya izin verir. o yorumlarda belirtildiği gibi 27.017

ben çözümü test ve çalışır: localhost:

maruz portu ile birleştirin.

İlgili konular