2016-12-16 10 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 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アドレスを探す:

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 

I sshをコンテナに挿入すると、mongoに接続してテストデータベースを正常にリストすることができます。

+3

マップされたポートを28001と指定しました。なぜポート27017に接続していますか? – mustaccio

+3

ホストのブラウザで 'localhost:28001'を試してください – user2915097

+1

28001は別の試行のコピー・ペースト・エラーでした。私は質問で27017に置き換えました。そして問題は同じbtwのままです。ヒントのためのthx @ mustaccio – delete

答えて

1

ipの代わりにlocalhostを使用すると、接続が許可されます。

が露出ポートとそれを組み合わせる:ローカルホスト:27017

それはコメントで述べたように私は解決策をテストし、それが動作します。

関連する問題