6月2日 23:43

Docker 容器网络不通怎么排查?DNS、端口和防火墙问题定位

容器网络问题分三类:容器间不通、容器访问不了外网、外部访问不了容器。按层级排查:DNS → 端口映射 → 防火墙。

容器间通信问题

不在同一个网络:docker network connect my-network container-b。

Docker 内置 DNS 只在同网络内生效。用服务名(ping redis)而不是 IP。ping redis 失败但 IP 能通是 DNS 问题。

端口映射问题

常见错误:忘了 -p 参数、端口冲突、只绑定了 127.0.0.1。

容器访问不了外网

DNS 失败时手动指定:docker run --dns 8.8.8.8。

防火墙拦截

Docker 修改 iptables 实现端口映射。ufw 开启但没放行 Docker 链会拦截流量。确保 DEFAULT_FORWARD_POLICY="ACCEPT"。

网络模式

  • bridge(默认):需要端口映射和 DNS
  • host:直接用宿主机网络,性能好但隔离差
  • none:无网络

生产环境推荐 bridge + 自定义网络。

标签:Docker