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

yum代理
安装依赖yum是首选,源码安装可太痛苦了。在nexus上代理yum如下

- yum-proxy:https://mirrors.aliyun.com/centos
- yum-proxy-epel:https://mirrors.aliyun.com/epel/
- yum-proxy-docker:https://mirrors.aliyun.com/docker-ce/linux/centos/
- 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
[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
同时为了安装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
接着执行安装命令:
# 需要清除一次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
。其次分析到
slirp4netns
、fuse-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 镜像提供代理/缓存功能
参考资料: