2016-12-16 4 views
5

호스트에 노출되어야하는 mongodb-instance를 실행하는 도커 컨테이너를 빌드했습니다. 그러나 호스트에서 mongodb-container에 연결할 때 연결이 거부됩니다. 도커 컨테이너의 mongodb에 연결할 수 없습니다.

내 Dockerfile입니다 :

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 :

그리고 이것은 내가 명시 적으로 IP 0.0.0.0 바인딩 MongoDB를위한 설정 파일입니다 발견 된 바와 같이 here on SO은 127.0.0.1이 내 문제의 근본 원인이 될 수 있습니다 (그러나 그렇지 않습니다).

systemLog: 
    destination: file 
    path: /var/log/mongodb/mongo.log 
    logAppend: true 
storage: 
    dbPath: /var/lib/mongodb 
net: 
    bindIp: 0.0.0.0 

을 고정 표시기 컨테이너가 실행되고 있지만, 호스트로부터의 연결 수 없습니다 :

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

한번에 연결하기 :

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 

난을

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-주소 찾기 ssh를 컨테이너에 넣으면 mongo에 연결하여 테스트 데이터베이스를 성공적으로 나열 할 수 있습니다.

+3

매핑 된 포트를 28001로 지정했는데 왜 포트 27017에 연결하고 있습니까? – mustaccio

+3

호스트의 브라우저에서'localhost : 28001'을 시도하십시오. – user2915097

+1

28001은 다른 시도에서 복사 - 붙여 넣기 오류입니다. 나는 그 질문에서 27017로 바꿨다. 그리고 문제는 여전히 동일합니다. 힌트를 위해 thx @ mustaccio – delete

답변

1

ip 대신 localhost를 사용하면 연결이 허용됩니다. 이 코멘트에 언급 된 바와 같이 27,017

내가 솔루션을 테스트하고 그것을 작동 : 로컬 호스트 :

이 노출 된 포트를 결합합니다.

관련 문제