Linux国内镜像源一键切换脚本与手动配置指南

📅 发布时间:2026/7/12 12:51:06 👁️ 浏览次数:
Linux国内镜像源一键切换脚本与手动配置指南
1. 为什么你需要一个“快”的镜像源如果你刚开始用Linux或者刚装好一个全新的系统第一件事可能就是打开终端想装个软件试试。比如你想装个vim或者curl结果敲下sudo apt update或者sudo yum update后终端里就开始疯狂滚动但速度嘛慢得就像在用2G网络下载高清电影。等了几分钟进度条才爬了一点点最后还可能因为网络超时失败。这种感觉我猜不少人都经历过尤其是服务器在国外或者默认源在国外的时候。这背后的原因很简单。Linux系统无论是Ubuntu、CentOS还是其他发行版它们默认的软件仓库你可以理解为一个巨大的、官方认证的软件超市服务器通常都在国外。你的电脑或服务器每次安装、更新软件都需要从这个“国外超市”拉取数据。物理距离远中间网络节点多速度自然就慢延迟也高还容易因为网络波动导致下载中断。对于国内用户来说这简直是日常开发、运维中的第一个“拦路虎”。这时候“国内镜像源”就是你的救星。你可以把它想象成这个“国外超市”在国内开的一个大型、同步的仓储中心。国内的服务商比如阿里云、腾讯云、华为云、清华大学等会定时通常是每隔几小时从国外的官方仓库把所有的软件包和更新信息完整地“镜像”也就是复制一份到国内的服务器上。当你把系统的软件源地址改成这个国内镜像站的地址后你的所有软件安装、更新请求就不再需要漂洋过海而是直接在国内服务器之间高速完成。下载速度从几十KB/s飙升到几MB/s甚至几十MB/s体验完全是天壤之别。所以给Linux系统换上一个靠谱的国内镜像源是提升效率、减少等待、保证系统更新顺利的基础操作可以说是Linux用户的“必修课”。接下来我会给你两种方法一种是给追求效率、想快速搞定的朋友准备的一键切换脚本另一种是给想了解原理、或者遇到特殊情况需要手动处理的朋友准备的详细手动配置指南。两种方法我都会用最直白的话讲清楚保证你跟着做就能成功。2. 主流国内镜像源我该选哪个在动手之前我们得先挑一个“好超市”。国内提供Linux镜像源的服务商很多各有特色。我根据自己多年的使用经验以及社区里的普遍反馈给你分析几个最主流的你可以根据自己情况选择。阿里云镜像站这应该是目前国内用户量最大、最知名的镜像站之一。它的最大优点是覆盖全、速度快、稳定性极好。几乎支持所有主流的Linux发行版Ubuntu, CentOS, Debian, Fedora等以及各种开发语言的仓库像Python的PyPINode.js的npm。对于新手来说选阿里云基本不会出错它的访问速度和同步及时性都处于第一梯队。我自己的生产环境和测试机大部分都用的阿里云源几年下来非常稳定。腾讯云软件源腾讯云的镜像站后来居上实力也非常强劲。它的网络质量很好特别是在腾讯云服务器内部使用的话速度可以说是“飞一般的感觉”。即使是非腾讯云的机器公网访问速度也很快。它的界面比较清爽文档也清晰。如果你用的是腾讯云服务器强烈建议直接换它的内网源速度优势明显。华为云镜像站华为云的镜像服务同样很优秀尤其在一些企业级场景和特定区域比如华北、华南访问速度有保障。它同样提供了非常全面的发行版支持。如果你对华为云生态有偏好或者服务器在华为云上这也是一个非常好的选择。清华大学开源软件镜像站这是高校背景的镜像站在技术圈内口碑一直很好。它的特点是非常纯粹、干净专注于开源软件本身。除了系统镜像它还提供了大量编程语言、容器、数据库等特定软件的镜像资源非常丰富。对于开发者来说这里是个宝库。速度方面教育网和公网访问都很快。网易163镜像站这是一个老牌的镜像站了很多早期的教程里都会提到它。稳定性不错速度也尚可。不过相比前面几家它在一些新版本发行版的同步上偶尔会稍慢一点点但用于日常使用完全没问题。为了让你更直观地对比我整理了一个简单的表格镜像源主要优势适合场景备注阿里云覆盖全面、速度稳定、社区活跃通用首选特别是阿里云ECS用户新手无脑选这个基本不会踩坑腾讯云网络质量高腾讯云内网极快腾讯云CVM用户或追求极致速度配合内网地址体验最佳华为云企业级支持好区域优化强华为云用户或企业内网环境同样有内网地址可选清华大学资源极其丰富开发者友好需要多种开发环境Python/Go/Docker等镜像技术氛围浓文档专业网易163老牌稳定配置简单对版本新旧不敏感的一般用户经典选择仍有大量用户怎么选呢我的个人建议是如果你是新手或者不想折腾直接选阿里云或腾讯云。它们的综合体验最好。如果你是个开发者经常需要配置Python、Docker、Kubernetes等环境那么可以把清华大学源也加入备选或者针对不同软件使用不同的镜像源这在我们后面讲手动配置时会提到。3. 懒人必备一键自动切换脚本好了理论部分讲完咱们直接上干货。我知道很多朋友看到一堆命令和配置文件就头大心里想的是“有没有一种方法我运行一个命令然后喝杯咖啡回来就搞定了” 还真有这就是一键脚本的魅力。我写了一个通用的Bash脚本它能够自动检测你当前系统的发行版是CentOS还是Ubuntu以及具体版本号然后让你从几个主流镜像源里选一个自动完成备份、下载、配置、更新缓存的全过程。你只需要复制、粘贴、运行。注意使用任何脚本前一个好习惯是先看看脚本内容。你可以用文本编辑器打开我下面给出的脚本确认它做的事情符合你的预期。这既是学习也是安全。#!/bin/bash # Linux国内镜像源一键切换脚本 # 支持 CentOS 7/8/9, Ubuntu 16.04/18.04/20.04/22.04 # 作者一个老运维 set -e # 遇到错误立即退出 # 颜色定义让输出更友好 RED\033[0;31m GREEN\033[0;32m YELLOW\033[1;33m NC\033[0m # No Color echo -e ${GREEN} Linux国内镜像源一键切换助手 ${NC} # 1. 检测系统类型和版本 if [ -f /etc/redhat-release ]; then # CentOS / RHEL / Rocky / AlmaLinux DISTROcentos # 提取主版本号兼容 CentOS Stream VERSION$(grep -oE [0-9]\.[0-9] /etc/redhat-release | head -1 | cut -d. -f1) if [ -z $VERSION ]; then # 尝试其他方式获取比如CentOS Stream 9 if grep -q Stream /etc/redhat-release; then VERSION$(grep -oE [0-9] /etc/redhat-release) fi fi echo -e 检测到系统: ${YELLOW}CentOS ${VERSION}${NC} elif [ -f /etc/lsb-release ] || [ -f /etc/os-release ]; then # Ubuntu / Debian DISTROubuntu # 使用 lsb_release 获取版本号更准确 if command -v lsb_release /dev/null; then VERSION$(lsb_release -rs | cut -d. -f1,2) else # 备用方法 source /etc/os-release VERSION$VERSION_ID fi echo -e 检测到系统: ${YELLOW}Ubuntu ${VERSION}${NC} else echo -e ${RED}错误不支持的操作系统${NC} exit 1 fi # 2. 让用户选择镜像源 echo -e \n请选择要切换的国内镜像源 echo 1) 阿里云 echo 2) 腾讯云 echo 3) 清华大学 echo 4) 华为云 echo 5) 网易163 read -p 请输入数字 (1-5): MIRROR_CHOICE case $MIRROR_CHOICE in 1) MIRROR_NAME阿里云 case $DISTRO in centos) case $VERSION in 7) BASE_URLhttp://mirrors.aliyun.com/repo/Centos-7.repo ;; 8) BASE_URLhttp://mirrors.aliyun.com/repo/Centos-8.repo ;; 9|9) BASE_URLhttp://mirrors.aliyun.com/repo/Centos-9.repo ;; *) echo -e ${RED}不支持的CentOS版本: $VERSION${NC}; exit 1 ;; esac ;; ubuntu) # Ubuntu的源是直接替换sources.list文件内容 MIRROR_URLhttp://mirrors.aliyun.com/ubuntu/ ;; esac ;; 2) MIRROR_NAME腾讯云 case $DISTRO in centos) case $VERSION in 7) BASE_URLhttp://mirrors.cloud.tencent.com/repo/centos7_base.repo ;; 8) BASE_URLhttp://mirrors.cloud.tencent.com/repo/centos8_base.repo ;; 9|9) BASE_URLhttp://mirrors.cloud.tencent.com/repo/centos9_base.repo ;; *) echo -e ${RED}不支持的CentOS版本: $VERSION${NC}; exit 1 ;; esac ;; ubuntu) MIRROR_URLhttp://mirrors.cloud.tencent.com/ubuntu/ ;; esac ;; 3) MIRROR_NAME清华大学 case $DISTRO in centos) case $VERSION in 7) BASE_URLhttps://mirrors.tuna.tsinghua.edu.cn/repo/centos7.repo ;; 8) BASE_URLhttps://mirrors.tuna.tsinghua.edu.cn/repo/centos8.repo ;; 9|9) BASE_URLhttps://mirrors.tuna.tsinghua.edu.cn/repo/centos9.repo ;; *) echo -e ${RED}不支持的CentOS版本: $VERSION${NC}; exit 1 ;; esac ;; ubuntu) MIRROR_URLhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/ ;; esac ;; 4) MIRROR_NAME华为云 case $DISTRO in centos) case $VERSION in 7) BASE_URLhttps://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo ;; 8) BASE_URLhttps://repo.huaweicloud.com/repository/conf/CentOS-8-reg.repo ;; 9|9) BASE_URLhttps://repo.huaweicloud.com/repository/conf/CentOS-9-reg.repo ;; *) echo -e ${RED}不支持的CentOS版本: $VERSION${NC}; exit 1 ;; esac ;; ubuntu) MIRROR_URLhttps://repo.huaweicloud.com/ubuntu/ ;; esac ;; 5) MIRROR_NAME网易163 case $DISTRO in centos) case $VERSION in 7) BASE_URLhttp://mirrors.163.com/.help/CentOS7-Base-163.repo ;; 8) BASE_URLhttp://mirrors.163.com/.help/CentOS8-Base-163.repo ;; # 网易163可能没有官方CentOS 9源这里用阿里云替代并提示 9|9) echo -e ${YELLOW}网易163暂未提供CentOS 9官方源将使用阿里云源替代。${NC}; BASE_URLhttp://mirrors.aliyun.com/repo/Centos-9.repo ;; *) echo -e ${RED}不支持的CentOS版本: $VERSION${NC}; exit 1 ;; esac ;; ubuntu) MIRROR_URLhttp://mirrors.163.com/ubuntu/ ;; esac ;; *) echo -e ${RED}无效的选择${NC} exit 1 ;; esac echo -e \n你选择了: ${GREEN}${MIRROR_NAME}${NC} read -p 是否继续(y/N): CONFIRM if [[ ! $CONFIRM ~ ^[Yy]$ ]]; then echo 操作已取消。 exit 0 fi # 3. 执行切换操作 echo -e \n${GREEN}开始切换镜像源...${NC} if [ $DISTRO centos ]; then # CentOS/RHEL系列处理 echo 备份原YUM源配置文件... sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak.$(date %Y%m%d%H%M%S) 2/dev/null || echo 未找到标准CentOS-Base.repo尝试备份其他文件。 # 备份整个目录更安全 sudo mkdir -p /etc/yum.repos.d/backup sudo cp /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2/dev/null || true echo 下载新的镜像源配置文件... sudo curl -o /etc/yum.repos.d/CentOS-Base.repo -L $BASE_URL if [ $? -ne 0 ]; then echo -e ${RED}下载镜像源配置文件失败请检查网络${NC} exit 1 fi echo 清理旧缓存并生成新缓存... sudo yum clean all sudo yum makecache echo -e ${GREEN}CentOS ${VERSION} 已成功切换至 ${MIRROR_NAME} 镜像源${NC} elif [ $DISTRO ubuntu ]; then # Ubuntu/Debian系列处理 echo 备份原APT源配置文件... sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak.$(date %Y%m%d%H%M%S) # 获取Ubuntu版本代号 if [ $VERSION 16.04 ]; then CODENAMExenial; fi if [ $VERSION 18.04 ]; then CODENAMEbionic; fi if [ $VERSION 20.04 ]; then CODENAMEfocal; fi if [ $VERSION 22.04 ]; then CODENAMEjammy; fi if [ $VERSION 24.04 ]; then CODENAMEnoble; fi # 也支持一下新版本 if [ -z $CODENAME ]; then echo -e ${RED}不支持的Ubuntu版本: $VERSION${NC} exit 1 fi echo 生成新的sources.list文件... sudo tee /etc/apt/sources.list /dev/null EOF # 默认注释了源码镜像以提高 apt update 速度如有需要可自行取消注释 deb ${MIRROR_URL} ${CODENAME} main restricted universe multiverse # deb-src ${MIRROR_URL} ${CODENAME} main restricted universe multiverse deb ${MIRROR_URL} ${CODENAME}-security main restricted universe multiverse # deb-src ${MIRROR_URL} ${CODENAME}-security main restricted universe multiverse deb ${MIRROR_URL} ${CODENAME}-updates main restricted universe multiverse # deb-src ${MIRROR_URL} ${CODENAME}-updates main restricted universe multiverse deb ${MIRROR_URL} ${CODENAME}-proposed main restricted universe multiverse # deb-src ${MIRROR_URL} ${CODENAME}-proposed main restricted universe multiverse deb ${MIRROR_URL} ${CODENAME}-backports main restricted universe multiverse # deb-src ${MIRROR_URL} ${CODENAME}-backports main restricted universe multiverse EOF echo 更新软件包列表... sudo apt update echo -e ${GREEN}Ubuntu ${VERSION} (${CODENAME}) 已成功切换至 ${MIRROR_NAME} 镜像源${NC} fi echo -e \n${GREEN}操作完成你可以尝试运行安装命令测试速度例如${NC} if [ $DISTRO centos ]; then echo sudo yum install -y vim else echo sudo apt install -y vim fi如何使用这个脚本保存脚本在你的Linux电脑或服务器上打开一个文本编辑器比如nano或vim把上面这一大段代码全部复制进去保存为一个文件例如叫change_mirror.sh。赋予执行权限打开终端进入你保存脚本的目录运行命令chmod x change_mirror.sh。这步是告诉系统“这个文件可以当作程序来运行”。运行脚本输入sudo ./change_mirror.sh并回车。sudo是获取管理员权限因为修改系统源需要最高权限。跟着提示走脚本会先告诉你它检测到的系统信息然后让你从1到5选一个镜像源。输入数字回车确认。确认执行脚本会再次问你“是否继续”输入y或Y确认。等待完成接下来脚本会自动完成所有工作备份旧配置、下载新配置、更新缓存。你只需要看着它跑完最后出现成功的提示。这个脚本我加入了比较完善的错误检测和提示比如不支持的版本会明确告诉你下载失败也会报错。对于绝大多数常见的CentOS 7/8/9和Ubuntu 16.04到22.04甚至24.04它都能很好地处理。用这个脚本三分钟就能搞定镜像源切换是不是很方便4. 手动配置详解知其所以然一键脚本虽好但作为学习者我们最好还是了解一下手动配置的原理和步骤。这样万一脚本在某些特殊环境下失效比如极老的系统或者定制化很强的发行版你也能自己动手解决问题。手动配置主要分为两大阵营CentOS以及Red Hat系和Ubuntu以及Debian系。它们的包管理工具和配置文件完全不同。4.1 CentOS/RHEL系列手动配置CentOS、Red Hat Enterprise Linux (RHEL)、Rocky Linux、AlmaLinux这些都使用yum新版本是dnf作为包管理器。它们的软件源配置文件存放在/etc/yum.repos.d/目录下以.repo结尾。默认会有一个CentOS-Base.repo文件这就是我们要修改的核心。核心步骤就四步备份、下载或编辑、清理缓存、重建缓存。第一步备份备份备份这是最重要的好习惯万一新源有问题我们可以瞬间恢复。命令很简单sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak我习惯在备份文件名后面加上日期比如.bak.20231027这样更清晰。第二步获取并替换源文件这里有两种方法。方法A推荐直接下载镜像站提供的现成.repo文件。以阿里云CentOS 7为例sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo或者用curlsudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo-O参数wget或-o参数curl是指定输出文件的位置和名字。这条命令的意思就是“从阿里云下载CentOS 7的repo文件并覆盖保存到系统的/etc/yum.repos.d/CentOS-Base.repo”。方法B手动编辑。如果网络环境特殊无法直接下载或者你想深度自定义可以打开文件手动修改。sudo vi /etc/yum.repos.d/CentOS-Base.repo你会看到文件里有很多以[base]、[updates]等开头的段落每个段落里都有baseurl或mirrorlist这样的行。你需要做的就是把baseurl后面的网址换成国内镜像站的地址。例如把baseurlhttp://mirror.centos.org/centos/$releasever/...换成baseurlhttp://mirrors.aliyun.com/centos/$releasever/...。注意$releasever和$basearch是变量会自动替换成你的系统版本和架构不要改动它们。第三步清理并重建缓存换了新超市地址当然要把旧的商品清单扔掉拉一份新的。命令如下sudo yum clean all # 清理所有旧缓存包括头文件、包文件等 sudo yum makecache # 从新源下载元数据并建立缓存新版的dnf命令是sudo dnf clean all和sudo dnf makecache。执行makecache时你会看到它从你新配置的镜像地址拉取数据速度应该很快。第四步测试运行一个更新或安装命令来验证sudo yum update -y # 更新所有软件包生产环境慎用建议先看更新列表 # 或者安装一个小工具测试 sudo yum install -y epel-release # 安装EPEL扩展仓库如果下载速度飞快没有报错恭喜你配置成功了对于CentOS 8/9步骤完全一样只是下载的repo文件链接中的版本号要变。例如阿里云CentOS 8的链接是http://mirrors.aliyun.com/repo/Centos-8.repo。CentOS 9Stream可能需要特别注意有些镜像站可能使用centos9-stream这样的路径如果遇到问题可以去镜像站官网查看准确的帮助文档。4.2 Ubuntu/Debian系列手动配置Ubuntu和Debian使用apt作为包管理器。它们的软件源配置集中在一个文件里/etc/apt/sources.list。这个文件里每一行都定义了一个软件仓库的地址。我们的任务就是把这些国外的地址注释掉或删除换成国内的。第一步同样是备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak第二步编辑sources.list文件你可以用任何你喜欢的文本编辑器比如nano对新手友好、vim、gedit有图形界面的话。sudo nano /etc/apt/sources.list打开文件后你会看到很多以deb或deb-src开头的行。deb指向二进制软件包deb-src指向源代码包我们一般用不到源码可以将其全部注释掉在行首加#。第三步替换内容这里的关键是知道你的Ubuntu版本的代号。每个Ubuntu发行版都有一个可爱的动物代号比如16.04: Xenial Xerus (好动的非洲地松鼠)18.04: Bionic Beaver (仿生海狸)20.04: Focal Fossa (马岛长尾狸猫)22.04: Jammy Jellyfish (果酱水母)你需要把文件中所有出现archive.ubuntu.com和security.ubuntu.com的网址替换成国内镜像站的地址并且把代号也对应好。例如将Ubuntu 20.04 (Focal) 的源换成阿里云源你需要确保文件里的内容像下面这样以阿里云为例deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse # 源码仓库通常不需要注释掉即可 # deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse注意focal就是20.04的代号。如果你用的是22.04就把所有的focal替换成jammy。一个更省事的办法是直接清空原文件然后把上面这段对应你系统代号的配置粘贴进去。在nano编辑器里可以用CtrlK剪切整行把所有行删掉然后粘贴新内容最后按CtrlO保存CtrlX退出。第四步更新软件列表换好地址后要让apt知道sudo apt update这个命令不会升级任何软件它只是从新的镜像站拉取最新的软件包列表信息。如果看到一串国内的网址如 mirrors.aliyun.com开始快速下载速度很快那就成功了。第五步测试安装sudo apt install -y htop试试安装一个像htop这样的小工具感受一下飞快的下载速度吧。5. 进阶技巧与避坑指南掌握了基本操作后我们来聊聊一些能让你更得心应手的进阶技巧以及我这些年踩过的一些“坑”。5.1 如何验证镜像源是否真的生效有时候换了源感觉速度还是慢怎么确认真的切过去了呢有几个方法看apt update或yum makecache的输出命令执行时屏幕上滚动的网址应该显示的是你配置的镜像站域名如 mirrors.aliyun.com而不是 archive.ubuntu.com 或 mirror.centos.org。使用apt-cache policy或yum repolistUbuntu下apt-cache policy | grep -A1 -B1 archive.ubuntu.com如果还能看到官方地址说明没注释干净。更直接的是看sudo apt update时每个仓库的“命中”Hit信息来源应该是你的镜像站。CentOS下yum repolist all会列出所有仓库及其状态查看base、updates等仓库的地址。直接测速可以手动用curl -I或wget去测试镜像站某个具体文件的下载速度但这比较麻烦。5.2 遇到“GPG密钥错误”或“签名无效”怎么办这在手动编辑CentOS的repo文件时偶尔会遇到。因为Linux软件包都有数字签名来确保完整性系统需要用对应的GPG公钥去验证。如果镜像站提供的repo文件里的GPG密钥地址不对或者本地没有对应的密钥就会报错。解决方法确保repo文件正确最好使用镜像站提供的完整.repo文件不要自己乱改gpgkey那一行的网址。手动导入密钥CentOS常见如果还是报错可以尝试手动导入镜像站的GPG密钥。例如阿里云sudo rpm --import https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official具体密钥地址要去镜像站的帮助页面找。临时禁用GPG检查不推荐在测试时可以在repo文件里对应仓库的章节下将gpgcheck1改为gpgcheck0。但这会降低安全性仅用于临时排查问题解决后务必改回来。5.3 除了系统源这些常用源也别忘记系统自带的软件仓库我们刚才改的是基础。但还有很多非常有用的第三方仓库比如EPEL (Extra Packages for Enterprise Linux)为RHEL/CentOS提供大量额外高质量软件包。安装命令sudo yum install -y epel-release。安装后它的源文件在/etc/yum.repos.d/epel.repo同样需要把它里面的baseurl换成国内镜像否则安装EPEL里的软件还是慢。阿里云、清华等镜像站都同步了EPEL。Docker CE仓库如果你要安装Docker它的官方源也在国外。同样可以在Docker的安装文档中将download.docker.com替换为国内镜像站地址例如mirrors.aliyun.com/docker-ce。Python Pip源pip install慢可以配置~/.pip/pip.conf使用国内源。Node.js npm源npm config set registry https://registry.npmmirror.com核心思想只要是从网络下载软件的工具几乎都可以配置国内镜像。养成这个习惯能极大提升你的工作效率。5.4 容器和云服务器里的特殊考虑如果你是在Docker容器里操作要注意容器通常是“无状态”的。你进去改了源下次重启容器就没了。正确的做法是在构建镜像的Dockerfile里就把换源的步骤写进去。例如在Ubuntu基础镜像的Dockerfile里一开始就RUNsed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list。对于云服务器ECS/CVM很多云厂商提供了内网镜像源。比如阿里云ECS使用内网源mirrors.cloud.aliyuncs.com不仅速度极快走内网还不计费公网流量腾讯云、华为云也有类似的内网地址。一定要去你云服务器的控制台或文档里查一下这个优化效果是立竿见影的。5.5 手动配置的“优雅”方法对于Ubuntu除了直接编辑/etc/apt/sources.list还有一个更“优雅”的命令行工具add-apt-repository。不过它通常用于添加PPA个人软件包存档。对于主源更推荐使用sed命令进行全局替换特别是在脚本中sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo sed -i s/security.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list这两条命令可以一键将文件中所有的官方地址替换为阿里云地址。但前提是你知道原文件里确实是这两个域名。对于新安装的纯净系统这招通常管用。手动配置虽然步骤稍多但它让你对整个软件包管理机制有了更深的理解。下次再遇到类似问题你就能从容应对而不是只能依赖脚本。我建议新手在时间允许的情况下至少亲手操作一遍手动配置这绝对是值得的。