在运维或开发环境中,搭建CentOS镜像服务器可以加快软件安装、系统更新的速度,特别是在离线环境或内网环境下,能够减少外网依赖,提高效率。那么,如何使用Docker搭建一个本地CentOS镜像服务器,让局域网内的服务器能够快速拉取CentOS相关软件包。
为什么使用Docker搭建CentOS镜像服务器?
Docker让部署和维护更加简单,即使官方源宕机,本地镜像依然可用。同时它可以节省带宽,多个服务器从本地镜像下载RPM包,而不是直接访问外网源。内网下载速度远远快于从公网拉取,减少等待时间。
在开始之前,你需要一台运行Docker的CentOS服务器(或其他Linux服务器)。
安装 Docker:
如果你的服务器还没有安装 Docker,可以使用以下命令安装:
# 卸载旧版本(如果有)
sudo yum remove -y docker docker-common docker-selinux docker-engine
# 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加 Docker 源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动 Docker 并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
安装 Docker Compose(可选):
如果你希望使用 docker-compose 来管理服务,可以安装它:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
使用Docker搭建CentOS本地镜像服务器
我们使用rsync同步CentOS官方源,并用nginx 提供HTTP访问服务。
拉取官方CentOS镜像:
首先,我们需要获取 CentOS 官方镜像:
docker pull centos:7
你也可以选择 CentOS 8 或 Stream 版本:
docker pull centos:8
创建本地CentOS镜像目录:
mkdir -p /opt/centos-mirror
cd /opt/centos-mirror
使用Rsync下载CentOS官方源:
我们可以使用 rsync 同步官方源,这样可以获得完整的 RPM 包。
同步 CentOS 7 官方源:
rsync -avz --delete rsync://mirrors.kernel.org/centos/7/ /opt/centos-mirror/
同步 CentOS 8 官方源:
rsync -avz --delete rsync://mirrors.kernel.org/centos/8/ /opt/centos-mirror/
注意:
这个过程可能会花费较长时间,具体的取决于网络速度和源的大小。
可以使用nohup或screen让同步在后台运行:
nohup rsync -avz --delete rsync://mirrors.kernel.org/centos/7/ /opt/centos-mirror/ &
使用Docker运行Nginx作为HTTP服务器
我们使用 nginx 作为本地镜像服务器的 HTTP 服务器:
docker run -d --name centos-mirror \
-p 8080:80 \
-v /opt/centos-mirror:/usr/share/nginx/html:ro \
nginx
配置CentOS服务器使用本地镜像源:
在局域网内其他服务器上,修改 yum 源配置,使用我们的本地镜像服务器。
编辑 /etc/yum.repos.d/CentOS-Base.repo:
sudo vim /etc/yum.repos.d/CentOS-Base.repo
修改 [base]、[updates]、[extras] 源,指向我们本地的 Nginx 镜像服务器(假设服务器 IP 是 192.168.1.100):
[base]
name=CentOS-7 - Base
baseurl=http://192.168.1.100:8080/7/os/x86_64/
gpgcheck=0
enabled=1
[updates]
name=CentOS-7 - Updates
baseurl=http://192.168.1.100:8080/7/updates/x86_64/
gpgcheck=0
enabled=1
[extras]
name=CentOS-7 - Extras
baseurl=http://192.168.1.100:8080/7/extras/x86_64/
gpgcheck=0
enabled=1
保存并退出,然后清理原来的缓存并重新生成缓存:
sudo yum clean all
sudo yum makecache
测试本地源是否生效:
sudo yum repolist
如果 repolist 输出了 base, updates, extras,说明本地 CentOS 镜像服务器已经搭建成功!