You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GCP两台虚拟机之间建立到MongoDB Docker容器的连接

GCP两台虚拟机跨机访问Docker部署MongoDB的实现方案

1. 配置MongoDB所在虚拟机(COS系统)的暴露规则

  • 修正MongoDB容器启动参数,添加端口映射,将容器27017端口绑定到宿主机端口,启动命令参考:
docker run -d \
  -p 27017:27017 \
  --name mongodb \
  -e MONGO_INITDB_ROOT_USERNAME=root \
  -e MONGO_INITDB_ROOT_PASSWORD=你自己设置的密码 \
  mongo:5.0.4

如果之前已经启动过容器,需要删除原有容器后重新执行上述命令。

  • 配置GCP VPC防火墙入站规则:允许第二台虚拟机的内网IP访问第一台虚拟机的27017端口,源IP范围填写第二台虚拟机的内网IP即可,不要开放到公网避免安全风险。COS系统本身的iptables规则会由Docker自动适配,无需额外手动修改。

2. 配置Python脚本所在虚拟机

  • 先测试网络连通性,在第二台虚拟机上执行命令验证端口可达:
    nc -zv <第一台虚拟机内网IP> 27017
    返回succeeded即为连通正常。
  • 安装MongoDB Python驱动:
    pip install pymongo

3. 构造MongoDB连接URL

  • 若你设置了MongoDB账号密码,连接URL格式为:
    mongodb://<账号>:<密码>@<第一台虚拟机内网IP>:27017/?authSource=admin
  • 若未设置账号密码(不推荐生产环境使用),连接URL格式为:
    mongodb://<第一台虚拟机内网IP>:27017/

注意:优先使用同VPC内网IP访问,流量无需走公网,速度更快、安全性更高且不产生公网流量费用。

4. Docker是否会拦截连接的说明

  • 只要正确配置了-p 27017:27017端口映射,Docker不会拦截访问请求:Docker会自动在宿主机iptables中添加端口转发规则,允许外部请求访问映射到宿主机的容器端口。
  • 未配置端口映射时,MongoDB端口仅在Docker内部容器网络中暴露,宿主机和外部机器都无法访问,不属于拦截行为,是端口未对外暴露导致的。

连接测试示例代码

from pymongo import MongoClient

# 替换为你自己的连接URL
client = MongoClient("mongodb://root:mypassword@10.128.0.8:27017/?authSource=admin")
# 打印所有数据库名称,验证连接成功
print(client.list_database_names())

内容的提问来源于stack exchange,提问作者Corgam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:24:01