vmware虚拟机部署docker安装mysql,外部主机无法连接报错

最近在学习docker的相关内容,本身是linux小白,原来上课学习过docker的部署,但已经是一年前的事了。

最近学习的时候,遇到了问题,看着视频部署了docker,安装了mysql,给mysql分配了自定义网络。原本能够在我的主机idea自带的数据库中连接到dockers中的mysql的,但是,我重启了电脑之后,一切都变了。

显示连接超时,这时候我就开始产生误解了,因为主机重启了,那么虚拟机自然也是重启了,虚拟机重启就会导致虚拟机中en33分配的ip出现变更,从而导致mysql 的url中ip地址出现偏差,从而出现连接错误。

但是我当时学艺不精,认为是直接连接docker中mysql的ip+3306端口。

发现无法连接,以为是重启导致的docker部署问题,又将network和mysql装了卸卸了装,无法解决。

最后发现是en33 对应的虚拟机ip地址出现了问题。

总结,对docker理解有问题,连接docker内部的mysql时,外部主机是无法主动访问容器内部的。想要访问容器内部,必须通过虚拟机,让虚拟机来进行自动映射。

比如:

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /opt/mysql/data:/var/lib/mysql \
  mysql

这段代码的 -p 3306:3306实际上就是进行端口映射,外部主机通过en33的ip来访问虚拟机,虚拟机得到3306端口号,从而去访问端口号为3306的容器,这样来建立连接的。具体图示如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值