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

news2025/1/25 4:35:27

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

组播IGMP协议报文介绍

1 IGMP协议 1.1 定义 IGMP(Internet Group Management Protocol)是因特网协议家族中的一个组播协议,它共有三个版本:v1、v2和v3。 IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了查询器选举和组…

hedfs和hive数据迁移后校验脚本

先谈论校验方法,本人腾讯云大数据工程师。 1、hdfs的校验 这个通常就是distcp校验,hdfs通过distcp迁移到另一个集群,怎么校验你的对不对。 有人会说,默认会有校验CRC校验。我们关闭了,为什么关闭?全量迁…

性能优化之动态加载

在过去近三十年的职业生涯里,有几年专注于运行时环境的开发与实现。在runtime中,动态加载技术是其中的基石之一。动态加载技术是指在系统运行过程中,根据需要把程序和数据从外存或网络加载到内存中的过程。其中,lazy loading&…

数据从前端传到后端入库过程分析

数据从前端传到后端入库过程分析 概述 积累了一些项目经验,成长为一个老程序员了,自认为对各种业务和技术都能得心应手的应对了,殊不知很多时候我们借助了搜索引擎的能力,当然现在大家都是通过AI来武装自己。 今天要分析的话题是…

【线性代数】列主元法求矩阵的逆

列主元方法是一种用于求解矩阵逆的数值方法,特别适用于在计算机上实现。其基本思想是通过高斯消元法将矩阵转换为上三角矩阵,然后通过回代求解矩阵的逆。以下是列主元方法求解矩阵 A A A 的逆的步骤: [精确算法] 列主元高斯消元法 步骤 1&am…

LabVIEW太赫兹二维扫描成像系统

使用LabVIEW设计太赫兹二维扫描成像系统。通过LabVIEW平台开发,结合硬件如太赫兹源、平移台、锁相放大器等,实现了高效、精准的成像功能。系统采用蛇形扫描方式,通过动态调整扫描参数,达到优化成像质量的目的。 ​ 项目背景 在非…

Quartus:开发使用及 Tips 总结

Quartus是Altera(现已被Intel收购)推出的一款针对其FPGA产品的综合性开发环境,用于设计、仿真和调试数字电路。以下是使用Quartus的一些总结和技巧(Tips),帮助更高效地进行FPGA项目开发: 这里写目录标题 使用总结TIPS…

Android 自定义View时四个构造函数使用详解

该文章我们以自定义View继承TextView为例来讲解 创建自定义View命名MyTextView,并使其继承TextView 1、自定义View时第一个构造函数 // 第一个构造函数主要是在Java代码中声明一个MyTextView时所用 // 类似这种(MyTextView myTextViewnew MyTextView(this);) // 不…

C#PaddleOCRSharp使用

using PaddleOCRSharp;namespace PaddleOCRSharpDemo {internal class Program{static void Main(string[] args){//中英文模型V3模型OCRModelConfig config null;//OCR参数OCRParameter oCRParameter new OCRParameter();oCRParameter.cpu_math_library_num_threads 6;//预…

vscode配置C/C++环境(详细步骤教程)

本章教程,主要介绍如何在vscode中配置c/c++环境的具体步骤。 一、安装mingw64 链接:https://pan.baidu.com/s/1fwS-CwC7dgIYJTanaINOhA?pwd=rdks 提取码:rdks 下载之后,配置将mingw64添加到系统环境变量中。 二、安装vscode插件 需要在vscode插件商店,安装c/c++插件 三、配…

隐私保护+性能优化,RyTuneX 让你的电脑更快更安全

RyTuneX 是一款专为 Windows 10 和 11 用户量身打造的系统优化工具,采用先进的 WinUI 3 框架开发,以其现代化的设计风格和强大的功能集合脱颖而出。这款工具不仅界面简洁美观,还提供了多样化的系统优化选项,旨在帮助用户最大化设备…

JAVA:Spring WebClient 的应用指南

1、简述 随着微服务架构的普及,服务间的 HTTP 通信需求也越来越多。Spring 提供的 WebClient 是 RestTemplate 的替代方案,支持响应式编程,具有非阻塞的特点,非常适合处理高并发的 HTTP 请求。本文将介绍 WebClient 的基本用法及…

如何给自己的域名配置免费的HTTPS How to configure free HTTPS for your domain name

今天有小伙伴给我发私信,你的 https 到期啦 并且随手丢给我一个截图。 还真到期了。 javapub.net.cn 这个网站作为一个用爱发电的编程学习网站,用来存编程知识和面试题等,平时我都用业余时间来维护,并且还自费买了服务器和阿里云…

深度学习 Pytorch 动态计算图与梯度下降入门

在上节末尾我们发现autograd.grad函数可以灵活进行函数某一点的导数和偏导数的运算,但微分运算只是AutoGrad模块中的一小部分功能,本节将继续讲解这个模块的其他常用功能,并在此基础上介绍另一个常用优化算法:梯度下降算法。 imp…

gitlab使用多数据库

1. 说明 默认情况下,GitLab 使用一个单一的应用数据库,称为主数据库。为了扩展 GitLab,您可以将 GitLab 配置为使用多个应用数据库。 设置多个数据库后,GitLab 将使用第二个应用数据库用于 CI/CD 功能,称为 CI 数据库…

Docker网段和服务器ip冲突导致无法访问网络的解决方法

若宿主机所在网络的网段为172.[17-31].xx.xx,则会与Docker本身内部网络间出现冲突,此时需要重新配置Docker默认地址池 一:查看docker的默认网段 route 二:修改docker的默认网段 etc/docker/daemon.json文件增加修改网段信息 {…

HTML<img>标签

例子 如何插入图片&#xff1a; <img src"img_girl.jpg" alt"Girl in a jacket" width"500" height"600"> 下面有更多“自己尝试”的示例。 定义和用法 该<img>标签用于在 HTML 页面中嵌入图像。 从技术上讲&#x…

leetcode_3092. 最高频率的 ID

https://leetcode.cn/problems/most-frequent-ids/description/ 看到这个数据范围 最极端情况 如果nums全为一个数 并且数量取到最大 那么范围是10的10次方 需要longlong储存 这题主要运用了哈希表配合multiset实现 哈希表主要用作存储某个数的出现次数 mst则用于记录出现次…

01学习nodejs的准备工作

01学习nodejs的准备工作 1.回顾与思考1.1为什么JavaScript可以在浏览器中被执行1.2为什么JavaScript可以操作DOM和BOM&#xff1f;1.3浏览器中的JavaScript运行环境1.4JavaScript 能否做后端开发 2.Nodejs简介2.1什么是nodejs2.2 Node.js中的 JavaScript 运行环境2.3 Node.js可…

2024年度总结-CSDN

2024年CSDN年度总结 Author&#xff1a;OnceDay Date&#xff1a;2025年1月21日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 文章目录 2024年CSDN年度总结1. 整体回顾2…