从WSL2连接到docker容器
我正在尝试从WSL2连接到docker容器中托管的MySQL数据库。我可以从Windows端接触到容器,但无法从WSL端接触到容器 我已经找到了几个解释如何从一个容器连接到另一个容器的答案,但是没有明确的方法从WSL2连接到一个容器 我已经使用Workbench从Windows端连接到DB,没有任何问题。但是如果我尝试从Ubuntu连接数据库,我会得到错误2003(HY000):无法连接到“host.docker.internal”(110)上的mysql服务器。还尝试使用从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而不
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集成)
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
,我更愿意使用它。。。