nexus搭建

简介: 本文介绍如何使用Nexus搭建Docker私有仓库。包括Nexus中Docker仓库的启用、Blob Store创建、docker-hosted仓库配置(HTTP/HTTPS端口、匿名拉取等),以及防火墙和Docker客户端的insecure-registry配置。详细说明镜像打标、登录认证及推送至私仓的完整流程,适用于本地化镜像管理与内网部署需求。

07-nexus搭建docker私仓
使用nexus创建docker私有仓库
Nexus的安装请参考该文档:https://www.yuque.com/yzxb/jenkins/fgeqv69dg9o5bgic
Nexus配置Docker仓库步骤;
nexus默认docker是失效的,需要 在security --> Realms,将docker配置成Active
在 Repository 的 Blob Store 中创建一个用于存放docker镜像的存储。内网没有S3的话,把Type配置为file就行。
S3:Simple Storage Service,简单对象存储服务,即云存储。

在 Repository 的 Repositories 中创建一个新的资源库,类型为 docker-hosted。
创建的 docker-hosted资源库的相关配置:
Name:指定该资源库的名称,例如就叫 docker-hosted
Online:默认勾选即可
HTTP:与下面的HTTPS,至少需要勾选其中一个选择框,并配置一个和nexus不同的端口号,例如 8881。将来docker客户端向镜像中心上传镜像时,需要向该端口号进行上传。
HTTPS:如果服务器可以开启https服务,则也可以勾选HTTPS,然后配置一个端口号,接收docker客户端上传上来的镜像。
Allow anonymous docker pull:允许匿名上传,默认不勾选
Enable docker V1 API:是否启用 docker早期V1版本的API,默认不勾选,即只启用V2 API:http://xxx.xxx.xxx.xxx:8881/v2/
Blob Store:选择上面创建的docker镜像的存储
Deployment Policy:是否允许重复上传同一个资源,默认允许
配置好之后,修改防火墙设置,开启刚刚配置的8881 端口:
添加:
重启iptables:
docker客户端的镜像导出和导入
镜像下载和导出:
镜像的导入:
docker 客户端向私仓上传镜像
配置docker允许接收http请求
docker默认只接收https请求,而我们的nexus私仓如果配置的是HTTP接口的话,docker直接连会报错:
需要配置docker允许连接我们私仓的http。
在其中的ExecStart 选项后面,添加 --insecure-registry {docker 私有镜像库 IP} --ipv6=false。
例如:
然后重启docker:
Shell
运行代码
复制代码
1
2
3
4
5
6
7

centos6 的命令

sudo chkconfig daemon-reload
sudo service docker restart

centos7 的命令

sudo systemctl daemon-reload
sudo systemctl restart docker
也可以在/etc/docker/daemon.json 中进行配置:
JSON
复制代码
1
2
3
{
"insecure-reigstries":["192.168.xxx.xxx:8881"]
}
向私仓推送镜像
如果私仓不允许匿名上传镜像,则需要先进行登陆。(一般私仓都不允许匿名上传,nexus默认匿名上传也没有勾选)
Shell
运行代码
复制代码
1
2
3
4
5

--username后面为nexus用户名,执行命令后会提示输入密码

docker login --username=admin http://192.168.xxx.xxx:8881

登录之后,会在 $HOME/.docker/config.json 中记录下登录的用户信息,之后便不需要再进行登陆操作

如果要取消登录,则只需执行以下命令

docker logout http://192.168.xxx.xxx:8881

将要上传的镜像重新设置Tag。
docker按照镜像名称区分上传的资源库。
例如:
mysql:8.0.28会被上传到docker官方dockerhub;
tengyer/helloworld:lasted会被上传到dockerhub的tengyer命名空间中;
registry.cn-hangzhou.aliyuncs.com/命名空间/镜像名称:[镜像版本号] 会上传到阿里云指定命名空间中;
ccr.ccs.tencentyun.com/命名空间/hello-world:会上传到腾讯云指定命名空间中;
hub.c.163.com/命名空间/hello-world:会上传到网易数帆指定命名空间中;
所以,我们如果要上传到我们的私仓,需要将Tag修改为xxx.xxx.xxx.xxx:8881/命名空间/mysql:5.0.27格式:
Shell
运行代码
复制代码
1
2
3
4

