适配场景:校园实训内网、企业离线环境、批量服务器部署,解决外网源限速、超时、无订阅无法使用的问题,本地搭建全量离线镜像源,内网所有机器可无感使用、批量安装软件与部署Docker。
一、环境与前置说明
1. 基础环境要求
系统版本:Rocky Linux 9.7 x86_64(最小化安装即可)
搭建主机:可正常访问外网,用于同步镜像资源,内网互通
硬盘要求:系统盘预留≥50G空闲空间(BaseOS+AppStream全量同步约30G,Docker源约2G)
服务组件:httpd 文件共享服务、reposync 同步工具、createrepo 仓库索引工具
固定配置:内网环境关闭防火墙、SELinux,避免访问拦截
2. 统一路径规划
系统YUM源存放路径:
/var/www/html/rocky9\.7/Docker-CE源存放路径:
/var/www/html/docker\-ce/内网访问地址:
http://本地源服务器IP/
二、基础依赖工具安装
Rocky Linux 9 原生使用dnf包管理器,完全兼容yum命令,先安装镜像源搭建必备工具:
dnf install -y yum-utils createrepo httpd
工具功能说明:
yum-utils:提供核心同步工具
reposync,用于拉取外网仓库全量RPM包createrepo:生成YUM仓库必备的
repodata元数据索引,客户端才能正常识别仓库httpd:搭建轻量HTTP服务,对内网所有机器提供镜像源访问能力
三、系统原有Repo源备份
操作前先备份系统默认源,避免配置异常导致无法恢复,所有操作统一规范:
# 创建备份目录 mkdir-p /etc/y.repos.d/backup # 迁移所有原有repo文件至备份目录 mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
四、配置外网同步源(阿里云Rocky9.7官方镜像)
Rocky Linux 9 分为BaseOS(基础系统包)和AppStream(应用扩展包)两个核心仓库,必须同步完整才能满足所有软件安装需求。
新建外网同步专用repo文件:
vim /etc/yum.repos.d/rocky9.7-aliyun.repo
写入以下标准配置,关闭GPG校验避免同步报错,启用全量同步:
[BaseOS] name=Rocky Linux 9.7 - BaseOS - Aliyun Mirror baseurl=https://mirrors.aliyun.com/rockylinux/9.7/BaseOS/x86_64/os/ gpgcheck=0 enabled=1 priority=1 [AppStream] name=Rocky Linux 9.7 - AppStream - Aliyun Mirror baseurl=https://mirrors.aliyun.com/rockylinux/9.7/AppStream/x86_64/os/ gpgcheck=0 enabled=1 priority=1
配置完成后刷新缓存,校验源可用性:
dnf clean all dnf makecache # 查看已启用仓库,确认BaseOS、AppStream正常加载 dnf repolist
五、创建本地镜像仓库目录
严格按照Rocky官方目录结构创建,避免客户端识别异常,同时创建Docker源目录:
# 系统YUM源目录 mkdir-p /var/www/html/rocky9.7/{BaseOS,AppStream} # Docker-CE镜像源目录 mkdir-p /var/www/html/docker-ce六、同步外网RPM包至本地仓库
1. 同步Rocky Linux 9.7 系统基础仓库
使用reposync全量拉取仓库所有RPM包,同步过程耗时根据网速决定,请勿中断:
# 同步BaseOS基础仓库 reposync -r BaseOS -p /var/www/html/rocky9.7/ # 同步AppStream应用仓库 reposync -r AppStream -p /var/www/html/rocky9.7/
参数说明:
-r:指定要同步的仓库ID,与repo文件内中括号名称一致
-p:指定RPM包下载的本地根路径
2. 同步Docker-CE 稳定版仓库
先配置Docker官方阿里云镜像源,再同步全量安装包:
# 新建Docker同步源 vim /etc/yum.repos.d/docker-ce-aliyun.repo
写入适配Rocky9的配置:
[docker-ce-stable] name=Docker CE Stable - Aliyun Mirror baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/x86_64/stable/ gpgcheck=0 enabled=1
刷新缓存后同步Docker包:
dnf makecache reposync -r docker-ce-stable -p /var/www/html/
七、生成YUM仓库元数据索引
同步完成后,必须为每个仓库生成repodata索引,否则内网客户端无法识别仓库、无法安装软件。
1. 生成系统仓库索引
# BaseOS仓库生成索引,-v输出详细日志 createrepo -v /var/www/html/rocky9.7/BaseOS # AppStream仓库生成索引 createrepo -v /var/www/html/rocky9.7/AppStream
2. 生成Docker仓库索引
createrepo -v /var/www/html/docker-ce-stable
注意事项:后续增量更新同步包后,使用createrepo \-\-update 目录路径增量更新索引,无需全量重建,大幅提升效率。
八、启动HTTP服务并配置开机自启
# 启动httpd服务 systemctl start httpd # 设置开机自启 systemctl enable httpd # 校验服务状态,确认active (running) systemctl status httpd
九、内网环境安全配置(必做)
内网实训/离线环境,关闭防火墙和SELinux,避免内网机器访问源时出现连接拒绝、权限不足问题:
# 关闭防火墙,禁止开机自启 systemctl stop firewalld systemctl disable firewalld # 临时关闭SELinux setenforce 0 # 永久关闭SELinux,重启后生效 sed-i's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
十、内网客户端标准配置手册
内网所有Rocky Linux 9.7机器,无需配置外网、无需订阅,直接使用本地源,操作步骤统一标准化。
1. 客户端备份原有源
mkdir-p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
2. 一键部署本地系统源
新建本地源配置文件,将192\.168\.xxx\.xxx替换为本地源服务器真实内网IP:
vim /etc/yum.repos.d/rocky9.7-local.repo
写入标准配置:
[BaseOS] name=Rocky Linux 9.7 - Local BaseOS baseurl=http://192.168.1.11/rocky9.7/BaseOS gpgcheck=0 enabled=1 priority=1 [AppStream] name=Rocky Linux 9.7 - Local AppStream baseurl=http://192.168.1.11/rocky9.7/AppStream gpgcheck=0 enabled=1 priority=1
3. 一键部署本地Docker源
vim /etc/yum.repos.d/docker-ce-local.repo
写入配置:
[docker-ce-local] name=Docker CE Local Stable baseurl=http://192.168.1.11/docker-ce-stable gpgcheck=0 enabled=1
4. 客户端刷新缓存,正常使用
dnf clean all dnf makecache # 查看本地仓库,确认加载成功 dnf repolist # 测试安装,验证源可用性 dnf install -y tree wget net-tools # 离线安装Docker dnf install -y docker-ce docker-ce-cli containerd.io
十一、快捷一键部署命令(实训场景专用)
提前将repo文件放入httpd根目录,内网客户端可一键拉取配置,无需手动编辑文件:
# 客户端一键获取系统源 curl http://192.168.1.11/rocky9.7-local.repo > /etc/yum.repos.d/rocky9.7-local.repo # 一键获取Docker源 curl http://192.168.1.11/docker-ce-local.repo > /etc/yum.repos.d/docker-ce-local.repo # 刷新缓存即可使用 dnf makecache
十二、日常维护与增量更新
配置定时任务,每日凌晨自动同步外网最新RPM包,增量更新仓库索引,保持本地源与外网同步:
# 编辑定时任务 crontab -e
添加以下定时任务:
# 每日凌晨1点同步系统仓库并更新索引 01 * * * reposync -r BaseOS -p /var/www/html/rocky9.7/ && createrepo --update /var/www/html/rocky9.7/BaseOS 01 * * * reposync -r AppStream -p /var/www/html/rocky9.7/ && createrepo --update /var/www/html/rocky9.7/AppStream # 每日凌晨2点同步Docker仓库并更新索引 02 * * * reposync -r docker-ce-stable -p /var/www/html/ && createrepo --update /var/www/html/docker-ce-stable
十三、常见问题排查
客户端报错
repodata不存在:检查本地服务器对应目录是否生成repodata文件夹,重新执行createrepo命令客户端无法访问IP:检查服务器httpd服务状态、防火墙是否关闭、内网互通是否正常
同步包中断:重新执行reposync命令,工具会自动跳过已下载的包,增量续传
安装软件依赖报错:确认BaseOS和AppStream两个仓库都已同步、都已正常启用,不可单独使用单个仓库