没问题,这就把VMware Authorization Service的那篇问答合并进来。我把它作为整个“装系统 → 装Docker”流程中的前置问题一,放在装系统之后、进CentOS之前。这样整个“从Windows物理机到CentOS 7 + Docker”的经验,就变成一个完整、可复盘的闭环了。
其他部分完全按“时间静止不是简史”的风格来组织,口语化、有故事线,下面直接上正文。
在Windows里用VMware装CentOS 7并安装Docker:那些官方源停更后不得不说的血泪史
本以为装个Docker也就几分钟的事,结果却被“VMware Authorization Service”和“Could not resolve host”轮番教做人。绳子专挑细处断,问题总在你以为最稳的地方冒出来。
一、从“装个Docker而已”说起:问题与契机
在最近做虚拟机实验时,我需要在Windows上用VMware Workstation新建一台CentOS 7虚拟机,然后装好Docker环境。本以为这是个轻车熟路的活儿——挂载ISO、选“最小安装”、配好网络,然后几条yum命令收工,结果却着实让我头疼了一整个下午。
事情是这样开始的:
我按流程在VMware Workstation里新建虚拟机、挂载CentOS-7-x86_64-DVD-2009.iso,一步一步配置,创建了一个普通用户chy。系统装完后,我满怀信心地点了一下“开启此虚拟机”,结果弹出来一个完全没想到的对话框:
VMware Workstation 未能启动 VMware Authorization Service。您可以尝试手动启动 VMware Authorization Service。如果此问题仍然存在,请联系 VMware 支持部门。
我当时第一反应是:我才刚建好虚拟机,连系统还没进去,怎么就给我看这个?
问了一下身边用过VMware的同事,得到的答复是:“你Windows里那个VMware的服务没启动。直接去services.msc里找到VMware Authorization Service,启动一下就好了。”
我照着操作,找到服务——启动。然后重新打开VMware Workstation,再次点“开启此虚拟机”:
进去了。
看着CentOS 7的启动日志在控制台上往下刷,我心里默默记下一笔:这是一颗隐藏的雷,新装VMware、新装虚拟机、或者Windows更新之后,都很有可能踩到。要先扫雷,再往前走。
后来跟朋友聊到这个经历,朋友还问了一句:“当时你慌不慌?”我的回答是:“慌倒不慌,就是觉得——这玩意儿明明应该自己跑起来的,怎么还得让我手动捅一下?”
二、探案过程:从“能ping通外网”到“DNS的背叛”
系统顺利进去了,接着我按着记忆中的Docker安装步骤,开始了第一行命令:
sudoyuminstall-yyum-utils device-mapper-persistent-data lvm2结果终端弹出了我天真地以为不会遇到的提示:
chy is not in the sudoers file. This incident will be reported.好吧,小问题,切到root用户继续。可当我用root再次执行时,更大的坑来了:
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; Unknown error"不光yum挂了,连我后来尝试的一键换源脚本也报curl: (6) Could not resolve host: file.tsyvps.com。
那一刻,我意识到事情并不简单。
原始现象
执行ping 8.8.8.8居然通了,说明网络物理连接是正常的。但是一ping域名就炸:
pingwww.baidu.com ping: unknownhostwww.baidu.com这到底是为什么呢?我们来一探究竟。
我的理解是:能ping通IP却无法解析域名,典型的DNS配置缺失或错误。而yum报错里的mirrorlist.centos.org无法解析,本质上也是同一个病根——系统不知道去哪里问“这个域名对应的IP是多少”。
更深层的暗病
解决了DNS,yum就能正常工作了吗?
天真。CentOS 7已经在2024年6月30日正式结束生命周期(EOL),官方源已经停止维护。也就是说,就算DNS恢复正常,那个mirrorlist.centos.org也早就不提供可靠的软件源了。这就像你拿着老地址去找一家已经关门的店,路找到了,店没了。
所以问题其实有两个:
- 表层问题:DNS解析失败 → 任何域名都打不开。
- 深层问题:即使DNS好了,官方源也已废弃 → 需要换成国内镜像源。
最尴尬的是:要换源,就得先能用curl或wget下载新的.repo文件;而要下载,又得先解决DNS。死锁了。
现场对话记录
我(挠头):这脚本下不来啊,curl报Could not resolve host。
同事:你先看看能不能ping通8.8.8.8。
我:能通。
同事:那八成是DNS没配,你cat /etc/resolv.conf看看。
我:里面只有一行nameserver还是空的……好家伙。
(此处可插入截图:/etc/resolv.conf 内容为空)
三、解决方案:从“手动配置DNS”到“物理机投喂repo文件”
找到了病根,解决方案就清晰了。我提供了两条路线,最终被我采用的是方案一(手动配置+离线投喂),因为当时网络状况实在不允许在线换源。
方案一:手动配DNS + 物理机拖拽repo文件(最终生效)
步骤1:用nmtui配DNS
nmtui在图形化界面中选择Edit a connection→ 选中你的网卡(一般是ens33)→Edit→ 光标移到<Show>回车展开 → 将IPv4 CONFIGURATION从<Automatic>改为<Manual>→ 在DNS servers处添加223.5.5.5和223.6.6.6(阿里公共DNS,稳定且快)→ 保存退出。
步骤2:重启网络并验证
systemctl restart networkpingwww.baidu.com# 如果能通,说明DNS已生效步骤3:用物理机下载阿里云CentOS 7的repo文件
因为虚拟机此时仍然无法解析mirrors.aliyun.com(如果DNS刚配好就能解析,那可以直接curl;但我当时还遇到了一些奇怪的缓存问题,干脆用物理机下载再拖进去)。
- 在Windows物理机上用浏览器打开:
http://mirrors.aliyun.com/repo/Centos-7.repo - 保存文件名为
CentOS-Base.repo - 通过VMware的拖拽功能(或共享文件夹/U盘)将该文件放入虚拟机的
/tmp目录
步骤4:在虚拟机内替换yum源
# 备份原有repo文件(虽然已经没几个好用的了)mkdir-p/etc/yum.repos.d/bakmv/etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/# 将拖进来的文件放到正确位置cp/tmp/CentOS-Base.repo /etc/yum.repos.d/# 清理并重建缓存yum clean all yum makecache看到输出中从mirrors.aliyun.com拉取元数据后,我就知道——成了。
方案二:DNS修复后一键脚本(网络好的时候可选)
如果配好DNS后虚拟机本身就能正常上网,其实可以更简单:
# 备份并下载阿里云源curl-o/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum clean all&&yum makecache注意事项:无论哪种方案,操作前建议先
yum install -y curl wget(如果还能装的话)。我那次因为一开始连DNS都没通,所以只能走物理机投喂路线。
四、可复用的经验:CentOS 7从零装Docker“扫雷脚本”
经过这次踩坑,我整理了一个尽可能避开所有已知雷区的安装流程。你可以根据自己的网络情况选择在线或离线方式。
完整安装步骤(在线通畅版)
# 1. 确保DNS正常(配好 /etc/resolv.conf 或用nmtui)echo"nameserver 223.5.5.5">>/etc/resolv.confecho"nameserver 223.6.6.6">>/etc/resolv.conf# 2. 备份旧源并下载阿里云CentOS 7源mkdir-p/etc/yum.repos.d/bakmv/etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/2>/dev/nullcurl-o/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 3. 添加EPEL源(可选,但推荐)curl-o/etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo# 4. 清理缓存并更新yum clean all&&yum makecache# 5. 安装Docker依赖yuminstall-yyum-utils device-mapper-persistent-data lvm2# 6. 添加Docker CE源(阿里云镜像)yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 7. 安装Dockeryuminstall-ydocker-ce docker-ce-cli containerd.io# 8. 启动并设置开机自启systemctl startdocker&&systemctlenabledocker# 9. 验证(如果能看到Hello from Docker!就说明完全成功)dockerrun hello-world离线投喂版核心命令(当虚拟机彻底无法拉取任何资源时)
# 在能上网的物理机上提前下载好以下文件:# - CentOS-Base.repo (http://mirrors.aliyun.com/repo/Centos-7.repo)# - epel.repo (http://mirrors.aliyun.com/repo/epel-7.repo)# 通过VMware拖拽或scp传到虚拟机内,然后执行:cp/tmp/CentOS-Base.repo /etc/yum.repos.d/cp/tmp/epel.repo /etc/yum.repos.d/ yum clean all&&yum makecache额外提醒:
- 创建普通用户后,建议直接用
root操作省去sudo烦恼,或者将用户加入wheel组:usermod -aG wheel chy - 虚拟机网络模式推荐NAT模式,VMware的DHCP服务需保持开启
五、我有话说
这次经历让我深刻体会到两件事:
第一,CentOS 7真的老了。官方停更之后,所有依赖mirrorlist.centos.org的工具链都会连锁崩塌。如果你只是本地学习,换源续命没问题;但如果是生产环境,强烈建议迁移到Rocky Linux、AlmaLinux或Anolis OS。
第二,AI像一面镜子,它给出的脚本不一定能直接跑通。这次我试着让GPT帮我写一键换源脚本,结果因为没考虑DNS失效的情况,照样报curl: (6) Could not resolve host。最后还是得靠自己分步诊断:ping IP → ping域名 → 检查DNS → 检查源状态。顺序对了,问题就水落石出。
另外,VMware Authorization Service 这颗“前置的雷”,其实给了我很深的启发:很多你以为是“装完系统之后”的问题,根源可能发生在“开启虚拟机之前”。没有这个经验,我可能会在CentOS里面反复调yum、查网络,绕很大一个圈子。而现在这份“从Windows物理机到CentOS 7 + Docker”的经验,已经是一个完整的闭环了。如果你也在Windows上用VMware装CentOS 7,希望这篇能帮你跳过这几颗雷。
绳子专挑细处断,技术人的耐心也是这样被磨出来的。
没问题。我把踩坑之后最终稳定可用的Docker安装步骤,单独拎出来总结成一个**“快速重装卡片”**。下次你再在CentOS 7上装Docker,直接照着这个顺序执行就行,不用再把整篇博客从头看一遍。
我会保持“时间静止不是简史”的风格,但突出命令块+注释+注意事项,方便你直接复制。
附:CentOS 7 安装 Docker 稳定版(踩坑后最终沉淀版)
适用场景:Windows + VMware 新装 CentOS 7 虚拟机,已解决网络和 yum 源问题后的纯净环境。
原则:先换源 → 再装 Docker → 最后验证。
一、换源(阿里云,CentOS 7 必需)
# 1. 备份旧源(可选,但推荐)mkdir-p/etc/yum.repos.d/bakmv/etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/2>/dev/null# 2. 下载阿里云 CentOS 7 源curl-o/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 3. 清理并重建缓存yum clean all&&yum makecache注意:如果
curl报域名无法解析,先用nmtui配好 DNS(223.5.5.5/223.6.6.6),或者用物理机下载.repo文件拖进虚拟机。
二、安装 Docker
# 1. 安装必要依赖yuminstall-yyum-utils device-mapper-persistent-data lvm2# 2. 添加 Docker CE 仓库(阿里云镜像)yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 3. 安装 Docker 本体yuminstall-ydocker-ce docker-ce-cli containerd.io# 4. 启动 Docker 并设置开机自启systemctl startdockersystemctlenabledocker# 5. 验证(看到 Hello from Docker! 即成功)dockerrun hello-world三、可选优化(镜像加速 + 免 sudo)
# 配置阿里云镜像加速器(替换成你自己的加速地址)mkdir-p/etc/dockertee/etc/docker/daemon.json<<-'EOF' { "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] } EOFsystemctl daemon-reload&&systemctl restartdocker# 让普通用户免 sudo 运行 docker(替换 chy 为你的用户名)usermod-aGdockerchy# 然后重新登录该用户即可四、常用命令速查(方便下次操作)
| 用途 | 命令 |
|---|---|
| 查看 docker 状态 | systemctl status docker |
| 拉取镜像 | docker pull nginx:latest |
| 运行容器 | docker run -d --name mynginx nginx |
| 查看运行中的容器 | docker ps |
| 停止容器 | docker stop mynginx |
| 删除容器 | docker rm mynginx |
| 删除镜像 | docker rmi nginx |
保存好这一段,下次你在 VMware 里新装 CentOS 7 后,直接从“换源”那一步开始复制命令就行,不会再被那些坑拦住。
时间静止不是简史,我们下期见。