拉取网络源搭建内网apt、yum源仓库

1. 适用场景

处于内网封闭的情况下,apt或者yum命令无法连接外部网络源安装第三方软件。需要预先按照仓库结构拉取某个外部网络源当前的所有软件包作为本地仓库,然后本地启动网络服务指向被拉取的本地仓库,提供与外外部网络源仓库一样的功能。

与挂载镜像的本地仓库的区别

将镜像挂载为本地仓库,只能解决系统相关服务升级的问题,而无法安装官方提供的软件包。

当然内网源仍旧无法解决第三方软件包的安装。比如docker、nginx等。

2. 整体配置步骤介绍

  1. 创建一个docker容器作为本地yum或apt仓库
  2. 创建的容器使用-v参数挂载宿主机本地的一个目录到容器内,这样可以防止容器移动宿主机时,打包镜像因为仓库太大而无法打包
  3. 同步一个权威的外部源,如阿里源或者清华源(测试了下这两个源下载比较快)
  4. 使用nginx或者其他网络方式将本地源暴露出来
  5. 创建个客户端容器,使用本地仓库的源,测试拉取本地源是否成功

3. Linix下使用docker搭建Centos yum内网源

使用docker的方式部署可以快速转移和防止部署时错误,建议使用docker部署。

docker安装请参考:docker安装

  1. 确定宿主机上存放仓库文件的位置,如/home/yumrepo
  2. 确定容器内挂载的位置,因为是需要使用网络暴露出去,所以使用Linux默认的网络根目录,如/var/www/html/yumrepo
  3. 创建容器,作为后台运行,此处默认使用centos7.8,如

docker run -tid –privileged=true –name=”repo_centos” -v /home/yumrepo:/var/www/html/yumrepo centos:7.8.2003 /usr/sbin/init

4. 进入容器后安装nginx createrepo及其他软件

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum install -y yum-utils createrepo wget make cmake gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel net-tools vim nginx 

5. 使用createrepo同步配置的网络源的仓库

createrepo -po /var/www/html/yumrepo/base/  /var/www/html/yumrepo/base/createrepo -po /var/www/html/yumrepo/extras/  /var/www/html/yumrepo/extras/createrepo -po /var/www/html/yumrepo/updates/  /var/www/html/yumrepo/updates/createrepo -po /var/www/html/yumrepo/epel/  /var/www/html/yumrepo/epel/

6. 使用nginx将仓库发布出去,具体nginx配置参考githhub中代码,此处设置为9090端口发布,仓库路径为/var/www/html/yumrepo

7. 其他centos7的主机更新yum源为此内网源后即可访问,内网源配置参考github中CentOS-Base.repo文件

8. 为了容器或宿主机重启后自动启动,需要设置如下

宿主机: docker update –restart=always 容器ID(或者容器名)

4. Linix下使用docker搭建Debian apt内网源

  1. 确定宿主机上存放仓库文件的位置,如/home/aptrepo

2. 确定容器内挂载的位置,apt仓库的管理工具是apt-mirror,我们此容器内挂载和下载同步软件的目录也设置为/home/aptrepo

3. 创建容器,作为后台运行,此处默认使用debian:9,如

docker run -tid –privileged=true –name=”repo_debian” -v /home/aptrepo:/home/aptrepo debian:9 /sbin/init

4. 更换一个国内debian9的源(建议为http的),如阿里源,安装apt-mirror、nginxsystemd-sysv

apt -y update;apt -y install apt-mirror nginx vim net-tools procps systemd-sysv

5.设置apt-mirror的设置,配置文件为/etc/apt/mirror.list,配置内容参考github中的mirror.list文件

6. 执行同步命令(可选),会自动从官方源拉去最新的包。我们此处默认使用的是本地已拉取的包

apt-mirror

7. 将我们的aptrepo的mirror文件下的内容,挂载到/var/www/html/下

  ln -sf /home/aptrepo/mirror/ /var/www/html/

8. 设置nginx文件,暴露端口此处设置为8080,仓库路径为/var/www/html/mirror/

9. 其他debian9的主机更新apt源为此内网源后即可访问,内网源配置参考github中sources.list.client文件

10. 为了容器或宿主机重启后自动启动,需要设置如下

宿主机: docker update –restart=always 容器ID(或者容器名)

5. Linix下使用docker搭建Ubuntu apt内网源

部署方式同debian,只需要更换拉去仓库的地址、更换暴露的端口即可,详情参考6.代码构建的ubuntu

6. 代码构建

上述第3步和第4部涉及的不足已经使用脚本实现并上传github,地址如下

centos debian ubuntu

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x