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

如何在Docker Swarm集群中配置仅内部可访问的端口不对外暴露

Docker Swarm模式下集群内部端口配置方案

你当前使用的ports配置会将容器端口发布到Swarm的 ingress 网络,绑定到宿主机的端口上,因此会对外暴露。要实现仅集群内部可访问,按如下操作即可:

  1. 直接删除配置中的整个ports代码块
    只要你的服务都加入了同一个overlay网络(你配置中的my-network符合要求),同一网络下的所有服务默认可以直接通过服务名+容器内部监听端口互相访问,无需做任何端口映射配置。其他服务访问你这个management服务时,直接使用management:80即可连通。

  2. 可选:显式声明内部使用的端口
    如果需要明确标注服务开放的内部端口,可以添加expose字段,该字段仅作为配置说明,不会额外对外暴露端口:

version: "3.8"
services:
  management:
    image: ${IMAGE}
    env_file:
      - vars.env
    networks:
      - my-network
    # 新增expose字段仅做标注用,可省略
    expose:
      - "80"
    deploy:
      placement:
        constraints: [node.role == manager]
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

networks:
  my-network:
    external: true

补充说明

  • 只有需要对外提供访问的服务,才需要配置ports字段做端口映射。
  • 跨节点的Swarm集群中,只要服务接入同一个overlay网络,就可以直接通过服务名互访,不需要额外配置网络规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:54:03