我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Docker从容器中项目如何访问到宿主机MYSQL

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 地址以成功访问在您的主机上运行的服务。

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

来源地址:https://blog.csdn.net/jcmj123456/article/details/131692252

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Docker从容器中项目如何访问到宿主机MYSQL

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

docker容器访问宿主机的MySQL操作

背景: 有一个flask项目提供接口,使用docker容器构建并且运行,MySQL在宿主机运行,需要在容器中可以让flask连接上宿主机的mysql 使用ifconfig命令可以看到,有一个docker0和eth0,在docker容器中可以
2022-05-13

docker如何映射容器目录到宿主机

在Docker中,可以使用 -v 或 --volume 参数来映射容器的目录到宿主机。例如,假设要将容器中的 /app/data 目录映射到宿主机的 /host/data 目录,可以使用以下命令:docker run -v /host/d
docker如何映射容器目录到宿主机
2024-04-09

Docker MySQL无法被宿主机访问如何解决

这篇文章主要介绍“Docker MySQL无法被宿主机访问如何解决”,在日常操作中,相信很多人在Docker MySQL无法被宿主机访问如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker My
2023-07-02

如何使用Docker将容器目录挂载到主机上

今天小编给大家分享一下如何使用Docker将容器目录挂载到主机上的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、基本介绍这
2023-06-30

编程热搜

目录