新手提问:docker创建了ubuntu容器,在此容器内搭建了lnmp环境,但宿主机的navicate连接不了容器内的mysql?

问题背景:
docker运行了一个ubuntu容器,在此容器内搭建了lnmp环境,暴露端口号 33066:3306,8080:80

问题:
宿主机的navicate连接容器内的mysql,一直连接不上。

新手提问:docker创建了ubuntu容器,在此容器内搭建了lnmp环境,但宿主机的navicate连接不了容器内的mysql?

已经尝试的解决方法:
启动了mysql,mysql也开启了远程访问。
容器内部可以ping通宿主机ip。
宿主机添加了route,但仍然不起作用?

真心求教,这种情况,还有什么原因是可能会导致的呢?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 42

你在容器里面能运行mysql,登录进去吗

3周前 评论
MuBaiYang (楼主) 3周前

ip 127.0.0.1

3周前 评论
MuBaiYang (楼主) 3周前

本地和容器的对应端口是什么

3周前 评论
MuBaiYang (楼主) 3周前
cccyzloong (作者) 3周前
MuBaiYang (楼主) 1天前

是不是暴露端口的时候出问题了呀, 8080 可以访问嘛?

3周前 评论
MuBaiYang (楼主) 1天前
sreio

首先你可以把docker run的命令贴出来大家看下

如果端口暴露到宿主机上 ip地址写127.0.0.1就行,

3周前 评论
sreio (作者) 15小时前
MuBaiYang (楼主) 1天前
sreio (作者) 15小时前
  1. 进到容器里telnet 127.0.0.1 3306不通代表MySQL服务没启动
  2. 宿主机telnet 容器ip 3306代表MySQL不能外部访问
  3. 宿主机telnet 127.0.0.1 33066不通代表端口没映射好

你看在那一步出问题吧

3周前 评论
seth-shi (作者) 3周前
徵羽宫 3周前
seth-shi (作者) 3周前
MuBaiYang (楼主) 1天前
MuBaiYang (楼主) 1天前
seth-shi (作者) 1天前
MuBaiYang (楼主) 1天前
seth-shi (作者) 1天前
MuBaiYang (楼主) 1天前
seth-shi (作者) 1天前
MuBaiYang (楼主) 1天前
seth-shi (作者) 1天前
MuBaiYang (楼主) 1天前
seth-shi (作者) 1天前

如果我理解没错的话,应该是跟容器同一个network才能用容器ip。宿主机去连容器的话,应该是 localhost:33066 或者 127.0.0.1:33066. 可以尝试一下这样连接,有结果告知一下。

3周前 评论
MuBaiYang (楼主) 1天前

mysql没开远程访问?

3周前 评论
MuBaiYang (楼主) 1天前
Mutoulee

建议你还是用SSH通道连接吧,这样也不用开启远程登录权限。

file

3周前 评论
MuBaiYang (楼主) 1天前
风吹枫落

你确定远程访问设置的对吗,我之前看网上有些教程是错的

3周前 评论

最简单的方法:创建容器的时候添加参数 --network host 然后把端口映射的参数去掉,意思是容器与宿主机不进行网络隔离,这样用起来就像是本地安装一样。

3周前 评论

需要建立network

3周前 评论

登录服务器供应商后台,查看下服务器防火墙规则(或者网络安全组规则设置),看看有没有开放33066端口。

1天前 评论

容器的防火墙 33066 端口开了么

1天前 评论

看样子应该是你 MySQL 服务的绑定地址是 127.0.0.1,这样的话即使做了端口映射,宿主机也无法访问容器内的 MySQL 服务。改为 0.0.0.0 就可以了!

15小时前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!