docker-proxy端口映射失败,无法被telnet通
各位大虾好!
我在阿里云服务器里启动一个容器(docker版本18.06.1-ce, build e68fc7a),命令如下:
docker run --detach -it --publish 3030:3000/tcp -v 宿主机文件夹:容器文件夹 --name 容器名称 --restart always centos:latest /bin/bash
容器启动成功,docker ps -a查看端口映射也没有问题:
但是在netstat -ntpl里查看3030端口协议是TCP6的,如图:
现在其他服务器无法通过公网访问这个宿主机3030端口,请问怎么办?
公网权限是有的,如图:
云服务器的安全组也对0.0.0.0/0开放了3030端口:
服务器里面的防火墙iptables和seliunx都是正常的,如图:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
我猜这个问题应该是你的宿主机没有公网ip的原因
刚刚没有仔细看,docker 的端口映射是使用 iptables 实现的,,你使用
iptables -L
命令默认显示的是 filter 表。。。没有什么参考意义。。你可以使用 iptables-save 命令。。还有,,仔细一看,你的容器,只是简单的运行一个 Bash 进程,你还能指望 telnet 能通嘛。。。
你把容器内部的端口 打开试试
我也遇到类似问题,估计是WARNING: IPv4 forwarding is disabled. Networking will not work.的错误。
1、# vim /usr/lib/sysctl.d/00-system.conf
添加一下代码
2、net.ipv4.ip_forward=1
3、# systemctl restart network
再次创建新容器,外网就可以访问了。
防火墙关掉试一试
我的环境和遇到的情况跟楼主差不多。想问:为什么本机能够telnet通,但是用公网ip就不通呢?
我猜测,你可能是用的其他机器的镜像起来的docker,需要把现有的docker删除然后再重建docker。或者还有一种可能,你的docker的网段和宿主机的网段冲突了。