Nexus代理yum、docker源

date
Apr 19, 2023
slug
nexususe
status
Published
tags
Linux
工具
summary
type
Post
在网络隔离的环境安装Centos依赖、下载Docker镜像是一个死胡同,但好在可借助Nexus搭建代理服务,3.52.0-01提供以下类型的Repositories:
notion image

yum代理

安装依赖yum是首选,源码安装可太痛苦了。在nexus上代理yum如下
notion image
  • yum-group:将前面3者都加入即可
最后私有源地址即为:http://192.168.1.127:8081/repository/yum-group ,同时找到yum源的路径:/etc/yum.repos.d ,默认情况下有下列repo文件:
  • CentOS-Base.repo
  • CentOS-Debuginfo.repo
  • CentOS-Media.repo
  • CentOS-Vault.repo
  • epel-testing.repo
  • CentOS-CR.repo
  • CentOS-fasttrack.repo
  • CentOS-Sources.repo
  • epel.repo
根据文件名和内容分析之后发现 CentOS-Base.repo、epel.repo是最关键的,替换baseurl为私有源地址:
[base]
name=CentOS-$releasever - Base - nexus.tech.sw
failovermethod=priority
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates - nexus.tech.sw
failovermethod=priority
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - nexus.tech.sw
failovermethod=priority
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - nexus.tech.sw
failovermethod=priority
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://nexus.tech.sw/repository/yum-group/RPM-GPG-KEY-CentOS-7

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - nexus.tech.sw
failovermethod=priority
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://nexus.tech.sw/repository/yum-group/RPM-GPG-KEY-CentOS-7
CentOS-Base.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://nexus.tech.sw/repository/yum-group/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
epel.repo
同时为了安装docker,所以需添加docker-ce.repo:
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/source/stable
enabled=0
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/$basearch/test
enabled=0
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/gpg

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/source/test
enabled=0
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/gpg

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/gpg

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=http://nexus.tech.sw/repository/yum-group/$releasever/source/nightly
enabled=0
gpgcheck=1
gpgkey=http://nexus.tech.sw/repository/yum-group/gpg
docker-ce.repo
接着执行安装命令:
# 需要清除一次yum缓存
yum clean all
rm -rf /var/cache/yum/
yum makecache

yum install docker-ce
如果安装docker-ce过程遇到
Error: Package: docker-ce-rootless-extras-20.10.12-3.el7.x86_64 (docker-ce-stable)
	Requires: container-selinux >= 2:2.74
Error: Package: docker-ce-rootless-extras-20.10.12-3.el7.x86_64 (docker-ce-stable)
	Requires: slirp4netns >= 0.4
Error: Package: docker-ce-rootless-extras-20.10.12-3.el7.x86_64 (docker-ce-stable)
	Requires: fuse-overlayfs >= 0.7
首先手动更新container-selinux ,如果yum install container-selinux执行失败就尝试yum install http://192.168.1.127:8081/repository/yum-proxy/7/extras/x86_64/Packages/container-selinux-2.119.1-1.c57a6f9.el7.noarch.rpm
其次分析到slirp4netnsfuse-overlayfs是centos extras源的内容,所以在Centos-Base.repo中不能缺少[extras]部分的内容。

docker代理

新建文件:/etc/docker/daemon.json,添加以下内容:
{
"registry-mirrors":["http://192.168.1.127:9000"],
"insecure-registries": ["192.168.1.127:9000"]
}
为啥是9000端口,而不是前面用到的8081端口,可参考使用 Nexus OSS 为 Docker 镜像提供代理/缓存功能
 

参考资料:
 

© 刘德华 2020 - 2025