时间:2021-05-19
有一个flask项目提供接口,使用docker容器构建并且运行,MySQL在宿主机运行,需要在容器中可以让flask连接上宿主机的mysql
使用ifconfig命令可以看到,有一个docker0和eth0,在docker容器中可以通过eth0的IP地址加上端口号(3306)这样就可以连接上宿主机的MySQL了;另外,nginx可以通过docker0的IP地址加上构建容器时指定的端口号进行访问容器。
补充:docker的mysql容器运行正常,但是宿主机却连不上数据库,解决方法来啦
docker运行mysql容器正常,宿主机Navicat却无法连接
我在docker上面执行docker ps显示如下:
说明我的mysql是正常的,但是我用sqlyog和Navicat都无法连接我的数据库,后来才发现问题所在,之前我在创建mysql容器(docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6.35)时候虽然成功,但是有一句提示我疏忽了:
这里提示网络不可用,所以宿主机无法连接数据库
解决办法:现在输入这个命令vim /usr/lib/sysctl.d/00-system.conf(vim不行的话你就输入vi):
马上会出现这个:
在末尾添加这句: 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 如下:
现在你可以重新创建mysql的容器了,看下效果:
是不是没有那个网络不可用的警告了;我用sqlyog连接的,用Navicat连也一样:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、dockerps列出容器二、dockercp拷贝文件至容器注:docker中宿主机与容器(container)互相拷贝传递文件的方法1、从容器拷贝文件到宿主
场景:在虚拟机的docker容器中安装latest版本的mysql之后,在宿主机中使用navicat连接虚拟机中的mysql出现下图报错:2059:Authen
在应用docker容器的时候,更多的时候我们会把宿主机的目录挂载到docker容器中。在宿主机的文件夹权限隶属于root时,我们需要将文件夹的权限用户进行cho
如何检查Docker容器时区是否与宿主机一致?1、进入宿主机,执行以下命令:#查看宿主机时间[root@localhost~]#date2018年06月27日星
1.Docker与虚拟化Docker容器不使用硬件虚拟化,它的守护进程是宿主机上的一个进程,换句话说,应用直接运行在宿主机内核上。因为容器中运行的程序和计算机的