【Linux】【源仓库】使用docker搭建内网apt、yum源仓库

适用场景

内网封闭网络,如大多数互联网公司办公环境。
无法连通外部的Linux发行版的软件源

资源配置

  • 一台连通互联网的电脑,操作系统建议使用任意Linux发行版为佳,如centos
  • 电脑已安装docker(windows可以安装桌面版)
  • 有一个大存储的U盘,至少100G以上
  • 内网环境允许外部存储导入

基本思路

  • 创建docker容器挂载路径
  • 容器中拉取外部网络源文件到挂载的路径
  • docker中部署本地仓库服务,验证通过后打包docker和挂载路径的文件,拷贝到U盘
  • U盘数据拷贝到内网,拉起docker挂载路径的文件,调试配置内网网络

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

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

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

整体配置步骤介绍

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

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
  1. 进入容器后安装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 
  1. 使用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/
  1. 使用nginx将仓库发布出去,具体nginx配置参考githhub中代码,此处设置为9090端口发布,仓库路径为/var/www/html/yumrepo
  2. 其他centos7的主机更新yum源为此内网源后即可访问,内网源配置参考github中CentOS-Base.repo文件
  3. 为了容器或宿主机重启后自动启动,需要设置如下
宿主机: docker update –restart=always 容器ID(或者容器名)

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
  1. 更换一个国内debian9的源(建议为http的),如阿里源,安装apt-mirror、nginx、systemd-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文件

  1. 执行同步命令(可选),会自动从官方源拉去最新的包。我们此处默认使用的是本地已拉取的包
apt-mirror
  1. 将我们的aptrepo的mirror文件下的内容,挂载到/var/www/html/下
  ln -sf /home/aptrepo/mirror/ /var/www/html/
  1. 设置nginx文件,暴露端口此处设置为8080,仓库路径为/var/www/html/mirror/

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

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

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

代码构建

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

  1. centos
  2. debian

源博客

本文转载自本人私人博客,此处作为备份
[1]: http://oudezhinu.site/localrepo/

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值