centos中docker映射出来的端口被tcp6监听,而没有被tcp监听导致ip+端口无法进行访问

如图,我通过docker构建容器时,映射出来的端口是8081,但是通过ip+8081无法访问,在检查了一遍安全组规则是否开放,以及百度以后查到是由于端口被tcp6监听,没有被tcp监听到导致的。

按照如下教程对tcp6进行关闭,并重启httpd:
https://www.cnblogs.com/brady-wang/p/10495341.html
文中命令如下:
sysctl net.ipv6.conf.all.disable_ipv6=1
systemctl restart httpd

重新访问依然打不开。百度出来的其他方案也和上面这个类似,试过几个没有效果,不知道是不是步骤不对的原因。
由于服务器是新添置的,httpd是没有的,查了一下才知道需要安装Apache。(这里其实不太清楚为什么需要这么做,毕竟, 我只是构建一个容器,还要因为一个命令安装Apache么)

早些时候用docker没遇到过这个问题,都是映射出来直接就能访问了,于是打开了以前的一个服务器,上面也是通过docker部署了一个站点,容器都是运行的,只是和这个也一样无法再在浏览器访问了。通过netstat -nlpt查看,发现那边的也是tcp6。

服务器的镜像版本是:CentOS7.6 (安全组入方向已开放所需端口)
docker是通过命令一键安装的(Docker version 19.03.12):
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

enmmmm暂时没有补充了,希望遇到过的大佬指点一下。

回答

问题补充:

又重新执行了一遍命令,最后显示的还是tcp6......我裂开了。


2020年10月13日11:18:37
之前部署.net core容器的服务器是正常的,webapi可以访问。上次没访问成功是我记错路径了。所以这个问题现在可以缩小范围了。当使用docker部署jenkins时,会存在端口被tcp6监听而无法访问的情况。具体原因后续还在跟进。
总结了一下几个点:
1.防火墙是关的。
2.服务器端口是开放的。
3.netstat -nlpt中显示端口被tcp6监听,无tcp监听。
4.不用docker部署,直接在服务器部署是可以的(另外一台服务器就是这么干的)

以上是centos中docker映射出来的端口被tcp6监听,而没有被tcp监听导致ip+端口无法进行访问的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>