Python 如何使用pymongo在Docker容器内连接到Mongo?

Python 如何使用pymongo在Docker容器内连接到Mongo?,python,mongodb,docker,Python,Mongodb,Docker,我从Docker网站上获取了官方的mongo图像,并启动了一个名为dataiomongo的mongo容器 现在我想使用pymongo连接到容器内的mongodb 这是我编写的python脚本: from pprint import pprint from pymongo import MongoClient client = MongoClient('localhost', port=27017) db = client.admin server = db.command("serverS

我从Docker网站上获取了官方的mongo图像,并启动了一个名为
dataiomongo
的mongo容器

现在我想使用pymongo连接到容器内的mongodb

这是我编写的python脚本:

from pprint import pprint
from pymongo import MongoClient

client = MongoClient('localhost', port=27017)

db = client.admin

server = db.command("serverStatus")
pprint(server)
出现的错误是:

Traceback (most recent call last):
  File "D:/dataio/test_mongo.py", line 8, in <module>
    server = db.command("serverStatus")
  File "D:\dataio\venv\lib\site-packages\pymongo\database.py", line 655, in command
    read_preference) as (sock_info, slave_ok):
  File "C:\Python27\Lib\contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "D:\dataio\venv\lib\site-packages\pymongo\mongo_client.py", line 1135, in _socket_for_reads
    server = topology.select_server(read_preference)
  File "D:\dataio\venv\lib\site-packages\pymongo\topology.py", line 226, in select_server
    address))
  File "D:\dataio\venv\lib\site-packages\pymongo\topology.py", line 184, in select_servers
    selector, server_timeout, address)
  File "D:\dataio\venv\lib\site-packages\pymongo\topology.py", line 200, in _select_servers_loop
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 10061] No connection could be made because the target machine actively refused it
回溯(最近一次呼叫最后一次):
文件“D:/dataio/test_mongo.py”,第8行,在
server=db.command(“serverStatus”)
命令中第655行的文件“D:\dataio\venv\lib\site packages\pymongo\database.py”
将首选项)读取为(sock\u信息,slave\u确定):
文件“C:\Python27\Lib\contextlib.py”,第17行,输入__
返回self.gen.next()
文件“D:\dataio\venv\lib\site packages\pymongo\mongo\u client.py”,第1135行,位于\u socket\u中,用于\u读取
服务器=拓扑。选择服务器(读取首选项)
文件“D:\dataio\venv\lib\site packages\pymongo\topology.py”,第226行,位于select_服务器中
地址(
文件“D:\dataio\venv\lib\site packages\pymongo\topology.py”,第184行,位于select_服务器中
选择器,服务器(超时,地址)
文件“D:\dataio\venv\lib\site packages\pymongo\topology.py”,第200行,在\u select\u servers\u循环中
自身错误消息(选择器))
pymongo.errors.ServerSelectionTimeoutError:localhost:27017:[Errno 10061]无法建立连接,因为目标计算机主动拒绝了它

如何连接到docker容器内的mongodb?

确保通过-p 27017:27017标志将27017容器端口绑定到主机端口。

运行mongo 首先,你需要运行mongo

$ docker run --rm --name my-mongo -it -p 27017:27017 mongo:latest
作为守护进程 连接到上一个容器。。用另一个容器 将数据插入数据库 用python连接数据库
我想你错过了
-p 27017:27017
标志。
docker run-p 27017:27017——命名为mymongo-d mongo

您是如何运行mogno容器的?是否有一种简单的等效方法可以将docker命令包装到一个简单的docker compose文件中?
$ docker run --name my-mongo -d mongo:latest
$ docker run -it --link my-mongo:mongo --rm mongo:latest sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"'
Insert the data into the db
client = MongoClient()
client.server_info()
db = client.yourdbname