0
点赞
收藏
分享

微信扫一扫

虚拟机系统故障docker无法正常启动

故障现象

  • CentOS系统启动时出现Failed to mount /sysroot错误,导致系统无法正常启动。
  • 正常进入系统后,docker无法正常使用,出现Failed to connect to containerd: failed to dial "/var/run/docker/containerd/docker-containerd.sock": context deadline exceeded错误。

故障修复

首先我们处理下Failed to mount /sysroot错误,这个错误一般是主机文件系统损坏引起的,可使用xfs-repair命令进行修复。

xfs_repair -v /dev/dm-0 
## 重启服务器
reboot 

如xfs_repair -v /dev/dm-0命令无效,可添加参数L:

## -L参数(-L:强制清空日志,包括元数据更改)此参数可能会丢失文件系统元数据,慎用,使用之前建议先备份元数据。
xfs_repair -v -L /dev/dm-0

到这里,应该可以正常进入系统了。由于我这边的服务是通过docker部署的,发现docker无法正常启动。 谷歌半天没有很好的解决方法,只能重装docker,由于这台服务器无法访问公网,本次采用离线部署docker方式。

## 先卸载可能存在的旧版本docker相关的包或者依赖
yum remove -y docker-ce rpm -e container-selinux 
## 备份原来数据 
mv /var/lib/docker /var/lib/docker.bak 
## 本地电脑下载安装包,然后scp到服务器 
https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz 
## 服务器上解压缩 
tar -zxf docker-19.03.9.tgz 
## 解压的docker文件夹全部移动至/usr/bin目录 
cp -p docker/* /usr/bin 

将docker注册为系统服务:

cat > /usr/lib/systemd/system/docker.service << EOF 
[Unit] 
Description=Docker Application Container Engine 
Documentation=http://docs.docker.com 
After=network.target docker.socket 
[Service] 
Type=notify 
EnvironmentFile=-/run/flannel/docker 
WorkingDirectory=/usr/local/bin 
ExecStart=/usr/bin/dockerd \ 
                -H tcp://0.0.0.0:4243 \ 
                -H unix:///var/run/docker.sock \ 
                --selinux-enabled=false \ 
                --log-opt max-size=1g 
ExecReload=/bin/kill -s HUP $MAINPID 
# Having non-zero Limit*s causes performance problems due to accounting overhead 
# in the kernel. We recommend using cgroups to do container-local accounting. 
LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity 
# Uncomment TasksMax if your systemd version supports it. 
# Only systemd 226 and above support this version. 
#TasksMax=infinity 
TimeoutStartSec=0 
# set delegate yes so that systemd does not reset the cgroups of docker containers 
Delegate=yes 
# kill only the docker process, not all processes in the cgroup 
KillMode=process 
Restart=on-failure 
[Install] 
WantedBy=multi-user.target 
EOF 

重启守护进程:

systemctl daemon-reload 

启动docker服务:

systemct start docker 
systemctl status docker 
systemctl enable docker 

查看docker信息:

# 版本 
docker version 
# 详细信息 
docker info 
举报

相关推荐

0 条评论