如何在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
但据说有版本限制,某些版本不支持。

要在Docker容器中设置MySQL数据库,并实现远程连接与管理,你将需要遵循以下步骤:(步骤、代码、mermaid流程图、扩展内容,此处略) 参考资源链接:[Docker安装与配置MySQL 5.7及8.0教程](https://wenku.youkuaiyun.com/doc/1xtaym32iq?spm=1055.2569.3001.10343) 首先,在创建MySQL容器时,你需要指定一个端口映射参数(-p),将容器内部的MySQL端口映射到宿主机的一个端口上。例如,如果你想要远程访问容器内的MySQL服务,可以将3306端口映射到宿主机的某个端口,比如3307: ```bash docker run --name mysql-container -p 3307:3306 -e MYSQL_ROOT_PASSWORD=your_password -d mysql ``` 在这一步,`your_password`是你要设置的MySQL root用户的密码。请确保在实际应用中不要使用过于简单的密码,以保证数据库的安全。 其次,由于容器的IP地址可能动态变化,你还需要获取容器的IP地址。可以使用`docker inspect`命令配合`--format`参数来查找: ```bash docker inspect -f '{{***works}}{{.IPAddress}}{{end}}' mysql-container ``` 获取到容器的IP地址后,你可以在Navicat中设置一个新的MySQL连接。在连接设置中,服务器地址填写容器的IP地址,端口填写你映射的端口(在本例中为3307),用户名为root,密码为之前设置的密码。 最后,完成这些设置后,点击连接测试,如果一切顺利,你应该能够看到Navicat成功连接到Docker容器中的MySQL数据库。现在,你可以像管理普通MySQL服务器一样,对数据库进行查询、修改、删除等操作。 通过这篇《Docker安装与配置MySQL 5.7及8.0教程》,你不仅可以学习到如何进行上述操作,还能掌握如何通过Docker管理MySQL的多个版本。教程详细且操作性强,适合希望在Docker环境中部署和管理MySQL数据库的用户。 参考资源链接:[Docker安装与配置MySQL 5.7及8.0教程](https://wenku.youkuaiyun.com/doc/1xtaym32iq?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值