Docker 应用程序到主机 mysql 连接不起作用(主机操作系统和图像 = windows)

sur*_*van 6 docker docker-network

我的容器应用程序想要从主机访问 Mysql,但无法连接。我用谷歌搜索了很多并尝试了很多解决方案,但无法找出错误,你能帮我解决这个问题吗?

  1. 这是一个windows图像
  2. IIS网站正常运行
  3. 使用 DB Connection 的网站页面无法正常工作
  4. Mysql DB安装在本地机器上(安装docker桌面的同一台电脑)
  5. 应用程序中的连接字符串使用“host.docker.internal”和端口 3306。

尝试了 docker 卸载、重新安装、镜像修剪、容器修剪、WSL 停止和启动、主机文件注释以下行:

192.168.1.8 host.docker.internal
192.168.1.8 gateway.docker.internal
Run Code Online (Sandbox Code Playgroud)

以下是容器中的 ipconfig

在此输入图像描述

Nslookup 和 Ping 命令:

在此输入图像描述

网络LS:

在此输入图像描述

码头工人组成:

version: "3.9"
services:
    web:
        container_name: dinesh_server_container
        image: dinesh_server:1
        build: .
        ports:
            - "8000:80"
            - "8001:81"
        volumes:
            - .\rowowcf:c:\rowowcf
            - .\rowowcf_supportfiles:c:\rowowcf_supportfiles
            - .\rowocollectionsite:c:\rowocollectionsite
        environment:
            TZ: Asia/Calcutta
Run Code Online (Sandbox Code Playgroud)

构建映像使用:来自mcr.microsoft.com/dotnet/framework/aspnet:4.8

主机操作系统: Win 10 Pro 10.0.19043 Build 19043

HyperV也已启用。

也尝试了以下方法:

extra_hosts:
    - "host.docker.internal:host-gateway"
Run Code Online (Sandbox Code Playgroud)

由于它在 Windows 操作系统上 - 不支持主机网络模式(根据我的研究)

编辑: MYSQL 绑定地址是 0.0.0.0:在此输入图像描述

jcc*_*ero 2

也许问题并不直接相关,docker而是与mysql

请尝试让本地mysql数据库侦听主机的所有网络接口:默认情况下它仅侦听127.0.0.1,因此 docker 可能无法连接到它。

我不确定如何在 Windows 中执行此操作,但通常您需要在以下位置提供配置选项0.0.0.0的值:bind-addressmysqld.cnf

bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

请考虑查看本文相关的服务器故障问题

从完全不同的角度来看,我在 Docker for Windows 存储库中发现了这个其他相关的未解决问题,在某种程度上类似于您的问题:特别是第一个问题提供了一些解决方法,例如关闭 wsl 后端和重新启动 docker 守护进程。我看起来不像是一个解决方案,但也许它会有所帮助。