虚拟机安装docker导致本地无法访问

/ 默认分类Docker / 没有评论 / 461浏览

前言

近期在公司一个测试虚拟机上安装了docker作为测试,一段时间后发现从本地无法访问到该机器了,而通过其他测试机作为跳板可以登进去。在请教负责网络同事后,执行ifconfig命令后发现如下图的一个docker_gwbridge alt 查看本地IP:172.18.162.210,发现公司办公网环境的网段和docker_gwbridge默认使用172.18.0.0/16作为子网范围重复。

遇到这样的问题,我们可以通过修改docker_gwbridge的子网范围,以避免正常172.18.0.0/16网段终端的连接问题或者是在docker所在机器上添加到本地的路由。 这里我们记录一下修改docker_gwbridge的方式

docker_gwbridge介绍

docker_gwbridge接口为使用多主机群覆盖网络的所有容器和任务提供默认网关功能。它是在每个Docker主机上创建的,当它们加入集群时。如果接口docker_gwbridge的IP地址与网络上的地址冲突,可以逐个主机更改该地址。 docker_gwbridge是一个本地桥接网络,在以下两种情况会自动创建:

(1)初始化或者加入一个 swarm 集群时,用来在不同 hosts 主机的不同节点间进行通信;

(2)再容器中的所有网络都不能访问外部时,Docker 会将docker_gwbridge网络加入到容器中,用来访问外部网络或者其他的集群节点。

重建docker_gwbridge网络

(1)我们先来查看下docker中所有网络简短信息:

  docker network ls

alt

(2)然后查看 docker_gwbridge 网络详细信息

  docker inspect docker_gwbridge

alt

(3)删除上面中 gateway_ingress-sbox

 docker network disconnect docker_gwbridge gateway_ingress-sbox -f //需要加-f,否则会说找不到这个容器

(4)删除原有的docker_gwbridge网络

 docker network rm docker_gwbridge

(5)重新创建docker_gwbridge网络 这里将docker_gwbridge改到172.20网段,避免和办公网冲突

 docker network create  \
  --subnet 172.20.0.0/20 \
  --gateway 172.20.0.1 \
  -o com.docker.network.bridge.enable_icc=false \
  -o com.docker.network.bridge.name=docker_gwbridge \
  docker_gwbridge

(6)查看下主机网络信息

 ip add|grep net

再次在本地访问docker所在虚拟机,这时候已经可以访问。

参考地址:https://blog.51cto.com/wutengfei/2342901?cid=727397