启动Docker后ssh连接自动断开且无法连接的问题

CentOS7.9在启动Docker之后会出现卡死,ssh远程连接(XShell)自动断开且无法再次连接,仅重启后方能连接,但启动Docker之后依旧出现前面的相同情况的问题解决方案

启动Docker后ssh连接自动断开且无法连接的问题

所属分类: 运维
专题标签: 连接 Docker SSH

问题描述

CentOS环境启动Docker后卡住,此后会发现ssh远程连接被断开,且此后无法连接服务器。
具体情况如下图:

必须直接登录环境后,重启才能正常连接ssh。
但是一旦启动Docker还是会出现相同情况。

原因分析

Bridge桥接模式

Docker默认使用Bridge桥接模式,其本质类似于NAT。

错误原因

通过ip addr查看宿主机IP为192.168.1.33
Docker创建了一个虚拟网络桥连,使用了192.168.1.35。
由于Docker的桥接网段和宿主机在一个网段,导致XShell进行ssh访问192.168.1.33直接找到了Docker的网桥IP(192.168.1.35)。
而网桥IP(192.168.1.35)仅有宿主机可以访问,就导致XShell无法进行ssh连接了。

解决手段

修改Docker桥接绑定的ip,使其与宿主机IP不再同一个网段。

方案1:/etc/docker/daemon.json

环境上不一定有这个文件,没有直接vi编辑保存新增即可。

  1. {
  2. "bip": "172.16.0.1/12"
  3. }
  1. # 加载配置
  2. systemctl daemon-reload
  3. # 重启Docker
  4. systemctl restart docker

方案2:/etc/default/docker

  1. vi /etc/default/docker
  2. # 新增或修改
  3. DOCKER_OPTS="--bip=172.16.0.1/12"
  4. # 编辑服务配置
  5. vi /etc/systemd/system/docker.service
  6. # 如果docker.service文件不存在,则看 /lib/systemd/system/docker.service
  7. # 增加生效配置
  8. EnvironmentFile=-/etc/default/docker
  9. ExecStart=/usr/bin/dockerd $DOCKER_OPTS
  10. # 重启Docker
  11. systemctl restart docker

生效成功

补充阅读

局域网保留网段:

  • 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