一、故障现象
- 环境:CentOS 系统,服务基于 Docker + Docker Compose 部署,容器使用默认
docker0桥接网络。 - 场景:容器需要访问宿主机同网段IP:8080服务。
- 表现:
- 宿主机直接访问
curl -k https://宿主机同网段IP:8080,正常返回响应,网络连通正常。 - 容器内执行相同命令,直接超时,报错
curl: (28) Failed to connect... Couldn't connect to server。
- 宿主机直接访问
- 前置排查:系统防火墙关闭,内核 IP 转发已开启,排除系统层面网络拦截。
二、根因定位
查看 /etc/docker/daemon.json 配置文件,两个核心网络参数被手动禁用,直接导致容器网络转发失效:
json
// 错误配置(故障根源)
"iptables": false,
"ip-masq": false
三、故障原理
1. iptables: false(核心故障点)
Docker 依赖 iptables 实现容器网络转发、路由。 配置为 false → Docker 禁止创建任何网络规则 → 容器数据包无法穿出 docker0 网桥,直接被丢弃。
2. ip-masq: false(核心故障点)
该参数开启 IP 伪装(SNAT 源地址转换) 。 容器使用虚拟内网 IP,访问外部设备必须转换为宿主机物理 IP 才能正常回包。 配置为 false → 关闭地址转换 → 目标设备拒绝响应容器请求。
四、网络架构(完整路径+规则标注)

五、故障解决办法
步骤1:精简并修复 Docker 核心配置
编辑 /etc/docker/daemon.json,删除无用配置 ,仅保留核心参数,修复关键网络配置:
json
{
"ip-forward": true,
"ip-masq": true,
"iptables": true,
"live-restore": true,
"log-driver": "json-file",
"log-opts": {
"max-file": "10",
"max-size": "100m"
}
}
步骤2:重载配置并重启 Docker
环境已开启 live-restore,重启 Docker 不中断运行中的容器:
bash
systemctl daemon-reload
systemctl restart docker
步骤3:重启业务容器
bash
docker-compose down && docker-compose up -d
步骤4:连通性验证
bash
docker exec -it office-preview curl -k https://192.168.1.200:8080