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

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

问题描述

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 编辑保存新增即可。

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

方案 2:/etc/default/docker

vi /etc/default/docker
# 新增或修改
DOCKER_OPTS="--bip=172.16.0.1/12"
# 编辑服务配置
vi /etc/systemd/system/docker.service
# 如果docker.service文件不存在,则看 /lib/systemd/system/docker.service
# 增加生效配置
EnvironmentFile=-/etc/default/docker
ExecStart=/usr/bin/dockerd  $DOCKER_OPTS
# 重启Docker
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

更多推荐

章节目录