Docker—搭建Harbor和阿里云私有仓库

Harbor概述

Harbor是一个开源的企业级Docker Registry管理项目,由VMware公司开发。‌它的主要用途是帮助用户迅速搭建一个企业级的Docker Registry服务,提供比Docker官方公共镜像仓库更为丰富和安全的功能,特别适合企业环境使用。‌12

Harbor的主要功能包括:

  • 基于角色的访问控制(RBAC)‌:用户和仓库通过“项目”进行组织管理,用户在项目中可以拥有不同的权限。
  • 镜像复制‌:镜像可以在多个Harbor实例之间进行复制(同步),特别适合负载均衡、高可用、混合云和多云的场景。
  • AD/LDAP集成‌:Harbor可以集成企业内部的AD/LDAP,用于用户认证和管理。
  • 图形化用户界面‌:用户可以通过浏览器浏览、搜索镜像仓库,并对项目进行管理。
  • 审计管理‌:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 支持RESTful API‌:提供给管理员更多的操控,使得与其他管理软件集成变得更容易。
  • 部署简单‌:提供在线和离线两种安装工具,也可以安装到vSphere平台(OVA方式)虚拟设备。

此外,Harbor的每个组件都是以Docker容器的形式构建的,使用docker-compose进行部署,这使得部署和维护都相对简单。

Harbor项目地址是:https://github.com/goharbor/harbor‌‌

一、安装Harbor

在官网上或者Github上拉取镜像失败可以参考下面的博客相关的资源:

Docker私有镜像仓库Harbor安装并推拉镜像_harbor-offline-installer-v2.11.1.tgz-CSDN博客

1、解压安装包

#安装docker-compose 1.29.2版本
mv docker-compose-linux-x86_64 /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose

#解压安装harbor-offline-installer-v2.11.1.tgz执行install.sh进行安装

tar -zxvf harbor-offline-installer-v2.11.1.tgz


 2、修改harbor.yml配置执行安装脚本

步骤一:将需要https认证的模块注释掉

步骤二:设置admin密码和访问数据库的密码

步骤三:执行安装脚本

cd /opt/docker/harbor
sh install.sh

步骤四:检查容器是否正常运行

docker-compose ps

3、部署问题处理

之前环境中已经启动名为redis的容器,导致docker-compose启动失败在确认没使用时删掉redis

Error response from daemon: Conflict. The container name "/redis" is already in use by container "1eb39a59f4bb6c30b5283a9d8d09ac11e39d7d047c0688156f7485bc0ea5a24d". You have to remove (or rename) that container to be able to reuse that name.

 #解决
 docker rm  1eb39a59f4bb6c30b5283a9d8d09ac11e39d7d047c0688156f7485bc0ea5a24d

4、启动容器的方法

#进入到harbor-offline-installer-v2.11.1.tgz解压好的目录下相关操作命令
cd /opt/docker/harbor

#查看启动的容器
docker-compose ps

#启动
docker-compose up -d

#关闭
docker-compose down

5、浏览器页面登录验证

输出:http://192.168.72.140

6、修改Harbor的默认登录端口

6.1、修改配置重启容器

将访问端口改成5000

步骤一:进入到Harbor的安装目录下docker-compose.yml中ports的值
步骤二:修改harbor.yml中ports的值
步骤三:重启容器
#步骤一: 修改docker-compose.yml中ports的值
vim docker-compose.yml

...
    ports:
      - 5000:8080
...

#步骤二:修改harbor.yml中ports的值
vim harbor.yml
...
http:
  port: 5000
...



#步骤三:重新启动容器
docker-compose down && docker-compose up

6.2、浏览器页面验证

输入:http://192.168.72.140:5000

7、创建私有仓库进行推送测试

7.1、创建一个私有仓库叫k8s

7.2、镜像推送或拉取的步骤

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Docker 推送命令
在项目中标记镜像:
docker tag SOURCE_IMAGE[:TAG] master01/k8s/REPOSITORY[:TAG]

推送镜像到当前项目:
docker push master01/k8s/REPOSITORY[:TAG]

Podman 推送命令
推送镜像到当前项目:
podman push IMAGE_ID master01/k8s/REPOSITORY[:TAG]

Helm 推送命令
在项目中打包 chart
helm package CHART_PATH

推送 chart 到当前项目
helm push CHART_PACKAGE oci://master01/k8s

CNAB 推送命令
推送 CNAB 到当前项目
cnab-to-oci push CNAB_PATH --target master01/k8s/REPOSITORY[:TAG] --auto-update-bundle

步骤一:在需要拉取或者推送镜像到私有仓库的机器上先执行登录私有仓库步骤
#登录私有仓库
[root@master secret]# docker login 192.168.72.140:5000
Username: admin
Password: xxx

步骤二:推送数据
#打标签
docker tag mysql:5.7 master01:5000/k8s/mysql:5.7

#推送镜像到仓库
docker push master01:5000/k8s/mysql:5.7

8、Harbor推送不支持HTTP协议问题处理

8.1、推送报错

客户端上传报错

