全文目录,一步到位
- 1.前言简介
- [2. linux-centos7.9运维异常排查](#2. linux-centos7.9运维异常排查)
-
- [2.1 任意docker指令卡住](#2.1 任意docker指令卡住)
-
- [2.1.1 先看看docker状态](#2.1.1 先看看docker状态)
- [2.1.2 docker没删除干净](#2.1.2 docker没删除干净)
- [2.1.3 可以开始安装docker了](#2.1.3 可以开始安装docker了)
- [2.2 yum报错](#2.2 yum报错)
-
- [2.2.1 报错原因](#2.2.1 报错原因)
- [2.2.2 替换国内阿里镜像源](#2.2.2 替换国内阿里镜像源)
- [2.3 网络报错排查](#2.3 网络报错排查)
-
- [2.3.1 网络测试(IP)](#2.3.1 网络测试(IP))
- [2.3.2 网络测试(DNS解析->域名访问)](#2.3.2 网络测试(DNS解析->域名访问))
-
- [=> 2.3.2.1 正常情况 图片为正常](#=> 2.3.2.1 正常情况 图片为正常)
- [=> 2.3.2.2 异常情况(dns修复)](#=> 2.3.2.2 异常情况(dns修复))
- [2.3.3 测试http/https 请求访问curl测试](#2.3.3 测试http/https 请求访问curl测试)
- [2.4 docker pull拉取失败排查](#2.4 docker pull拉取失败排查)
- [2.5 yum安装net-tools](#2.5 yum安装net-tools)
- [3. 文章的总结与预告](#3. 文章的总结与预告)
-
- [3.1 本文总结](#3.1 本文总结)
- [3.2 下文预告](#3.2 下文预告)
1.前言简介
linux运维异常(总) - 排查与修复(系统yum,docker,网络dns解析等) 在遇到在补充
2. linux-centos7.9运维异常排查
2.1 任意docker指令卡住
2.1.1 先看看docker状态

Active 状态异常:activating (start) 表示 Docker 卡在「启动中」状态,未进入正常的 active (running) 运行状态
试试重启 systemctl restart docker
-> 最终: 不管操作什么 都是卡住
先挨个排除 第一个
资源不足
containerd异常
没删除干净
2.1.2 docker没删除干净
删除步骤
bash
# 1. 列出所有已安装的 docker/containerd/runc 复制输出的包名(
rpm -qa | grep -E 'docker|containerd|runc'
# 2.1 精准卸载
yum remove -y docker-***(替换一下)
# 2.2 批量卸载
yum remove -y $(rpm -qa | grep -E 'docker|containerd|runc' | xargs)
# 3.1 停止所有残留的docker/containerd进程
ps -ef | grep -E "dockerd|containerd|docker" | grep -v grep | awk '{print $2}' | xargs kill -9 2>/dev/null
# 3.2 验证进程是否清理干净(无输出则成功)
ps -ef | grep -E "dockerd|containerd" | grep -v grep
# 4.1 停止并禁用docker服务(即使已卸载,先执行)
systemctl stop docker 2>/dev/null
systemctl disable docker 2>/dev/null
# 4.2 删除docker.service配置文件(核心!)
rm -rf /usr/lib/systemd/system/docker.service
rm -rf /etc/systemd/system/docker.service
rm -rf /etc/systemd/system/docker.service.d # 自定义配置目录
# 4.3 重置systemd配置,刷新服务列表
systemctl daemon-reload
systemctl reset-failed # 清理失败的服务状态
# 4.4 验证服务是否清理(无输出则成功)
systemctl list-unit-files | grep docker
# 5.1 核心数据/配置目录(全部删除,无数据则提示"没有那个文件或目录",忽略即可)
rm -rf /var/lib/docker # Docker核心数据(镜像/容器/存储)
rm -rf /etc/docker # 配置文件目录
rm -rf /var/run/docker # 运行时临时文件(sock文件、pid文件等)
rm -rf /var/log/docker # 日志目录
rm -rf /usr/bin/dockerd # 残留的可执行文件
rm -rf /usr/bin/containerd # containerd残留文件
# 6.1 验证有无进程
ps -ef | grep -E "dockerd|containerd" | grep -v grep
# 6.2 无服务配置
systemctl status docker # 应提示"Unit docker.service could not be found."
# 6.3 无残留目录(可选验证)
ls -ld /var/lib/docker /etc/docker # 应提示"没有那个文件或目录"
2.1.3 可以开始安装docker了
2.2 yum报错

2.2.1 报错原因
CentOS 7 官方镜像源已于 2024 年 6 月 30 日停止维护(EOL),系统默认的 mirrorlist.centos.org 地址失效,导致 yum 无法解析镜像地址、找不到可用的 base 源,进而安装包失败。
2.2.2 替换国内阿里镜像源
bash
# 1. 备份所有centos官方repo文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/CentOS-*.repo.bak 2>/dev/null
# 2. 下载阿里云CentOS7镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 3. 清理旧缓存
yum clean all
# 4. 生成新缓存(不报错即为成功)
yum makecache
# 5. 重新安装yum-utils(下面得也可以,任选其一)
yum install -y yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
# 6. 验证:无报错则说明yum源已修复
yum list yum-utils
2.3 网络报错排查
一步一步试验
2.3.1 网络测试(IP)
图中即为成功,其他均不成功
bash
# 1. ping 谷歌DNS(全球通用,稳定)
ping -c 3 8.8.8.8
# 2. ping 阿里云DNS(国内更稳定)
ping -c 3 223.5.5.5
# 3. ping 百度IP(备选)
ping -c 3 110.242.68.3
2.3.2 网络测试(DNS解析->域名访问)
bash
ping -c 3 www.baidu.com
ping -c 3 www.qq.com
=> 2.3.2.1 正常情况 图片为正常

=> 2.3.2.2 异常情况(dns修复)
Name or service not known
bash
# 1. 备份原有DNS配置
cp /etc/resolv.conf /etc/resolv.conf.bak
# 2. 写入阿里云DNS
echo "nameserver 223.5.5.5
nameserver 223.6.6.6
nameserver 8.8.8.8 # 谷歌DNS(备选)
nameserver 119.29.29.29 # 腾讯DNS(备选)" > /etc/resolv.conf
# 3. 关闭resolv.conf的自动覆盖ps: CentOS7/8默认被NetworkManager改写
chattr +i /etc/resolv.conf
=然后重复上面的dns验证=
2.3.3 测试http/https 请求访问curl测试
用curl访问百度HTTPS(返回状态码200即正常) -I 只返回响应头,速度快
bash
curl -I https://www.baidu.com
如果不通 则开放防火墙
bash
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
2.4 docker pull拉取失败排查
2.4.1设置一下docker仓库
使用用国内镜像, 默认没有这个文件
bash
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors":
[
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
EOF
然后在操作相关指令
bash
# 1. 重新加载Docker守护进程配置
systemctl daemon-reload
# 2. 启动Docker服务
systemctl restart docker
# 3. 验证配置是否生效
docker info
测试一下
bash
docker pull hello-world
2.5 yum安装net-tools
安装 net-tools(包含 netstat、ifconfig、route 等常用网络命令)
bash
# 安装 net-tools
yum -y install net-tools
# 查看所有监听端口(常用命令,验证 netstat 正常)
netstat -tuln
# 查看 netstat 版本(可选)
netstat -V
3. 文章的总结与预告
3.1 本文总结
linux异常总结 使用中遇到得各种问题 记录一下,在遇到再补充
3.2 下文预告
无
@author: pingzhuyan
@description: ok
@year: 2024
