ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

在Windows里用VMware装CentOS 7并安装Docker:那些官方源停更后不得不说的血泪史

在Windows里用VMware装CentOS 7并安装Docker:那些官方源停更后不得不说的血泪史 没问题这就把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/?release7archx86_64repoosinfrastock 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是多少”。更深层的暗病解决了DNSyum就能正常工作了吗天真。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配DNSnmtui在图形化界面中选择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 allyum makecache注意事项无论哪种方案操作前建议先yum install -y curl wget如果还能装的话。我那次因为一开始连DNS都没通所以只能走物理机投喂路线。四、可复用的经验CentOS 7从零装Docker“扫雷脚本”经过这次踩坑我整理了一个尽可能避开所有已知雷区的安装流程。你可以根据自己的网络情况选择在线或离线方式。完整安装步骤在线通畅版# 1. 确保DNS正常配好 /etc/resolv.conf 或用nmtuiechonameserver 223.5.5.5/etc/resolv.confechonameserver 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 allyum 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 startdockersystemctlenabledocker# 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 allyum 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 allyum makecache注意如果curl报域名无法解析先用nmtui配好 DNS223.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-reloadsystemctl 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 后直接从“换源”那一步开始复制命令就行不会再被那些坑拦住。时间静止不是简史我们下期见。
返回列表