怎么配置 Docker 网络以适配容器化应用在生产环境中运行实战

生产环境 Docker 网络需用自定义 bridge 替代默认 docker0,配置子网、网关与 DNS;跨主机必须用 overlay(Swarm/K8s);对外暴露须限端口、禁 0.0.0.0 绑定,前置反向代理;后端服务禁宿主机映射,仅内网通信;安全加固需禁 NAT、降权、配防火墙。

怎么配置 docker 网络以适配容器化应用在生产环境中运行实战

生产环境的 Docker 网络配置不能只靠默认 bridge,得兼顾隔离性、可发现性、跨主机通信能力与安全可控性。核心是选对驱动、建好自定义网络、配准通信规则,而不是直接暴露或共享宿主机网络。

用自定义 bridge 网络替代默认 docker0

默认 docker0 网桥不支持容器名自动解析、子网固定难、iptables 规则杂乱,不适合生产。

  • 创建带子网、网关和 DNS 支持的桥接网络:
    docker network create --driver bridge <br>  --subnet 192.168.50.0/24 <br>  --gateway 192.168.50.1 <br>  --opt com.docker.network.bridge.name=prod-bridge <br>  prod-network
  • 启动容器时显式指定该网络:
    docker run -d --name api --network prod-network -p 8080:8080 my-api:prod
  • 同一网络下的容器可直接用容器名通信(如 curl http://api:8080/health),无需 IP 或端口映射

跨主机服务必须用 overlay 网络(Swarm 或 Kubernetes)

单机 bridge 无法打通多台物理机或云服务器上的容器。生产集群必须启用 overlay 驱动。

  • 初始化 Swarm 模式(至少一台 manager):
    docker swarm init --advertise-addr 10.0.1.10
  • 创建 overlay 网络(自动跨节点):
    docker network create -d overlay --attachable prod-overlay
  • 部署服务并接入该网络:
    docker service create --network prod-overlay --name web nginx:alpine
  • 所有加入 Swarm 的节点上,容器都能通过嵌入式 DNS 按服务名互通

对外暴露服务要严格控制端口与协议

避免全量 -p 80:80 映射,尤其在公网宿主机上。

  • 只映射必要端口,禁用默认绑定到 0.0.0.0
    docker run -p 127.0.0.1:8080:8080 ...(仅本机可访问)
  • 生产 Web 服务建议前置反向代理(Nginx / Traefik),容器内部只监听 localhost:8080,由代理统一处理 TLS、限流、WAF
  • 数据库等后端服务禁止映射到宿主机端口,应仅通过 overlay 或自定义 bridge 内部通信

安全加固:禁用非必要网络能力

减少攻击面,从网络层开始约束容器行为。

  • 对无外网需求的服务,禁用 NAT 和外联能力:
    docker run --network prod-network --sysctl net.ipv4.ip_forward=0 ...
  • 敏感服务使用 --read-only + --tmpfs /run 防止写入磁盘
  • 限制容器可调用的内核能力:
    --cap-drop=ALL --cap-add=NET_BIND_SERVICE(仅允许绑定端口)
  • 配合 iptables 或主机防火墙(如 ufw)限制宿主机入向端口,例如只放行 22、80、443、Swarm 端口(2377、7946、4789)

文章来自机圈观察员网,发布者:,转载请注明出处:https://www.jqgcy.com/shoujipingce/31945.html

三星S21 Ultra变焦拍照不清晰怎么办 三星手机长焦镜头使用技巧
上一篇 2026-06-25 10:50
摩托罗拉edge 70怎么查看剩余存储空间 摩托罗拉edge 70文件管理教程
下一篇 2026-06-25 10:50

相关推荐