The push refers to repository [192.168.72.140/k8s/nginx-ingress-controller]
Get "https://192.168.72.140/v2/": dial tcp 192.168.72.140:443: connect: connection refused

8.2、报错原因

出现这问题的原因Docker Registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP。所以与私有镜像交互时就会报错如下内容。

8.3、解决方法

步骤一: 在节点上的镜像加速配置文件中加入解析
 #加入解析
 vim /etc/host
 192.168.72.140 master01 reg.test.org
 
 #加入私有仓库加速
 vim /etc/docker/daemon.json
 "insecure-registries": ["master01:5000","192.168.72.133:5000"]

步骤二:重启docker服务使配置生效
systemctl restart docker

步骤三:登录验证

步骤四:推送数据
#打标签
docker tag mysql:5.7 master01:5000/k8s/mysql:5.7

#推送
docker push master01:5000/k8s/mysql:5.7

二、搭建阿里云私有镜像仓库

1、在阿里云上创建私有仓库

步骤一:在阿里云主页搜索"阿里云镜像服务"

浏览器搜索
阿里云-计算,为了无法计算的价值
 

输入"阿里云镜像服务"

步骤二:点击个人版实例

步骤三:点击镜像仓库

步骤四: 创建私有仓库

在阿里云上进行配置成功后可以按照知道文档上的操作步骤进行镜像的推送和拉取

1. 登录阿里云Docker Registry
$ docker login --username=被水淹死的与鱼尔 registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/yangbin-docker/mysql:[镜像版本号]
3. 将镜像推送到Registry
$ docker login --username=被水淹死的与鱼尔 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/yangbin-docker/mysql:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/yangbin-docker/mysql:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ docker images
REPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
registry.aliyuncs.com/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB
$ docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用 "docker push" 命令将该镜像推送至远程。
$ docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816

2、推送拉取测试

2.1、推送镜像到阿里云私有仓库

#登录
docker login --username=xxxxxx registry.cn-hangzhou.aliyuncs.com
#打标签
docker tag mysql:5.7 registry.cn-hangzhou.aliyuncs.com/yangbin-docker/mysql:5.7
#推送
docker push  registry.cn-hangzhou.aliyuncs.com/yangbin-docker/mysql:5.7

2.2、拉取镜像到本地

docker pull registry.cn-hangzhou.aliyuncs.com/yangbin-docker/mysql:5.7

三、Harbor私有仓库和阿里云私有仓库推送测试总结

1、阿里云私有仓库推送验证

1.1、创建私有仓库test

1.2、往test私有仓库中进行推送测试

1.3、推送镜像时没有镜像仓库则会自动创建

推送

#打标签
docker tag nginx:latest registry.cn-hangzhou.aliyuncs.com/yangbin-docker/nginx:latest

#推送
docker push registry.cn-hangzhou.aliyuncs.com/yangbin-docker/nginx:latest

2、Harbor私有仓库推送验证

2.1、在没有提前创建私有仓库的情况下进行推送验证

2.2、往创建好的仓库中推送镜像

#推送nginx 版本为1.23的镜像
docker tag mysql:5.7 master01:5000/nginx/nginx:1.23
docker push master01:5000/nginx/nginx:1.23

#推送nginx 版本为latest的镜像
docker tag nginx:latest master01:5000/nginx/nginx:latest
docker push master01:5000/nginx/nginx:latest

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/960197.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS:创建应用静态快捷方式

一、前言 静态快捷方式是一种在系统中创建的可以快速访问应用程序或特定功能的链接。它通常可以在长按应用图标,以图标和相应的文字出现在应用图标的上方,用户可以迅速启动对应应用程序的组件。使用快捷方式,可以提高效率,节省了查…

从表人的相关单词聊起

英文单词是繁多的,甚至海量的,这和老外的思维方式有关,他们通常会为同一类事物的具体的东西或子类事物也专门创建一个单词来进行表达、表示或应对,这增加了表达的直接性和精确性,但是,也轻而易举地就创建出…

低代码系统-产品架构案例介绍、轻流(九)

轻流低代码产品定位为零代码产品,试图通过搭建来降低企业成本,提升业务上线效率。 依旧是从下至上,从左至右的顺序 名词概述运维层底层系统运维层,例如上线、部署等基础服务体系内置的系统能力,发消息、组织和权限是必…

2025年美赛B题-结合Logistic阻滞增长模型和SIR传染病模型研究旅游可持续性-成品论文

模型设计思路与创新点: 建模的时候应该先确定我们需要建立什么类的模型?优化类还是统计类?这个题需要大量的数据分析,因此我们可以建立一个统计学模型。 统计学建模思路:观察规律,建立模型,参…

自由学习记录(32)

文件里找到切换颜色空间 fgui中的 颜色空间是一种总体使用前的设定 颜色空间,和半透明混合产生的效果有差异,这种问题一般可以产生联系 动效就是在fgui里可以编辑好,然后在unity中也准备了对应的调用手段,可以详细的使用每一个具…

【2025AI发展预测】2.2025的风口与发展,我们如何主动拥抱这一浪潮

