企业级docker网络安全配置的核心目标是隔离可控、访问最小、通信可验、行为可审计:通过创建专用用户定义桥接网络替代默认bridge,禁用容器网络特权(如net_admin、net_raw),结合iptables、cni插件(calico/cilium)和mtls加密实现细粒度访问控制与通信加密。

企业级 Docker 网络安全配置的核心目标是:**隔离可控、访问最小、通信可验、行为可审计**。不是简单启用或禁用某个功能,而是通过多层网络策略协同,把攻击面压缩到必要边界。
创建专用用户定义桥接网络
避免使用默认 bridge 网络(docker0),它允许容器间无限制互通,且与宿主机共享子网。
- 用 自定义桥接网络 隔离业务域:
docker network create --driver bridge --subnet 172.20.0.0/16 --gateway 172.20.0.1 secure-app-net - 为不同环境(如 dev/staging/prod)或微服务域(auth、api、db)分别建网,禁止跨网通信
- 禁用容器自动暴露端口:
--icc=false(已弃用,但需在 daemon.json 中设"icc": false)
严格控制容器网络能力
容器不应拥有完整网络栈权限,尤其要限制其干扰宿主机或绕过防火墙的能力。
- 启动时显式关闭网络特权:
docker run --network secure-app-net --cap-drop=NET_ADMIN --cap-drop=NET_RAW ... - 禁用 IPv6(若业务无需):
--sysctl net.ipv6.conf.all.disable_ipv6=1 - 对数据库等敏感服务容器,添加
--network-alias db-primary并配合 DNS 策略,避免 IP 直连
启用网络策略与访问控制
Docker 原生不支持细粒度 ACL,需结合外部机制实现策略落地。
- 使用 Docker 的 user-defined network + iptables 规则 实现入站/出站过滤:
iptables -A INPUT -i docker0 -p tcp --dport 5000 -j DROP(屏蔽宿主机对容器非授权端口访问) - 在容器内部署轻量代理(如 Envoy Sidecar)做 mTLS 双向认证,替代明文 HTTP 调用
- 生产环境推荐接入 CNI 插件(如 Calico 或 Cilium),支持 NetworkPolicy CRD,实现 Pod/Container 级策略编排
加密关键网络通信链路
即使在内部网络,也应默认加密——防嗅探、防中间人、防横向移动。
- 所有跨容器 API 调用强制使用 HTTPS 或 gRPC over TLS;证书由企业 PKI 统一签发
- 私有镜像仓库(如 Harbor)必须启用 HTTPS + Token 认证,禁用 HTTP 拉取
- Docker Daemon 远程 API 必须关闭未加密 socket(
hosts=["unix:///var/run/docker.sock"]),如需远程管理,启用 TLS 双向认证并限定客户端证书白名单











