Docker从容器中项目如何访问到宿主机MYSQL,Docker容器项目如何访问宿主机MySQL数据库

马肤

温馨提示:这篇文章已超过423天没有更新,请注意相关的内容是否还可用!

摘要:,,通过Docker,容器中的项目可以通过特定的网络配置访问宿主机上的MySQL数据库。这通常涉及到在Docker容器中配置网络模式,如使用桥接网络或使用用户定义的自定义网络,以便容器能够与宿主机通信。需要在宿主机上正确配置MySQL的访问权限,确保容器中的应用程序能够成功连接到数据库。这种配置确保了容器化应用与宿主机资源的无缝集成,促进了开发环境的可移植性和可扩展性。

Docker从容器中项目如何访问到宿主机MYSQL,Docker容器项目如何访问宿主机MySQL数据库 第1张

一、说明

Docker 使得服务的容器化以及容器间的通信变得简单,但有时,您可能需要一个容器与宿主机上的非容器化服务进行通信,以下是从 Docker 容器中访问本地主机或 127.0.0.1的具体方法。

二、方法1:使用 host.docker.internal 别名

Docker Desktop 18.03+ 对于 Windows 和 Mac 用户提供了一个便捷的方式,可以通过使用host.docker.internal 别名来访问主机,这个别名在容器内部等同于 localhost。

如果您在主机上运行了 MySQL 服务器,Docker 容器可以通过网络访问连接到主机的 MySQL 服务,具体地址为host.docker.internal:3306,这是 Windows 或 Mac 计算机上最简单的技术。

对于 Linux 上的 Docker 引擎用户,可以通过docker run--add-host 标志来启用host.docker.internal 这个默认主机名,使用这个标志启动容器时,会向容器的/etc/hosts 文件添加一个条目,将host.docker.internal 映射到容器的主机网关。

示例命令:

docker run -d --add-host host.docker.internal:host-gateway -p 80:80 -p 443:443 dzq:latest

使用此方法连接宿主机数据库:host.docker.internal:3306

方法2:连接到主机网络

Docker 提供了一种让容器共享主机网络堆栈的方式,这意味着容器内的 localhost 解析为物理主机,而不是容器本身。

通过添加--network=host 标志来启动与主机网络相连的容器:

docker run -d --network=host my-container:latest

您的容器可以直接引用本地主机或 127.0.0.1。

如果您使用的是 Docker Compose,可以在服务定义中添加network_mode 字段来设置:

services:
  my-service:
    network_mode: host

这种方法有几个需要注意的事项,在使用之前,请确保理解其可能的影响,容器通常会获得自己的私有网络,该网络独立于主机的设置,容器公开的任何端口都将在主机上公开,由于这种方法可能涉及安全问题,因此只在确信运行的容器不会相互冲突或影响主机环境的情况下使用。

方法3:使用默认桥接模式访问主机

即使在不使用--network=host 的情况下,您的容器仍然可以通过主机的 Docker 网络 IP 访问主机,大多数 Docker 引擎安装会将主机表示为默认 docker0 桥接网络上的 172.17.0.1,您可以通过在主机上运行以下命令来检查自己的 Docker IP:

ip addr show docker0

您的主机的 Docker IP 将显示在inet 行上,从容器中连接到此 IP 地址,即可成功访问在您的主机上运行的服务,这种方法可能无法连接到直接绑定到本地主机的服务,在这种情况下,您可能会遇到连接被拒绝的错误。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码