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 + 自定义网络。