个人主页:Icomi 大家好我是一颗米,本系列文章包含我个人的一些思考见解,以及在网上看到的相关资讯,结合本人的认识,在那基础上进行加工输出,希望能帮助到各位,若您对本系列感兴趣,欢…

操作系统(Linux Kernel 0.11Linux Kernel 0.12)解读整理——内核初始化(main init)之硬盘初始化

前言 对硬盘和软盘块设备上数据的读写操作是通过中断处理程序进行的。内核每次读写的数据量以一个逻辑块(1024 字节)为单位,而块设备控制器则是以扇区(512字节)为单位访问块设备。在处理过程中,内核使用了读写请求项等待队列来顺序地缓冲一次读写多个逻…

利用机器学习创建基于位置的推荐程序

推荐系统被广泛应用于不同的应用程序中,用于预测用户对产品或服务的偏好或评价。在过去的几分钟或几小时里,你很可能在网上遇到过或与某种类型的推荐系统进行过互动。这些推荐系统有不同的类型,其中最突出的包括基于内容的过滤和协作过滤。在…

【AI论文】Video-MMMU:评估从多学科专业视频中获取知识的能力

摘要:人类通过三个认知阶段获取知识:感知信息、理解知识以及运用知识解决新问题。视频作为这一学习过程的有效媒介,促进了这些认知阶段的逐步推进。然而,现有的视频基准测试未能系统地评估大型多模态模型(LMMs&#xf…

【C++高并发服务器WebServer】-9:多线程开发

本文目录 一、线程概述1.1 线程和进程的区别1.2 线程之间共享和非共享资源1.3 NPTL 二、线程操作2.1 pthread_create2.2 pthread_exit2.3 pthread_join2.4 pthread_detach2.5 patch_cancel2.6 pthread_attr 三、实战demo四、线程同步五、死锁六、读写锁七、生产消费者模型 一、…

C语言学习强化

前言 数据的逻辑结构包括: 常见数据结构: 线性结构:数组、链表、队列、栈 树形结构:树、堆 图形结构:图 一、链表 链表是物理位置不连续,逻辑位置连续 链表的特点: 1.链表没有固定的长度…

【C++探索之路】STL---string

走进C的世界,也意味着我们对编程世界的认知达到另一个维度,如果你学习过C语言,那你绝对会有不一般的收获,感受到C所带来的码云风暴~ ---------------------------------------begin--------------------------------------- 什么是…

【WebRTC - STUN/TURN服务 - COTURN配置】

在WebRTC中,对于通信的两端不在同一个局域网的情况下,通信两端往往无法P2P直接连接,需要一个TURN中继服务,而中继服务可以选用 COTURN 构建。 注:COTURN 是一个开源的 TURN(Traversal Using Relays around…

React 前端框架实战教程

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 React 是由 Facebook 开发的前端 JavaScript 库,旨在构建高效、灵活的用户界面,尤其适用于单页应用…

MiniMax-01中Lightning Attention的由来(线性注意力进化史)

目录 引言原始注意力线性注意力因果模型存在的问题累加求和操作的限制Lightning AttentionLightning Attention-1Lightning Attention-2 备注 引言 MiniMax-01: Scaling Foundation Models with Lightning Attention表明自己是第一个将线性注意力应用到如此大规模的模型&#…

互联网医院成品|互联网医院软件源码

互联网医院系统带来的好处是显而易见的,其通过先进的互联网技术为医疗行业带来了巨大的变革。以下将从多个方面详细阐述其带来的益处。 一、便捷的医疗服务 互联网医院系统为患者提供了更为便捷的医疗服务。患者无需再亲自前往医院,只需通过电脑、手机等…

unity学习20:time相关基础 Time.time 和 Time.deltaTime

目录 1 unity里的几种基本时间 1.1 time 相关测试脚本 1.2 游戏开始到现在所用的时间 Time.time 1.3 时间缩放值 Time.timeScale 1.4 固定时间间隔 Time.fixedDeltaTime 1.5 两次响应时间之间的间隔:Time.deltaTime 1.6 对应测试代码 1.7 需要关注的2个基本…

Centos7系统php8编译安装ImageMagick/Imagick扩展教程整理

Centos7系统php8编译安装ImageMagick/Imagick扩展教程整理 安装php8安装ImageMagick1、下载ImageMagick2、解压并安装3、查看是否安装成功 安装imagick扩展包 安装php8 点我安装php8 安装ImageMagick 1、下载ImageMagick wget https://www.imagemagick.org/download/ImageMa…

RabbitMQ模块新增消息转换器

文章目录 1.目录结构2.代码1.pom.xml 排除logging2.RabbitMQConfig.java3.RabbitMQAutoConfiguration.java 1.目录结构 2.代码 1.pom.xml 排除logging <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/PO…

Linux——网络基础(1)

文章目录 目录 文章目录 前言 一、文件传输协议 应用层 传输层 网络层 数据链路层 数据接收与解封装 主机与网卡 数据传输过程示意 二、IP和MAC地址 定义与性质 地址格式 分配方式 作用范围 可见性与可获取性 生活例子 定义 用途 特点 联系 四、TCP和UDP协…