windows - 在 Docker + WSL 版本 2 中连接 ECONNREFUSED 127.0.0.1:27017 Mongo
问题描述
我正在使用的堆栈:
- WSL v2:
NAME STATE VERSION
* Ubuntu-18.04 Running 2
Ubuntu-20.04 Stopped 2
- WSL 中的 Docker:
Client: Docker Engine - Community
Version: 19.03.13
API version: 1.40
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:02:36 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.13
API version: 1.40 (minimum version 1.12)
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:01:06 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.3.7
GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
- MongoDB 4.0.8
对于 MongoDB,我使用的是官方图片:
plonca@KAT-IT-1012:~$ docker run -d -p 27017-27019:27017-27019 --name mongodb_408 mongo:4.0.8
我可以登录到容器并检查 mongo 是否正在运行并且可以访问:
plonca@KAT-IT-1012:~$ docker exec -it mongodb_408 bash
root@5b622e89bfef:/# mongo
MongoDB shell version v4.0.8
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("0ae27473-4cc7-4d0d-9976-c922ea58b936") }
MongoDB server version: 4.0.8
Server has startup warnings:
2020-11-26T09:09:56.410+0000 I STORAGE [initandlisten]
2020-11-26T09:09:56.410+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-11-26T09:09:56.410+0000 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-11-26T09:09:57.140+0000 I CONTROL [initandlisten]
2020-11-26T09:09:57.140+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-11-26T09:09:57.140+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2020-11-26T09:09:57.140+0000 I CONTROL [initandlisten]
2020-11-26T09:09:57.140+0000 I CONTROL [initandlisten]
2020-11-26T09:09:57.140+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-11-26T09:09:57.140+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-11-26T09:09:57.140+0000 I CONTROL [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>
Docker 似乎正在侦听端口 27017:
plonca@KAT-IT-1012:~$ sudo netstat -tulpn | grep :27017
tcp6 0 0 :::27017 :::* LISTEN 2114/docker-proxy
但是,在尝试从 Mongo Compass(安装在 Windows 上)连接时,mongodb://127.0.0.1:27017
出现此错误:
connect ECONNREFUSED 127.0.0.1:27017
带有容器 IP 地址 ( mongodb://172.17.0.2:27017
) 的连接字符串会导致超时。如何从安装在 Windows 上的 Mongo Compass 连接在容器中运行的 MongoDB?
解决方案
推荐阅读
- sql - 使用 WITH INSERT INTO
- variables - Ansible 中嵌套变量的语法错误
- mysql - 从用户关注者中检索最关注的用户
- excel - 将具有唯一标识符的多行转换为一列
- node.js - 如何在 promise {} 对象中获取数据
- list - Flutter 将 Firestore 数组值返回到列表
- java - How to Post map data inside ArrayList as form-data by postman
- c# - 从具有不同名称的成员实现接口成员
- php - 在while循环中生成多个空白锚标签
- c# - 进行负载测试时未使用 HTTP.SYS 正确配置获取服务器证书