端口号在个别环境无法访问,会是什么原因呢?-灵析社区

七安前

最近项目环境的SpringCloud网关在转发某服务请求时,发现总是没有响应。 排查了很久才发现,在SpringCloud网关所在docker容器内执行 curl -v 'http://目标服务地址'时,显示无法建立tcp连接(卡着没响应) root@26825633119e:/# curl -v 'http://10.1.39.119:38080' * Trying 10.1.39.119:38080... * TCP_NODELAY set * connect to 10.1.39.119 port 38080 failed: Connection timed out * Failed to connect to 10.1.39.119 port 38080: Connection timed out * Closing connection 0 curl: (28) Failed to connect to 10.1.39.119 port 38080: Connection timed out 具体就是: 10.1.39.119:38080 端口通过docker容器开了一个服务; 在10.1.39.119 这台主机上面,可以访问 在其他主机 上面, 也可以访问 在其他主机的 docker容器内,也可以访问 但是奇怪就奇怪在, 在 10.1.39.119 上的所有docker容器里,都访问不到 38080 这个端口。 但是 还是10.1.39.119这台机器的docker容器里, 却能访问 这台机器上的 其他服务端口, 比如7100 等等 这会是什么原因呢?防火墙吗?要怎样排查呢?感谢! 补充,10.1.39.119:38080 这个服务的docker-compose文件,如果把 38080端口改成其他小一点的端口号,比如9750, 其他环境的访问就完全正常了。会是什么原因呢?见鬼了

阅读量:210

点赞量:0

问AI
以下内容来自于百度:或许可以帮到您。(本人未亲自确认是否是此原因造成的) Docker 默认允许映射 49152 到 65535 之间的端口,也就是称为“高端本地端口范围”。如果你需要使用大于 32768 的端口,你需要修改 Docker 的配置来允许这样的映射。 修改 Docker 配置允许高端端口映射: 编辑 Docker 的服务文件。 在 Ubuntu 或 Debian 系统上,你可以使用 systemctl 编辑 Docker 服务文件: bash sudo systemctl edit docker.service 在打开的编辑器中,添加或修改 ExecStart 行,添加 -H tcp://0.0.0.0:,其中 是你想要 Docker 监听的端口。 例如,要允许 Docker 监听端口 32770,你会添加: ini [Service] ExecStart= ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:32770 -H unix:///var/run/docker.sock 保存并退出编辑器。 重新加载 systemd 配置,以确保新的服务文件设置生效: bash sudo systemctl daemon-reload 重启 Docker 服务: bash sudo systemctl restart docker.service 请注意,允许 Docker 监听任意端口可能会带来安全风险,因为它将暴露 Docker 守护进程接口给所有网络上的主机。始终确保你的端口访问是通过适当的防火墙规则来限制的。