2016-04-08 21 views
0

,所以我已經和MongoDB的碼頭工人,容器上的遠程計算機192.168.0.17 我運行此命令的容器:不能在mongdb泊塢窗內與pymongo連接

docker run -t -i -p 27019:27019 mongodb /bin/bash 

容器裏面我與論文選項運行它作爲一個用戶鐵鍋:

mongod --bind_ip 0.0.0.0 --noauth 

這裏是輸出(我已經創建並提供給鐵鍋右/數據/ DB /):

[email protected]:~$ mongod --bind_ip 0.0.0.0 --noauth 
warning: bind_ip of 0.0.0.0 is unnecessary; listens on all ips by default 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten] MongoDB starting : pid=41 port=27017 dbpath=/data/db 64-bit host=91cf429cfc28 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten] db version v3.2.4 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten] git version: e2ee9ffcf9f5a94fad76802e28cc978718bb7a30 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten] allocator: tcmalloc 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten] modules: none 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten] build environment: 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten]  distmod: ubuntu1404 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten]  distarch: x86_64 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten]  target_arch: x86_64 
2016-04-08T15:40:08.661+0000 I CONTROL [initandlisten] options: { net: { bindIp: "0.0.0.0" }, security: { authorization: "disabled" } } 
2016-04-08T15:40:08.672+0000 I -  [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'. 
2016-04-08T15:40:08.672+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=2G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0), 
2016-04-08T15:40:09.498+0000 I CONTROL [initandlisten] 
2016-04-08T15:40:09.498+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 
2016-04-08T15:40:09.498+0000 I CONTROL [initandlisten] **  We suggest setting it to 'never' 
2016-04-08T15:40:09.498+0000 I CONTROL [initandlisten] 
2016-04-08T15:40:09.498+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 
2016-04-08T15:40:09.498+0000 I CONTROL [initandlisten] **  We suggest setting it to 'never' 
2016-04-08T15:40:09.498+0000 I CONTROL [initandlisten] 
2016-04-08T15:40:09.536+0000 I FTDC  [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data' 
2016-04-08T15:40:09.536+0000 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker 
2016-04-08T15:40:09.537+0000 I NETWORK [initandlisten] waiting for connections on port 27017 

所以這裏是我與192.168.0.16的計算機上pymongo小腳本:

from pymongo import MongoClient 
from datetime import datetime 
client = MongoClient("mongodb://192.168.0.17:27019") 
db = client.test 
result = db.restaurants.insert_one(
    { 
     "address": { 
      "street": "2 Avenue", 
      "zipcode": "10075", 
      "building": "1480", 
      "coord": [-73.9557413, 40.7720266] 
     }, 
     "borough": "Manhattan", 
     "cuisine": "Italian", 
     "grades": [ 
      { 
       "date": datetime.strptime("2014-10-01", "%Y-%m-%d"), 
       "grade": "A", 
       "score": 11 
      }, 
      { 
       "date": datetime.strptime("2014-01-16", "%Y-%m-%d"), 
       "grade": "B", 
       "score": 17 
      } 
     ], 
     "name": "Vella", 
     "restaurant_id": "41704620" 
    } 
) 

print(result) 

所以我有一個連接被拒絕的錯誤:

Traceback (most recent call last): 
    File "/home/bussiere/WorkspaceSafe/testmongo.py", line 28, in <module> 
    "restaurant_id": "41704620" 
    File "/usr/local/lib/python3.4/dist-packages/pymongo/collection.py", line 622, in insert_one 
    with self._socket_for_writes() as sock_info: 
    File "/usr/lib/python3.4/contextlib.py", line 59, in __enter__ 
    return next(self.gen) 
    File "/usr/local/lib/python3.4/dist-packages/pymongo/mongo_client.py", line 716, in _get_socket 
    server = self._get_topology().select_server(selector) 
    File "/usr/local/lib/python3.4/dist-packages/pymongo/topology.py", line 142, in select_server 
    address)) 
    File "/usr/local/lib/python3.4/dist-packages/pymongo/topology.py", line 118, in select_servers 
    self._error_message(selector)) 
pymongo.errors.ServerSelectionTimeout 

因此,如果任何人有任何想法... 問候

+0

你可以從192.168.0.17的計算機連接到它在本地,直接? – user1337

回答

2

我認爲你的mongo守護進程正在監聽端口27017,並且你正在從容器中發佈27019。

嘗試:docker run -t -i -p 27019:27017 mongodb /bin/bash

+0

謝謝我的壞... – user462794