如何在Docker容器中访问本地数据库或从Docker容器内部连接到计算机

环境
Docker:Docker version 20.10.0, build 7287ab3
MacOS Catalina 10.15.7

遇到的问题
场景为当应用某个应用使用本地Docker容器部署,但是还需要访问本地服务时(如数据库),使用宿主机IP,127.0.0.1,localhost均无法访问,后2者好理解,都属于Docker容器的回环地址,前者:相当于Docker本身,对于Docker来说,容器与宿主机是用Docker虚拟机的网关来通讯,所以无法联接。

如何解决
数据库地址或者需要访问的本地服务的地址使用host.docker.internal
但据说有版本限制,某些版本不支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种容器化技术,可在其运行现代应用程序。Docker容器本身是一种虚拟化技术,它允许用户将应用程序与依赖项捆绑在一起,并以一种轻量级的方式运行在不同的环境Docker容器的关键优势在于能够轻松地在不同的环境部署应用程序,达到开发人员和运维人员的持续整合、持续部署和持续交付。 Docker Compose是一种工具,它允许用户定义和运行多个Docker容器。使用Docker Compose可以轻松地配置容器之间的网络连接和依赖关系,使得多个Docker容器能够协同工作,从而形成一个完整应用程序。 连接本地数据库时,可以使用Docker Compose配置文件定义数据库容器和应用程序容器之间的连接。在Docker Compose配置文件,可以指定数据库容器要映射到的本地端口,以及应用程序容器如何连接到本地数据库。例如,下面是一个简单的Docker Compose配置文件,用于连接一个MySQL数据库和一个PHP应用程序: version: '3.1' services: db: image: mysql:latest ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: example_password php: build: . ports: - "80:80" depends_on: - db environment: DB_HOST: db DB_USER: root DB_PASSWORD: example_password 在上面的Docker Compose配置文件,我们定义了两个服务:一个MySQL数据库服务和一个PHP应用程序服务。数据库服务的镜像是MySQL的最新版。我们将其映射到本地端口3306,并设置了MySQL的root密码。PHP应用程序服务使用Dockerfile进行构建。我们将其映射到本地端口80,并指定它依赖于数据库服务。然后我们通过环境变量将应用程序容器连接到本地数据库。 总之,Docker容器Docker Compose的使用使得我们能够轻松地集成和部署多个容器,包括本地数据库,使得整个应用程序具有高效性、可靠性和扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值