从WSL2连接到docker容器

从WSL2连接到docker容器,docker,docker-compose,windows-subsystem-for-linux,wsl-2,Docker,Docker Compose,Windows Subsystem For Linux,Wsl 2,我正在尝试从WSL2连接到docker容器中托管的MySQL数据库。我可以从Windows端接触到容器,但无法从WSL端接触到容器 我已经找到了几个解释如何从一个容器连接到另一个容器的答案,但是没有明确的方法从WSL2连接到一个容器 我已经使用Workbench从Windows端连接到DB,没有任何问题。但是如果我尝试从Ubuntu连接数据库,我会得到错误2003(HY000):无法连接到“host.docker.internal”(110)上的mysql服务器。还尝试使用localhost而不

我正在尝试从WSL2连接到docker容器中托管的MySQL数据库。我可以从Windows端接触到容器,但无法从WSL端接触到容器

我已经找到了几个解释如何从一个容器连接到另一个容器的答案,但是没有明确的方法从WSL2连接到一个容器

我已经使用Workbench从Windows端连接到DB,没有任何问题。但是如果我尝试从Ubuntu连接数据库,我会得到错误2003(HY000):无法连接到“host.docker.internal”(110)上的mysql服务器。还尝试使用
localhost
而不是host.docker.internal,但我得到
错误2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'(2)连接到本地MySQL服务器。

如果我运行了
docker ps
,我可以清楚地看到容器运行时设置了正确的端口。在我读到的内容中,我应该使用
host.docker.internal
,但是在Ubuntu主机文件中,它被映射到一些我无法从WSL访问的ip,但可以从windows端访问

我有以下设置: 整个设置是按照以下步骤完成的

  • Windows 10 Pro版本2004构建19041
  • WSL2 w/Ubuntu 20.04
  • Docker Desktop WSL2后端(启用WSL2集成)
容器docker-compose.yml:

services:
  mysql:
    image: mysql:5.7.26
    command: --default-authentication-plugin=mysql_native_password
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 
    volumes:
      - mydata:/var/lib/mysql
      - ./:/home/xx/yy/zz
    ports:
      - 3306:3306
    networks:
      - local_network
networks:
    local_network:
volumes:
  mydata:
一切都表明这是一个网络命名问题,但我找不到任何相关的。。。
任何帮助都将不胜感激:D

我找到了一个解决方法,根据这一点,使用
docker compose up
应该可以工作…但在我的情况下它不工作,但在运行
docker compose run之后--服务端口
我可以使用
127.0.0.1
而不是
主机.docker.internal
,我更愿意使用它。。。