google一直搜索直到看到这篇文章https://www.365seal.com/y/M1vLDNoxvx.html,里面的一条命令:
我把它替换成curl http://你自己的服务器公网IP地址:2375/info
报以下错误:
curl: (7) Failed connect to 101.32.xxx.xxx:2375; No route to host
继续google尝试解决这个错误,搜到这篇文章: https://www.jianshu.com/p/aef8903a88ee
执行完后再次尝试连接docker竟然通了!
原因可能真如文章里所说 icmp(Internet Control Message Protocol)被禁用
了导致的
查看iptables是不是有防火墙的设置命令:
iptables -L INPUT --line-numbers(line前面两个杠)
果然有这条规则:
7 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
删除命令:
iptables -D INPUT 7
当然删掉这条记录是会有风险, icmp协议的开启可能会导致他人对此服务器进行ping攻击
查看icmp状态 (0为开启 1为禁用)
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
更改icmp状态
echo "1">/proc/sys/net/ipv4/icmp_echo_ignore_all;(英文分号)
echo "0">/proc/sys/net/ipv4/icmp_echo_ignore_all; (英文分号)
如果你不小心执行了上条命令删除了,添加回来就是了
-A INPUT -j REJECT --reject-with icmp-host-prohibited(reject前面两个杠)
最合理的解决办法还是在iptables设置只允许指定ip地址访问指定端口
iptables -I INPUT -s 39.170.xxx.xxx(本机公网IP地址) -p tcp --dport 2375 -j ACCEPT (-I不是-l,大写i)
ok,没问题,可以连接上了
注意:本文归作者所有,未经作者允许,不得转载