簡體   English   中英

無法連接到 WSL2 內部 docker 內部的 mongo

[英]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 的情況下進行連接,您可以執行以下步驟:

  1. GO 到終端
  2. 通過docker exec -it MongoDB bash連接到容器
  3. 致電mongodb

如果您喜歡使用 mongodb 並在精美的 GUI 中查看它,我建議使用 dbvear

https://dbeaver.com/databases/mongo/

我無法重現該問題,但這是我采取的步驟。

  1. 將您的撰寫文件復制到 Windows 文件系統中。
  2. 打開Windows Powershell ,而不是 WSL2 終端(我認為這是您的問題,因為您使用的是sudo
  3. 運行docker compose up (使用較新的 Compose V2)
  4. 在 Powershell session 中運行netstat -ab可以看到0.0.0.0:27017確實在 windows 主機上監聽
  5. 使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM