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

启用MongoDB端点时CosmosDB Emulator Docker容器无法启动

macOS上Azure Cosmos DB Linux模拟器MongoDB API容器启动失败(Exit Code 0)

在macOS环境下部署Azure Cosmos DB Linux模拟器时,NoSQL API容器能正常启动,但启动MongoDB API版本时,执行指定命令后容器立即以Exit Code 0退出,且未正确分配端口。使用的启动命令如下:

docker run \
--publish 8081:8081 \
--publish 10250-10255:10250-10255 \
--name=test-linux-emulator-mongo \
--env AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10 \
--env AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE=true \
--env AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=$ipaddr \
--env AZURE_COSMOS_EMULATOR_ENABLE_MONGODB_ENDPOINT=4.2 \
--interactive \
--tty \
mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest

排查与解决方法

1. 确认$ipaddr变量有效性

容器启动必须依赖正确的本地IP地址,macOS上获取并设置IP的正确方式:

  • 执行以下命令获取Wi-Fi接口IP(以太网用en1替换en0):
    export ipaddr=$(ipconfig getifaddr en0)
    
  • 执行echo $ipaddr验证输出为有效本地IP(如192.168.1.105),避免使用localhost或无效IP。

2. 补充MongoDB API端口映射

MongoDB API默认通过容器的10255端口对外提供服务,需显式映射到宿主机的27017端口(标准MongoDB端口)。修改启动命令,添加端口映射规则:

docker run \
--publish 8081:8081 \
--publish 10250-10255:10250-10255 \
--publish 27017:10255 \
--name=test-linux-emulator-mongo \
--env AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10 \
--env AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE=true \
--env AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=$ipaddr \
--env AZURE_COSMOS_EMULATOR_ENABLE_MONGODB_ENDPOINT=4.2 \
--interactive \
--tty \
mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest

3. 查看启动日志定位根因

如果修改后仍失败,改用后台启动并查看日志:

# 后台启动容器
docker run -d \
--publish 8081:8081 \
--publish 10250-10255:10250-10255 \
--publish 27017:10255 \
--name=test-linux-emulator-mongo \
--env AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10 \
--env AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE=true \
--env AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=$ipaddr \
--env AZURE_COSMOS_EMULATOR_ENABLE_MONGODB_ENDPOINT=4.2 \
mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest

# 查看容器日志
docker logs test-linux-emulator-mongo

日志中会明确提示错误原因,比如IP绑定失败、端口被占用、权限不足等。

4. 清理残留容器与镜像

旧容器的残留配置可能干扰新启动,执行以下命令清理:

# 停止并删除容器
docker stop test-linux-emulator-mongo && docker rm test-linux-emulator-mongo

# 重新拉取镜像(可选,确保使用最新版本)
docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest

5. 验证MongoDB API连接

容器启动成功后,使用mongosh测试连接:

mongosh "mongodb://localhost:27017/?ssl=true" --username localhost --password C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==

连接成功即可正常使用MongoDB API操作Cosmos DB模拟器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:33:12