You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Swarm创建服务后映射端口无法访问、无端口映射问题咨询

Docker Swarm服务端口无法访问排查方案

Swarm模式的端口发布采用服务级别的ingress网络实现,不会把端口直接映射到单个容器上,因此docker ps看不到端口映射属于正常现象,不是操作错误。无法访问8080端口可按以下步骤逐一排查:

  • 检查集群端口放行规则
    确保所有集群节点的防火墙开放以下端口:
    • 2377/tcp:集群管理通信
    • 7946/tcp/udp:节点状态gossip同步
    • 4789/udp:Overlay网络VXLAN流量传输
    • 8080/tcp:业务发布端口
  • 验证服务端口配置是否生效
    执行命令docker service inspect my_service_nginx --format '{{.Endpoint.Ports}}',正常输出会包含{8080 80 tcp}的映射记录。如果无对应记录,可重新创建服务,使用--publish published=8080,target=80,protocol=tcp参数明确指定端口规则。
  • 检查服务运行状态
    执行命令docker service ps my_service_nginx,确认服务副本处于running状态,无异常重启记录。如果副本状态异常,执行docker logs <容器ID>查看容器运行日志,排查服务本身启动错误。
  • 排查端口占用冲突
    执行命令ss -tulpn | grep 8080,确认宿主机8080端口未被其他进程占用。
  • 重建异常Ingress网络
    上述步骤排查均无问题时,大概率是Swarm默认Ingress网络异常,可按以下步骤修复:
    1. 执行docker network rm ingress删除现有Ingress网络
    2. 执行docker network create --driver overlay --ingress --subnet=10.255.0.0/16 --gateway=10.255.0.1 ingress重建Ingress网络
    3. 重启对应服务即可恢复访问

注意:Swarm服务发布的端口支持集群内任意节点IP+端口访问,无需仅访问服务副本所在节点。

内容的提问来源于stack exchange,提问作者Jan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:24:03