将mysql:8.0.28复制出一个私仓格式的Tag

该操作在 docker images中会多出一个复制出来的tag,但是ImageId和原始的相同

加个official命名空间,方便区分这个镜像是从官方镜像下载下来的,不加命名空间也可以上传

docker tag [ImageId] xxx.xxx.xxx.xxx:8881/official/mysql:8.0.28

将修改好Tag的镜像进行上传:
Shell
运行代码
复制代码
1
docker push xxx.xxx.xxx.xxx:8881/official/mysql:8.0.28

相关文章
|
1天前
|
网络协议
协议:怎么设计可扩展且向后兼容的协议?
本讲深入探讨RPC协议设计,重点解析如何实现可扩展性与向后兼容。协议如同通信的“标点符号”,确保数据正确分帧、语义一致。为提升性能,RPC需自研私有协议,兼顾紧凑性与灵活性。通过固定长度字段标识协议头长度,实现动态扩展,支持新增参数而不影响旧版本,保障系统平滑升级。
|
1天前
|
开发者
业务架构图
本文系统介绍了业务架构图的核心概念与绘制方法,涵盖业务定义、架构分层、模块与功能划分,并强调以业务为中心、淡化技术细节,提升客户理解与开发效率。
|
1天前
|
存储 数据可视化 Java
用拉链法实现哈希表
本文详解哈希表中拉链法的实现原理,通过简化版与完整版Java代码,介绍如何用链表解决哈希冲突,支持泛型、动态扩容及增删查改操作,帮助深入理解哈希表底层机制。
|
1天前
|
存储 Serverless
哈希冲突
哈希冲突可通过优化哈希函数或采用冲突解决策略应对。开放寻址法通过线性、二次探查或双散列寻找空位,但易导致聚集,影响效率;链表法则在冲突位置构建链表,避免抢占,更适应动态数据,是常用方案之一。
|
1天前
|
缓存 负载均衡 安全
第十章 常用组件1、nginx相关
正向代理是客户端通过代理访问外部服务器,隐藏客户端身份,用于访问受限资源或保护隐私;反向代理则是服务器前的代理,接收客户端请求并转发至内部服务器,隐藏真实服务器,实现负载均衡、安全防护与缓存加速,提升系统性能与安全性。
|
1天前
|
搜索推荐 算法 UED
15 | 最近邻检索(上):如何用局部敏感哈希快速过滤相似文章?
在搜索引擎与推荐系统中,相似文章去重至关重要。通过向量空间模型将文档转为高维向量,利用SimHash等局部敏感哈希技术生成紧凑指纹,结合海明距离与抽屉原理分段索引,可高效近似检索相似内容,避免重复展示,提升用户体验。该方法广泛应用于网页去重、图像识别等领域。
|
1天前
|
Java
方法重载
本示例演示Java中方法重载的用法:在同一个类中,允许方法名相同但参数列表不同(参数个数、类型或顺序不同),与返回值无关。通过重载可简化方法命名,提升代码可读性和复用性。
|
1天前
|
存储 算法 Java
链表(链式存储)基本原理
链表是一种通过指针串联节点的线性结构,无需连续内存,支持高效增删。单链表仅有next指针,双链表增加prev指针以支持双向遍历。相比数组,链表插入删除灵活,无扩容负担,但不支持随机访问,查找需从头遍历。实际开发中常用双链表,配合虚拟头结点简化操作。
|
1天前
|
存储 数据采集 搜索推荐
状态检索:如何快速判断一个用户是否存在?
本文探讨如何高效判断用户是否存在,对比有序数组、二分查找树和哈希表后,引出更优方案:位图与布隆过滤器。位图以bit为单位存储,大幅节省空间;布隆过滤器通过多哈希函数降低冲突概率,虽有一定误判率,但查询效率达O(1),适用于注册去重、爬虫去重等场景,是提升系统性能的关键技术。
|
1天前
|
前端开发 搜索推荐 测试技术
背景图变换
本文介绍如何基于若依(RuoYi)框架定制化项目:更换浏览器标签logo、系统页面logo与标题、登录页名称及背景图,去除官网标识,并调整主题风格。通过替换静态资源、修改配置文件及全局搜索删除冗余链接,实现项目个性化展示,提升品牌辨识度,适用于前端界面定制开发场景。(238字)