小知识:docker容器访问宿主机的MySQL操作

背景:

有一个flask项目提供接口,使用docker容器构建并且运行,MySQL宿主机运行,需要在容器中可以让flask连接上宿主机的mysql

使用ifconfig命令可以看到,有一个docker0和eth0,在docker容器中可以通过eth0的IP地址加上端口号(3306)这样就可以连接上宿主机的MySQL了;另外,nginx可以通过docker0的IP地址加上构建容器时指定的端口号进行访问容器。

补充:docker的mysql容器运行正常,但是宿主机却连不上数据库,解决方法来啦

docker运行mysql容器正常,宿主机Navicat却无法连接

我在docker上面执行docker ps显示如下:

%小知识:docker容器访问宿主机的MySQL操作-猿站网-插图

说明我的mysql是正常的,但是我用sqlyog和Navicat都无法连接我的数据库,后来才发现问题所在,之前我在创建mysql容器(docker run –name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6.35)时候虽然成功,但是有一句提示我疏忽了:

%小知识:docker容器访问宿主机的MySQL操作-1猿站网-插图

这里提示网络不可用,所以宿主机无法连接数据库

解决办法:现在输入这个命令vim /usr/lib/sysctl.d/00-system.conf(vim不行的话你就输入vi):

%小知识:docker容器访问宿主机的MySQL操作-2猿站网-插图

马上会出现这个:

%小知识:docker容器访问宿主机的MySQL操作-3猿站网-插图

在末尾添加这句: net.ipv4.ip_forward=1 (添加的指令是这样:先按i 键,接着你就可以操作了)然后保存退出(写好了net.ipv4.ip_forward=1这个命令按esc键,接着Ctrl+: 最后输入wq! 你就保存退出了),你再重启network服务: systemctl restart network 先把刚才那个mysql的容器停止docker stop docker ,再把容器删了docker rm mysql 如下:

%小知识:docker容器访问宿主机的MySQL操作-4猿站网-插图

现在你可以重新创建mysql的容器了,看下效果:

%小知识:docker容器访问宿主机的MySQL操作-5猿站网-插图

是不是没有那个网络不可用的警告了;我用sqlyog连接的,用Navicat连也一样:

%小知识:docker容器访问宿主机的MySQL操作-6猿站网-插图

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/weixin_43303732/article/details/90286699

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:docker 突然不能被外网访问的解决方案

2023-3-23 16:05:11

建站知识

小知识:42u机柜尺寸是多少,可放多少台服务器?

2023-3-23 16:19:59

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索