无法连接nertworkweb/mongodb-no-avx容器的27017端口求助
解决MongoDB无AVX镜像启动后端口无法连接的问题
问题背景
MongoDB 5.0+要求CPU支持AVX,因此使用nertworkweb/mongodb-no-avx镜像启动容器:
启动命令:
docker run -d -p 27017:27017 --name test-mongo nertworkweb/mongodb-no-avx
镜像及容器状态信息:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mongo latest 01e8e54fc538 5 days ago 720MB nertworkweb/mongodb-no-avx latest e5a13eee06ee 4 months ago 685MB $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b7ecab4c2991 nertworkweb/mongodb-no-avx "/usr/local/bin/mong…" 34 minutes ago Up 34 minutes 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp test-mongo
容器启动日志显示网络初始化正常,但本地通过telnet连接27017端口时,连接建立后立即被关闭:
$ telnet localhost 27017 Trying ::1... Connected to localhost. Escape character is '^]'. Connection closed by foreign host. $ telnet 127.0.0.1 27017 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. Connection closed by foreign host.
解决方案
1. 修改MongoDB绑定地址
该镜像默认可能仅绑定127.0.0.1,导致容器外无法访问。通过添加启动参数指定绑定所有IP:
# 停止并删除现有容器 docker stop test-mongo && docker rm test-mongo # 重新启动容器,添加--bind_ip 0.0.0.0参数 docker run -d -p 27017:27017 --name test-mongo nertworkweb/mongodb-no-avx mongod --bind_ip 0.0.0.0
2. 禁用认证(若默认启用)
如果镜像默认开启了认证但未设置初始密码,会导致连接被拒绝。添加--noauth参数启动:
docker stop test-mongo && docker rm test-mongo docker run -d -p 27017:27017 --name test-mongo nertworkweb/mongodb-no-avx mongod --bind_ip 0.0.0.0 --noauth
3. 排查完整日志
获取容器完整日志,定位具体错误:
docker logs test-mongo
- 若日志出现
SocketException: Address already in use:检查宿主机或容器内27017端口是否被其他进程占用 - 若日志出现认证相关报错:使用步骤2的无认证启动方式,或进入容器设置初始密码
4. 验证容器内服务状态
先在容器内部测试MongoDB连接,确认服务本身正常:
docker exec -it test-mongo mongo
若能正常进入MongoDB shell,说明服务运行正常,问题集中在网络转发或绑定配置。
内容的提问来源于stack exchange,提问作者xpt
相关产品推荐
相关产品推荐

