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
相关文章:

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

Maven的下载安装配置
maven的下载安装配置 maven是什么 Maven 是一个用于 Java 平台的 自动化构建工具,由 Apache 组织提供。它不仅可以用作包管理,还支持项目的开发、打包、测试及部署等一系列行为 Maven的核心功能 项目构建生命周期管理:Maven定义了项目构建…...
Rust:高性能与安全并行的编程语言
引言 在现代编程世界里,开发者面临的最大挑战之一就是如何平衡性能与安全性。在许多情况下,C/C这样的系统级编程语言虽然性能强大,但其内存管理的复杂性导致了各种安全漏洞。为了解决这些问题,Rust 作为一种新的系统级编程语言进入…...
matlab的cat()函数详解(OK)
cat函数的功能是 连接数组 功能: 按指定的维度连接多个向量 结构: C cat(dim, A, B) 按dim指定的维度连接向量A和BC cat(dim, A1, A2, A3,A4, …) 按dim指定的维度连接多个向量A1, A2,A3,A4…C cat(dim, A{:}) 将包含向量的cell或结构数组联合为一…...
将个人微信中的时间改成标准的日期时间格式
list1["10:05","上午 10:07","下午 2:07","晚上 8:07","昨天 16:07","星期天 19:27","星期二 19:27","星期四 14:27","2025年1月10日 17:43"]from datetime import datetime, time…...

centos9编译安装opensips 二【进阶篇-定制目录+模块】推荐
环境:centos9 last opensips -V version: opensips 3.6.0-dev (x86_64/linux) flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, HP_MALLOC, DBG_MALLOC, CC_O0, FAST_LOCK-ADAPTIVE_WAIT ADAPTIVE_WAIT_LOOPS1024, MAX_RE…...

初步搭建并使用Scrapy框架
目录 目标 版本 实战 搭建框架 获取图片链接、书名、价格 通过管道下载数据 通过多条管道下载数据 下载多页数据 目标 掌握Scrapy框架的搭建及使用,本文以爬取当当网魔幻小说为案例做演示。 版本 Scrapy 2.12.0 实战 搭建框架 第一步:在D:\pyt…...

基于SpringBoot的软件产品展示销售系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

pycharm 运行远程环境问题 Error:Failed to prepare environment.
问题排查 拿到更详细的报错信息: Help > Diagnostic Tools > Debug Log Settings section: 添加下面的配置 com.intellij.execution.configurations.GeneralCommandLine 重显报错,我这里是再次运行代码打开 Help | Collect Logs and Diagnosti…...

Redis vs. 其他数据库:深度解析,如何选择最适合的数据库?
一、如何为项目选择合适的数据库? 选择合适的数据库是一个复杂的过程,需要综合考虑多个因素。下面几个维度来详细阐述: 1.数据模型 关系型数据库(RDBMS):适用于高度结构化、关联性强的数据,如电…...

HTB:Support[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用ldapsearch…...
导出地图为pdf文件
有时我们只是想创建能共享的pdf文件,而不是将地图打印出来,arcpy的ExportToPDF()函数可以实现该功能. 操作方法: 1.在arcmap中打开目标地图 2.导入arcpy.mapping模块 import arcpy.mapping as mapping 3.引用当前活动地图文档,把该引用赋值给变量 mxd mapping.MapDocumen…...
Linux中关于glibc包编译升级导致服务器死机或者linux命令无法使用的情况
服务器上编译glibc2.29版本导致命令不能用 Inconsistency detected by ld.so: dl-call-libc-early-init.c: 37: _dl_call_libc_early_init: Assertion sym ! NULL failed!下面是造成不可用的原因 1.编译完gcc 2.29版本后,开始做映射,以达到能使用最新版…...

Golang Gin系列-8:单元测试与调试技术
在本章中,我们将探讨如何为Gin应用程序编写单元测试,使用有效的调试技术,以及优化性能。这包括设置测试环境、为处理程序和中间件编写测试、使用日志记录、使用调试工具以及分析应用程序以提高性能。 为Gin应用程序编写单元测试 设置测试环境…...

linux如何修改密码,要在CentOS 7系统中修改密码
要在CentOS 7系统中修改密码,你可以按照以下步骤操作: 步骤 1: 登录到系统 在登录提示符 localhost login: 后输入你的用户名。输入密码并按回车键。 步骤 2: 修改密码 登录后,使用 passwd 命令来修改密码: passwd 系统会提…...
Kafka后台启动命令
#保存日志 nohup ./kafka-server-start.sh ../config/server.properties > /path/to/logfile.log 2>&1 &#不保存日志 nohup ./kafka-server-start.sh ../config/server.properties >/dev/null 2>&1 & nohup: 是一个Unix/Linux命令,用于…...

使用Cline+deepseek实现VsCode自动化编程
不知道大家有没有听说过cursor这个工具,类似于AIVsCode的结合体,只要绑定chatgpt、claude等大模型API,就可以实现对话式自助编程,简单闲聊几句便可开发一个软件应用。 但cursor受限于外网,国内用户玩不了,…...

【redis初阶】redis客户端
目录 一、基本介绍 二、认识RESP(redis自定的应用层协议名称) 三、访问github的技巧 四、安装redisplusplus 4.1 安装 hiredis** 4.2 下载 redis-plus-plus 源码 4.3 编译/安装 redis-plus-plus 五、编写运行helloworld 六、redis命令演示 6.1 通用命令的…...

【ComfyUI专栏】ComfyUI 部署Kolors
什么是Kolors?我相信一定会有朋友可能第一次听说这个生图的模型,开始我也很难想象,这竟然是快手推出的可灵AI的项目,我们可以直接利用模型来生成图片和视频。 大家可以通过直接访问可灵AI的网址获取到可灵的项目,但是对于我们来说我们需要基于ComfyUI来生成必要的图片和视…...
深入了解 HTTP 头部中的 Accept-Encoding:gzip、deflate、br、zstd
在现代Web开发中,性能优化是至关重要的一部分。HTTP协议中的Accept-Encoding头部正是为性能提升提供了一个非常有效的方式,它告知服务器客户端能够理解并接收哪些压缩算法的响应内容。在这篇博客中,我们将详细探讨Accept-Encoding头部的作用&…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...