启动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
