如果使用默认安装方式,Docker 会创建一个网络名称为 docker_gwbridge,网段为 172.18.0.0/16
的子网。由于该网段往往也会使用在正式环境中,当网络发生冲突时,Docker 所在的机器通常将无法正常与外部通信,包括使用 curl
命令等都将无法正常发送请求。
为了解决这个问题,需要将默认的 docker_gwbridge 移除,并重新生成一个其他网段的子网代替。步骤如下:
[root@tv8-ebk-spider-01 ~]# docker network rm docker_gwbridge
但往往无法一次成功,大概率会遇到如下错误:
[root@tv8-ebk-spider-01 ~]# docker network rm docker_gwbridge
Error response from daemon: error while removing network: network docker_gwbridge id xxxxxxxxxxxx has active endpoints
通过 docker network inspect docker_gwbridge
查看详情,在 Container 节点中往往可以看到一个 ingress-sbox 容器,名称为 gateway_ingress-sbox 正在使用该网络。那么按照如下操作断开连接再重新删除即可:
[root@tv8-ebk-spider-01 ~]# docker network disconnect -f docker_gwbridge gateway_ingress-sbox
[root@tv8-ebk-spider-01 ~]#
[root@tv8-ebk-spider-01 ~]# docker network rm docker_gwbridge
docker_gwbridge
docker_gwbridge
网络192.168.16.0/24
,只要与生产环境其他机器没有冲突即可。[root@tv8-ebk-spider-01 ~]# docker network create --subnet 192.168.16.0/24 --opt com.docker.network.bridge.name=docker_gwbridge --opt com.docker.network.bridge.enable_icc=false --opt com.docker.network.bridge.enable_ip_masquerade=true docker_gwbridge
xxxxxxxxxxxxxxxxxxxxxxx
此时网络应该就已经恢复了,可以使用 curl
命令试一下。
[root@tv8-ebk-spider-01 ~]# curl baidu.com
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>
[root@tv8-ebk-spider-01 ~]#