首页 > 其他分享 >虚拟机系统故障docker无法正常启动

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

时间:2022-12-16 18:32:48浏览次数:51  
标签:repair dm ## 虚拟机 系统故障 服务器 xfs 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 

标签:repair,dm,##,虚拟机,系统故障,服务器,xfs,docker
From: https://blog.51cto.com/wutengfei/5948089

相关文章

  • docker
    1docker入门#虚拟化在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实......
  • Docker的资源控制管理
    一、CPU控制cgroups,是一个非常强大的linux内核工具,他不仅可以限制被namespace隔离起来的资源,还可以为资源设置权重、计算使用量、操控进程启停等等。所以cgroups(Contr......
  • 记一次arm银河麒麟V10部署docker,zabbix
     添加CentOS-7仓库的变量echo7>/etc/yum/vars/releasever为啥是7,我用到的是CentOS-7的软件源,你们用来其他版本的自由设置。不设置该变量,会导致Docker源失效。......
  • Docker网络模式
    一、docker网络概述1、docker网络实现的原理Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP......
  • Docker的容器管理操作
    1、创建容器容器创建:就是将镜像加载到容器的过程。创建容器时如果没有指定容器名称,系统会自动创建一个名称。新创建的容器默认处于停止状态,不运行任何程序,需要在其中发......
  • 初识Docker
    一、Docker概述1、Docker的概念•Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源•Docker是在Linux容器里运行应用的开源工具,是一种轻量级......
  • docker 安装redis并配置外网访问
    docker安装redis并配置外网访问dockerpullredis拉取最新版本的redis,后面也可以加tag指定版本号dockerpullredisdocker安装redis容器(container)安装之前定......
  • 容器逃逸 --with docker.sock
    容器逃逸--withdocker.sock本人对于容器逃逸的基本理解就是用户从容器中逃出去到宿主机里去了。本文意在记录一个使用docker.sock来进行容器逃逸的方法。首先随便......
  • docker学习系列:在centos7上面安装docker
    一、场景最近在折腾安装​​centos7​​​,刚好有一些服务想直接用​​docker​​,每次安装都得找找教程。现在就自己写好教程,给以后备用。二、环境软件版本Centos7三、正文3.......
  • docker swarm 删除节点
    有时临时在dockerswarm集群上增加节点(node3),过后需要删除节点#获取node信息dockernodelsIDHOSTNAMESTATUS......