马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、报错现场
在 CentOS 7 上准备安装 Docker,先装依赖包:
yum install -y yum-utils device-mapper-persistent-data lvm2
结果抛出一段:
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock
error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"
读到 Could not resolve host,第一反应应该切换到网络层面,而不是继续跟 yum 较劲。注意这跟"DNS 配错"不同——这里是解析整个 mirrorlist 域名都不通,通常意味着机器压根没连通外网。
二、先确认是 yum 本身没问题
跑一下帮助信息,确认 installed 的 yum 是完整的:
yum --help
能正常打印帮助,说明 yum 组件本身没坏,问题在"能不能拿到网络资源"这一层。
三、查 DNS 配置
先看解析器配了什么:
vi /etc/resolv.conf
vi 的基本操作:按 i 进入编辑模式,改完按 Esc,再输入 :wq 保存退出。如果里面 nameserver 指向的是一个内网 DNS,或者整块被清空了,补上公共 DNS 就行,比如:
nameserver 114.114.114.114
nameserver 8.8.8.8
如果 /etc/resolv.conf 是只读的属性,先看一下权限;在 systemd 托管的系统里这个文件其实是软链接,改之前先确认它指向哪,别改到临时文件上白改。
四、查网卡是否真的起来了
作者在源码里写的是 ens33 这种命名,实际机器可能是 ens160、ens192 之类,进配置目录看一眼:
ls /etc/sysconfig/network-scripts/
找到自己那张网卡的配置文件(后缀 random,别照抄文件名),确认开机自启选项是开着的:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
把 ONBOOT 改成 yes,然后重启网络:
service network restart
再用一条最朴素的命令验证外线:
ping -c 4 www.baidu.com
通了就说明网络层恢复,yum 后面自然能跑。这一步很多运维会跳过,然后一直在源头上打转,白白浪费时间。
五、重新配一遍 yum 源(可选但推荐)
即使网络恢复了,指向官方 mirrorlist 的源也经常拿不到数据。换成国内镜像最省事——先备份:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
再下载对应的新源,按系统版本选一条:
# CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 或
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
CentOS 6、5 同理把文件名换成 Centos-6.repo、Centos-5.repo。装完wget 不存在的话,上面的 -O 参数要跟在完整 URL 前面,写反了会生成一堆奇怪的文件名。
六、回到 Docker 安装本身
网络与源都通了之后,把依赖装齐:
yum install -y yum-utils device-mapper-persistent-data lvm2
然后才是正题——添加 Docker 官方仓库、装引擎、启动服务。老系统上装 Docker 还有一个经典坑:内核版本偏低,跑新版本 Docker 会报 cgroups 或 overlay2 相关错误,这时候要么升级内核,要么退到匹配的老版本 docker-ce。
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl enable --now docker
docker info
七、判断思路复盘
把这次排障串起来看,其实就是一条因果链:curl#6 Could not resolve host 是现象 → 说明解析不到域名 → 先看 /etc/resolv.conf 有没有 nameserver → 再看网卡 ONBOOT 是不是 yes → 重启网络 ping 验证 → 最后顺手把官方源换掉。凡是带 "resolve host" 或 "Failed to connect" 的 yum 报错,都不要先怀疑包源本身,先把网络这条线验通,能省掉一多半的无效排查。
qidao123.com企服评测-应用市场 编辑提示 |