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

【Linux】【源仓库】使用docker搭建内网apt、yum源仓库适用场景处于内网封闭的情况下,apt或者yum命令无法连接外部网络源安装第三方软件。需要预先按照仓库结构拉取某个外部网络源当前的所有软件包作为本地仓库,然后本地启动网络服务指向被拉取的本地仓库,提供与外外部网络源仓库一样的功能。与挂载镜像的本地仓库的区别将镜像挂载为本地仓库,只能解决系统相关服务升级的问题,而无法安装官方提供的软件包。当然内网源仍旧无法解决第三方软件包的安装。比如docker、nginx等。整体配置步骤介绍创建一个docker容器作为本地yum或apt仓库创建的容器使用-v

大家好,欢迎来到IT知识分享网。【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/

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/16219.html

(0)
上一篇 2024-02-09 17:45
下一篇 2024-02-10 11:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信