【docker swarm】docker swarm 中的网段冲突问题

在公司一个环境CentOS7上安装完docker后,发现windows上 xshell的ssh突然断开无法连接,需要经过和服务器同网段的其他机器才能ssh上去。

经排查,原来此环境windows机器的IP 为172.17.79.88,安装docker(1.13.0)后docker创建了一个虚拟网络桥连,恰好也使用了172.17.1.0/16的网段,172.17.79.88直接找到了docker的网段IP(172.17.0.1),而部署目标服务器IP,从而导致无法通过Xshell ssh上目标服务器!

既然找到了原因,我们就让docker避开172.17.18.0/24网段,改成172.20.1.0/16,也避免与一般的家用路由器IP段相撞。

docker0:  mtu 1500 qdisc noqueue state DOWN

link/ether 02:42:6c:a8:3d:34 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.1/16 scope global docker0

valid_lft forever preferred_lft forever

局域网保留地址:

A类:10.0.0.0/8      10.0.0.0~10.255.255.255

B类:172.16.0.0/12  172.16.0.0~172.31.255.255

C类:192.168.0.0/16  192.168.0.0~192.168.255.255

1.修改配置文件

# vim /etc/default/docker

#添加1行:

DOCKER_OPTS="--bip=172.20.1.0/16"

#vim /etc/systemd/system/docker.service

# 如果docker.service文件不存在,则看 /lib/systemd/system/docker.service

[Service] 

EnvironmentFile=-/etc/default/docker

ExecStart=/usr/bin/dockerd  $DOCKER_OPTS

2.重启docker

# systemctl restart docker

3.如果docer已经初始化为了docker集群,那么需要拆掉swarm集群,删除各个节点相应的

gw_bridge,然后重建gw_bridge

#  docker swarm leave

# docker swarm leave --force

# docker network rm  gw_bridge

docker swarm无法创建默认的gw_bridge

公司将172相关网段预占用,手动创建,需要指定subnet

# docker network create  --driver=bridge    --subnet 172.21.0.1/24  docker_gwbridge

这样就可用正常使用docker service create创建服务了。

该网段被占用可能导致的另外一个问题就是,docker run一个容器的时候提示:

Error starting daemon: Error initializing network controller: Error creating default "bridge" network: failed to parse pool request for address space "LocalDefault" pool "" subpool "": could not find an available predefined network 

解决办法,通过指定--bip启动docker daemon。


你可能感兴趣的:(【docker swarm】docker swarm 中的网段冲突问题)