![](/img/trans.png)
[英]access mongodb running inside docker + wsl2, on Host windows
[英]Cannot connect to mongo that's inside docker inside WSL2
我的設置有什么問題?
這是我的docker-compose.yml
,我從sudo docker-compose up -d
開始
最終是這樣的:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7fa1ebd185d3 mongo "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:27017-27019->27017-27019/tcp mongodb
version: "3.8"
services:
mongodb:
image: mongo
container_name: mongodb
environment:
- MONGO_INITDB_ROOT_USERNAME=root1234356asdas
- MONGO_INITDB_ROOT_PASSWORD=324gdfgdfgasdas
volumes:
- /home/user/mongodb/database:/data/db
ports:
- '27017-27019:27017-27019'
restart: unless-stopped
我嘗試通過 localhost/127.0.0.1/0.0.0.0 使用 Robot 3T 連接到它,但它總是導致
“遠程計算機拒絕連接”
提前致謝
編輯。
我試過那些:
netsh interface portproxy add v4tov4 listenport=27017 listenaddress=127.0.0.1 connectport=27017 connectaddress=172.22.245.111
netsh interface portproxy add v4tov4 listenport=27017 listenaddress=127.0.0.1 connectport=27017 connectaddress=172.17.0.1
netsh interface portproxy add v4tov4 listenport=27017 listenaddress=127.0.0.1 connectport=27017 connectaddress=172.15.0.1
netsh interface portproxy add v4tov4 listenport=27017 listenaddress=0.0.0.0 connectport=27017 connectaddress=172.22.245.111
netsh interface portproxy add v4tov4 listenport=27017 listenaddress=0.0.0.0 connectport=27017 connectaddress=172.17.0.1
netsh interface portproxy add v4tov4 listenport=27017 listenaddress=0.0.0.0 connectport=27017 connectaddress=172.15.0.1
netsh interface portproxy add v4tov4 listenport=27018 listenaddress=127.0.0.1 connectport=27018 connectaddress=172.22.245.111
netsh interface portproxy add v4tov4 listenport=27018 listenaddress=127.0.0.1 connectport=27018 connectaddress=172.17.0.1
netsh interface portproxy add v4tov4 listenport=27018 listenaddress=127.0.0.1 connectport=27018 connectaddress=172.15.0.1
netsh interface portproxy add v4tov4 listenport=27018 listenaddress=0.0.0.0 connectport=27018 connectaddress=172.22.245.111
netsh interface portproxy add v4tov4 listenport=27018 listenaddress=0.0.0.0 connectport=27018 connectaddress=172.17.0.1
netsh interface portproxy add v4tov4 listenport=27018 listenaddress=0.0.0.0 connectport=27018 connectaddress=172.15.0.1
netsh interface portproxy add v4tov4 listenport=27019 listenaddress=127.0.0.1 connectport=27019 connectaddress=172.22.245.111
netsh interface portproxy add v4tov4 listenport=27019 listenaddress=127.0.0.1 connectport=27019 connectaddress=172.17.0.1
netsh interface portproxy add v4tov4 listenport=27019 listenaddress=127.0.0.1 connectport=27019 connectaddress=172.15.0.1
netsh interface portproxy add v4tov4 listenport=27019 listenaddress=0.0.0.0 connectport=27019 connectaddress=172.22.245.111
netsh interface portproxy add v4tov4 listenport=27019 listenaddress=0.0.0.0 connectport=27019 connectaddress=172.17.0.1
netsh interface portproxy add v4tov4 listenport=27019 listenaddress=0.0.0.0 connectport=27019 connectaddress=172.15.0.1
如果您想在沒有花哨的 GUI 的情況下進行連接,您可以執行以下步驟:
docker exec -it MongoDB bash
連接到容器mongodb
如果您喜歡使用 mongodb 並在精美的 GUI 中查看它,我建議使用 dbvear
https://dbeaver.com/databases/mongo/
我無法重現該問題,但這是我采取的步驟。
sudo
)docker compose up
(使用較新的 Compose V2)netstat -ab
可以看到0.0.0.0:27017
確實在 windows 主機上監聽localhost:27017
上的用戶名/密碼成功連接 Robo 3T將 Docker 用於 Windows 並啟用 WSL2 集成
PS C:\WINDOWS\system32> docker version
Client:
Cloud integration: v1.0.22
Version: 20.10.12
API version: 1.41
Go version: go1.16.12
Git commit: e91ed57
Built: Mon Dec 13 11:44:07 2021
OS/Arch: windows/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.16.12
Git commit: 459d0df
Built: Mon Dec 13 11:43:56 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.12
GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc:
Version: 1.0.2
GitCommit: v1.0.2-0-g52b36a2
docker-init:
Version: 0.19.0
GitCommit: de40ad0
嘗試使用 Using host.docker.internal:27017
而不是localhost:27017
。
雖然我從未使用過 Robo 3T,但當我遇到與 mongocompass 相同的問題時,這為我解決了這個問題。
如前所述,您可能希望直接在 windows 中使用 docker 並在 Z2F2D399F0EA8047483BZZFE551 中運行docker-compose up
。
要從 window 主機連接到 linux WSL2,您可以使用 localhost,或者當 WSL2 ip 失敗時。
您可以使用hostname -I | cut -f 1 -d ' '
從 WSL2 獲取它。 hostname -I | cut -f 1 -d ' '
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.