docker容器端口号映射书写错误导致无法访问容器内的服务

docker容器端口号映射书写错误导致无法访问容器内的服务

最近在自学docker,刚好懒得装mysql了,想直接利用容器搞一个mysql就好了,于是利用docker拉取镜像。步骤如下:

#	拉取mysql镜像
docker pull mysql:5.7
# 	查看镜像
docker images
#	启动容器
#	-itd 后台运行等  -p 端口映射  --name  容器名字  -e  启动环境变量(这里设置root账号的密码)
docker run -itd -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

一切行云流水,mysql就这样装好了,用navicat连接一下,没问题。

问题的产生

随后我又想,啥时候搞个集群不是很方便吗?试一下启动多个mysql容器,命令如下:

docker run -itd -p 13306:13306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

然后用navicat连接,各种连接不上。要么是1060或者1061错误。后来各种百度,密码访问权限各种一顿折腾,无果。后来直接受不了了,问问朋友吧。

后来才知道:-p 只是端口映射,我理解成启动的时候不仅端口映射,还会修改容器内服务的启动端口号。内部服务启动端口号要变化必须修改容器内部的配置文件才行,-p启动参数是不行的

所以启动命令应该如下:

docker run -p {映射主机端口}:{需要暴露的容器端口}
#	容器内mysql的启动端口号是3306,所以容器一定是暴露3306端口号(除非修改容器的配置文件,修改mysql的启动端口号)。
docker run -itd -p 13306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

这样navicat就可以连上localhost:13306的mysql服务了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发哥随手记

你的鼓励将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值