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/k8sCNAB 推送命令
推送 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/host192.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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Docker的Spark分布式集群

目录 1. 说明 2. 服务器规划 3. 步骤 3.1 要点 3.2 配置文件 3.2 访问Spark Master 4. 使用测试 5. 参考 1. 说明 以docker容器方式实现apache spark计算集群,能灵活的增减配置与worker数目。 2. 服务器规划 服务器 (1master, 3workers) ip开放端口备注ce…

C语言自定义数据类型详解(一)——结构体类型(上)

什么是自定义数据类型呢?顾名思义,就是我们用户自己定义和设置的类型。 在C语言中,我们的自定义数据类型一共有三种,它们分别是:结构体(struct),枚举(enum),联合(union)。接下来,我…

记录让cursor帮我给ruoyi-vue后台管理项目整合mybatis-plus

自己整合过程中会出现 work.web.exception.GlobalExceptionHandler :100 | 请求地址/admin/device/install/detail/1,发生未知异常. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.fire.mapper.DeviceInstallMapper.selectById at o…

HUMANITY’S LAST EXAM (HLE) 综述:人工智能领域的“最终考试”

论文地址:Humanity’s Last Exam 1. 背景与动机 随着大型语言模型(LLMs)能力的飞速发展,其在数学、编程、生物等领域的任务表现已超越人类。为了系统地衡量这些能力,LLMs 需要接受基准测试(Benchmarks&…

利用大型语言模型在量化投资中实现自动化策略

“Automate Strategy Finding with LLM in Quant investment” 论文地址:https://arxiv.org/pdf/2409.06289 摘要 这个新提出的量化股票投资框架,利用大型语言模型(LLMs)与多智能体系统相结合的方法,通过LLMs从包括数…

OpenCV:在图像中添加高斯噪声、胡椒噪声

目录 在图像中添加高斯噪声 高斯噪声的特性 添加高斯噪声的实现 给图像添加胡椒噪声 实现胡椒噪声的步骤 相关阅读 OpenCV:图像处理中的低通滤波-CSDN博客 OpenCV:高通滤波之索贝尔、沙尔和拉普拉斯-CSDN博客 OpenCV:图像滤波、卷积与…

大数据学习(40)- Flink执行流

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…

Prometheus+Grafana监控minio对象存储

1. 安装 MinIO 步骤 1:下载 MinIO 二进制文件 wget https://dl.min.io/server/minio/release/linux-amd64/miniochmod x miniosudo mv minio /usr/local/bin/ 步骤 2:创建数据目录 sudo mkdir -p /data/miniosudo chown -R $USER:$USER /data/minio …

2025数学建模美赛|F题成品论文

国家安全政策与网络安全 摘要 随着互联网技术的迅猛发展,网络犯罪问题已成为全球网络安全中的重要研究课题,且网络犯罪的形式和影响日益复杂和严重。本文针对网络犯罪中的问题,基于多元回归分析和差异中的差异(DiD)思…

期权帮|如何利用股指期货进行对冲套利?

锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 如何利用股指期货进行对冲套利? 对冲就是通过股指期货来平衡投资组合的风险。它分为正向与反向两种策略: (1)正向对冲&#xff…

QT 中 UDP 的使用

目录 一、UDP 简介 二、QT 中 UDP 编程的基本步骤 (一)包含头文件 (二)创建 UDP 套接字对象 (三)绑定端口 (四)发送数据 (五)接收数据 三、完整示例代…

Android BitmapShader简洁实现马赛克,Kotlin(二)

Android BitmapShader简洁实现马赛克,Kotlin(二) 这一篇 Android BitmapShader简洁实现马赛克,Kotlin(一)-CSDN博客 遗留一个问题,xml定义的MyView为wrap_content的宽高,如果改成其…

分布式光纤应变监测是一种高精度、分布式的监测技术

一、土木工程领域 桥梁结构健康监测 主跨应变监测:在大跨度桥梁的主跨部分,如悬索桥的主缆、斜拉桥的斜拉索和主梁,分布式光纤应变传感器可以沿着这些关键结构部件进行铺设。通过实时监测应变情况,能够精确捕捉到车辆荷载、风荷…

uniapp的插件开发发布指南

Hbuilder创建项目 项目根目录创建uni_modules 开发组件 发布到插件市场 填写发布说明(未登录需要登录) 点击提交 在终端可以看到 发布成功! 插件市场查看

大厂案例——腾讯蓝鲸DevOps类应用的设计与实践

蓝鲸体系架构图 蓝鲸CICD应用功能架构 降低DEVOPS门槛—开发者中心 CICD应用需要的后台服务 系列阅读 12306亿级流量架构分析(史上最全)实现电商平台从业务到架构的治理体系基于主数据驱动的数据治理什么时候需要分表分库?-CSDN博客

Jetson nano 安装 PCL 指南

本指南帮助 ARM64 架构的 Jetson Nano 安装 PCL(点云库)。 安装步骤 第一步:安装依赖 在终端中运行以下命令,安装 PCL 所需的依赖: sudo apt-get update sudo apt-get install git build-essential linux-libc-dev s…

WPF基础 | WPF 基础概念全解析:布局、控件与事件

WPF基础 | WPF 基础概念全解析:布局、控件与事件 一、前言二、WPF 布局系统2.1 布局的重要性与基本原理2.2 常见布局面板2.3 布局的测量与排列过程 三、WPF 控件3.1 控件概述与分类3.2 常见控件的属性、方法与事件3.3 自定义控件 四、WPF 事件4.1 路由事件概述4.2 事…

JVM堆空间

一、堆空间的核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。堆可以处于物理上不连续的内存空间中&#xff…

【深度学习基础】多层感知机 | 数值稳定性和模型初始化

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…

数字图像处理:实验五

uu们!大家好,欢迎来到数字图像处理第五章节内容的学习,在本章中有关空间滤波的理论学习是十分重要的,所以建议大家要去用心的学习本章,在之后的传感器的相关图像采集时,不可避免的会有噪声等的影响&#xf…