You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 10下Docker Toolbox中MariaDB容器无法被本地MySQL Workbench连接

解决Docker Toolbox下Windows主机无法连接容器内MariaDB的问题

这个问题的核心原因是Docker Toolbox的运行机制:它不像Docker Desktop那样直接在Windows内核中运行容器,而是通过VirtualBox创建了一个Linux虚拟机,所有Docker容器都运行在这个虚拟机内部。你当前的配置把端口绑定到了127.0.0.1,这个地址是虚拟机内部的回环地址,Windows主机无法直接访问——这就是为什么Ubuntu虚拟机(和Docker虚拟机处于同一网络环境)能正常连接,而Windows本地不行的原因。

下面是具体的解决步骤:

1. 获取Docker虚拟机的IP地址

Docker Toolbox默认会创建一个名为default的虚拟机,你可以通过以下方式获取它的IP:

  • 打开Docker Quickstart Terminal,启动后终端顶部会显示类似docker is configured to use the default machine with IP 192.168.99.100的提示,这个IP就是你需要的;
  • 或者在Git Bash(Docker Toolbox依赖的命令行环境)中运行命令:
    docker-machine ip default
    
  • 也可以打开VirtualBox,选中default虚拟机,查看「网络」设置里的网卡IP(一般是NAT模式下的对应IP)。

2. 修改docker-compose.yml的端口映射配置

把当前的端口绑定行:

ports:
  - "127.0.0.1:3306:3306"

修改为:

ports:
  - "0.0.0.0:3306:3306"

或者简化成:

ports:
  - "3306:3306"

这样配置会让容器的3306端口绑定到Docker虚拟机的所有网卡上,而非仅绑定虚拟机内部的回环地址,确保Windows主机能通过虚拟机IP访问到这个端口。

3. 重启容器使配置生效

在命令行中运行:

docker-compose down
docker-compose up -d

4. 在Windows主机上使用虚拟机IP连接数据库

不管是MySQL Workbench还是Squirrel,连接时都要把主机地址改成刚才获取的Docker虚拟机IP(比如192.168.99.100),端口保持3306,用户名填root,密码使用你设置的pw,测试连接应该就能成功了。

你也可以先用telnet [虚拟机IP] 3306测试端口连通性,如果能正常连接,说明端口映射已经生效。

内容的提问来源于stack exchange,提问作者SNO

火山引擎 最新活动