不能在一个mongdb泊坞窗内连接pymongo

所以我做了一个远程计算机上的MongoDB的docker容器192.168.0.17我用这个命令运行容器:

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

在容器内部我运行它作为用户炒锅与这些选项:

 mongod --bind_ip 0.0.0.0 --noauth 

这里是输出(我已经创build并授予炒锅到/ data / db /):

 wok@91cf429cfc28:~$ 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 

所以如果有人有任何想法…问候

我认为你的mongo守护进程正在监听端口27017,并且你正在从容器中发布27019。

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