新手提问:docker创建了ubuntu容器,在此容器内搭建了lnmp环境,但宿主机的navicate连接不了容器内的mysql?
问题背景:
docker运行了一个ubuntu容器,在此容器内搭建了lnmp环境,暴露端口号 33066:3306,8080:80
问题:
宿主机的navicate连接容器内的mysql,一直连接不上。

已经尝试的解决方法:
启动了mysql,mysql也开启了远程访问。
容器内部可以ping通宿主机ip。
宿主机添加了route,但仍然不起作用?
真心求教,这种情况,还有什么原因是可能会导致的呢?
关于 LearnKu
你在容器里面能运行mysql,登录进去吗
ip 127.0.0.1
本地和容器的对应端口是什么
是不是暴露端口的时候出问题了呀, 8080 可以访问嘛?
首先你可以把docker run的命令贴出来大家看下
如果端口暴露到宿主机上 ip地址写127.0.0.1就行,
telnet 127.0.0.1 3306不通代表MySQL服务没启动telnet 容器ip 3306代表MySQL不能外部访问telnet 127.0.0.1 33066不通代表端口没映射好你看在那一步出问题吧
如果我理解没错的话,应该是跟容器同一个network才能用容器ip。宿主机去连容器的话,应该是 localhost:33066 或者 127.0.0.1:33066. 可以尝试一下这样连接,有结果告知一下。
mysql没开远程访问?
建议你还是用SSH通道连接吧,这样也不用开启远程登录权限。
dnmp
你确定远程访问设置的对吗,我之前看网上有些教程是错的
最简单的方法:创建容器的时候添加参数
--network host然后把端口映射的参数去掉,意思是容器与宿主机不进行网络隔离,这样用起来就像是本地安装一样。需要建立network
登录服务器供应商后台,查看下服务器防火墙规则(或者网络安全组规则设置),看看有没有开放33066端口。
容器的防火墙 33066 端口开了么
看样子应该是你 MySQL 服务的绑定地址是 127.0.0.1,这样的话即使做了端口映射,宿主机也无法访问容器内的 MySQL 服务。改为 0.0.0.0 就可以了!