Docker如何访问到宿主机MYSQL的实现方法

 更新时间:2023年09月18日 15:45:56   作者:风水道人  
使用 Docker 能实现服务的容器化,并使用容器间网络在它们之间进行通信,本文主要介绍了Docker如何访问到宿主机MYSQL的实现方法,感兴趣的可以了解一下,感兴趣的可以了解一下

一、说明

使用 Docker 能实现服务的容器化,并使用容器间网络在它们之间进行通信。有时您可能需要一个容器来与宿主机上非容器化的服务通信。以下是如何从 Docker 容器中访问本地主机或 127.0.0.1的具体方法。

二、方法1:简单的选择

适用于 Windows 和 Mac 的 Docker Desktop 18.03+ 支持 host.docker.internal 作为 localhost 的功能别名。在您的容器中使用此字符串来访问您的主机。注意,这里区分实体的办法

指定通信个体别名
解释成容器localhost或127.0.0.1 
解释成主机host.docker.internal 

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

Linux 上的 Docker 引擎用户也可以通过 docker run 的 --add-host 标志启用主机的默认名称 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 

 --add-host 标志向容器的 /etc/hosts 文件添加一个条目。上面显示的值将 host.docker.internal 映射到容器的主机网关,这与真实的 localhost 值相匹配。如果您愿意,可以用您的主机真实名称替换 host.docker.internal 。

方法2:连接到主机网络

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

通过添加 --network=host 标志与主机网络一起启动容器:

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

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

如果您使用的是 Docker Compose,请修改容器的服务定义以包含 network_mode 字段:

services:my-service:network_mode: host

这种方法有几个注意事项。在使用它之前考虑所有的影响很重要。容器通常会获得自己的私有网络,该网络独立于主机的堆栈。来自主机的设置。

容器公开的任何端口都将在主机上公开,即使它们没有使用 -p 标志明确声明。

主机网络可能是一个安全问题,它打破了 Docker 容器的隔离模型。在您确信正在运行的容器不会相互冲突或导致主机环境出现问题的情况下,它仍然很有用。主机网络模式也比默认桥接模式更快,因为没有供流量通过的虚拟化层。

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

您的主机仍然可以在默认桥接网络模式下从容器访问。您只需要通过其 Docker 网络 IP 引用它,而不是 localhost 或 127.0.0.1。

大多数 Docker 引擎安装会将主机表示为默认 docker0 桥接网络上的 172.17.0.1。您可以通过在主机上运行以下命令来检查自己的 IP:

ip addr show docker0

您的主机的 Docker IP 将显示在 inet 行上。从您的容器中连接到此 IP 地址以成功访问在您的主机上运行的服务。

这种方法的一个缺陷是您可能无法连接到直接绑定到本地主机的服务。您会在容器中看到连接被拒绝或类似错误。 

到此这篇关于Docker如何访问到宿主机MYSQL的实现方法的文章就介绍到这了,更多相关Docker访问到宿主机MYSQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker启动时环境变量不生效的解决方法

    docker启动时环境变量不生效的解决方法

    因项目需要多处部署,所以打包成docker镜像以便于部署,本文主要介绍了docker启动时环境变量不生效的解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Docker 跨主机容器间相互访问的实现

    Docker 跨主机容器间相互访问的实现

    本文主要介绍了Docker 跨主机容器间相互访问的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 使用Docker部署打包发布springboot项目

    使用Docker部署打包发布springboot项目

    本文主要介绍了使用Docker部署打包发布springboot项目,从安装docker到多种方式打包发布,编译,镜像,容器等问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • IDEA集成Docker实现一键部署的详细过程

    IDEA集成Docker实现一键部署的详细过程

    这篇文章主要介绍了IDEA集成Docker实现一键部署,Docker基于Windows集成IDEA,本文分步骤通过图文实例代码相结合给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • docker容器内安装TensorRT的问题

    docker容器内安装TensorRT的问题

    很多朋友在使用docker容器内安装TensorRT的时候,遇到一大堆棘手的问题,不知道怎么处理好了,今天小编就docker安装TensorRT的问题给大家详细介绍下,感兴趣的朋友一起看看吧
    2021-05-05
  • Centos 6.5中安装docker的步骤(简洁版)

    Centos 6.5中安装docker的步骤(简洁版)

    这篇文章主要介绍了Centos 6.5中安装docker的步骤(简洁版),需要的朋友可以参考下
    2016-10-10
  • Docker 限制容器对内存的使用详解

    Docker 限制容器对内存的使用详解

    这篇文章主要介绍了Docker 限制容器对内存的使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Mac下部署springBoot项目到Docker中(demo)

    Mac下部署springBoot项目到Docker中(demo)

    本文通过一个简单的demo给大家分享Mac下部署springBoot项目到Docker的方法,感兴趣的朋友一起看看吧
    2018-01-01
  • docker容器因报错无法启动问题的检查及修复容器错误并重启

    docker容器因报错无法启动问题的检查及修复容器错误并重启

    随着容器技术的发展,现在很多的应用程序系统都会选择使用docker容器进行部署,下面这篇文章主要给大家介绍了关于docker容器因报错无法启动问题的检查及修复容器错误并重启的相关资料,需要的朋友可以参考下
    2023-03-03
  • docker 跨平台构建镜像的示例详解

    docker 跨平台构建镜像的示例详解

    这篇文章主要介绍了docker跨平台构建镜像的案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09

最新评论