Docker 私有仓库 harbor 搭建
🎈 作者:Linux猿
🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬
目录
一、实验环境
二、安装 harbor
2.1 安装 docker 和 docker-compose
2.2 安装 harbor
2.3 登录 harbor UI 界面
三、测试上传和下载镜像
3.1 docker 常用命令
3.2 上传镜像
3.3 下载镜像
本篇文章主要介绍 Docker 私有仓库 harbor 的搭建,搭建成功后测试镜像的上传和下载。
一、实验环境
本文是在 CentOS 7.9 上进行配置,环境如下所示。
[root@k8s-master node]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[root@k8s-master imagesJar]# docker --version
Docker version 1.13.1, build 7d71120/1.13.1
[root@k8s-master imagesJar]# docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
[root@k8s-master imagesJar]#
二、安装 harbor
2.1 安装 docker 和 docker-compose
首先,需要在服务器上安装 docker 和 docker-compose,执行如下命令。
[root@k8s-master node]# yum install docker docker-compose
2.2 安装 harbor
在服务器上执行如下命令,下载 harbor 软件包。
[root@k8s-master node]# wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz
下载比较慢,可以通过迅雷下载。
解压下载的压缩包,执行命令如下。
[root@k8s-master harbor]# tar zxvf harbor-offline-installer-v1.5.3.tgz
执行命令拷贝解压后的目录到 /opt 目录下,执行命令如下所示。
[root@k8s-master harbor]# mv harbor /opt
进入到 /opt/harbor 目录下,修改文件 harbor.cfg,修改如下字段。
hostname = 192.168.231.152 # 修改 IP 地址为本机 IP
执行如下命令,安装 harbor。
[root@k8s-master harbor]# ./prepare
[root@k8s-master harbor]# ./install.sh
问题 1:
[node@k8s-master harbor]$ sudo ./install.sh
➜ Please set hostname and other necessary attributes in harbor.cfg first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.
Please set --with-notary if needs enable Notary in Harbor, and set ui_url_protocol/ssl_cert/ssl_cert_key in harbor.cfg bacause notary must run under https.
Please set --with-clair if needs enable Clair in Harbor
[node@k8s-master harbor]$
解决方法:在 harbor.cfg 配置文件中仅保留一个 hostname 字段。:
问题 2:
执行 install.sh 脚本的时候如下报错如下。
ERROR: for nginx Cannot start service proxy: b'driver failed programming external connectivity on endpoint nginx (b08a457eb0d19583b0d42a53137a3e8d3a0bc89813b1def8afef7df1d85e1411): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use'ERROR: for proxy Cannot start service proxy: b'driver failed programming external connectivity on endpoint nginx (b08a457eb0d19583b0d42a53137a3e8d3a0bc89813b1def8afef7df1d85e1411): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use'
ERROR: Encountered errors while bringing up the project.
说明本机 80 端口占用了,可以
[node@k8s-master harbor]$ netstat -natp | grep 80
查找到 80 端口对应的进程,通过 kill 命令停止进程。
2.3 登录 harbor UI 界面
在浏览器输入 192.168.231.152/harbor,进入 harbor UI 界面,如下所示。

用户名和密码如下所示。
用户名:admin
密码:Harbor12345
密码在 /opt/harbor/harbor.cfg 中配置,默认是 Harbor12345
登录后界面如下所示。

三、测试上传和下载镜像
先来看下 docker 的常用命令,如果想直接看测试,移步到 2.2 上传镜像即可。
3.1 docker 常用命令
(1)docker save
将指定镜像打包成 tar,方便镜像移动。
docker save -o /root/打包名.tar 镜像名:版本号
例如:
[node@k8s-master dockerImages]$ sudo docker save -o ./demo-1.2.0.tar test/demo:1.2.0
[sudo] node 的密码:
[node@k8s-master dockerImages]$ ls
demo-1.2.0.tar
[node@k8s-master dockerImages]$
执行上述 docker save 命令会在当前目录下出现 demo-1.2.0.tar 包,将该包复制到别的机器,执行docker load 命令就完成 docker 镜像的转移了。
(2)docker load
用于载入打包好的镜像。例如:
[node@k8s-node-1 dockerImages]$ sudo docker load -i demo-1.2.0.tar
9c742cd6c7a5: Loading layer [==================================================>] 129.2 MB/129.2 MB
03127cdb479b: Loading layer [==================================================>] 11.3 MB/11.3 MB
293d5db30c9f: Loading layer [==================================================>] 19.31 MB/19.31 MB
5c384ea5f752: Loading layer [==================================================>] 12.32 MB/12.32 MB
990c5138f5d1: Loading layer [==================================================>] 3.584 kB/3.584 kB
1aaddf64804f: Loading layer [==================================================>] 108.3 MB/108.3 MB
0a8cde955e2b: Loading layer [==================================================>] 3.584 kB/3.584 kB
0931afb63541: Loading layer [==================================================>] 16.5 MB/16.5 MB
Loaded image: test/demo:1.2.0
[node@k8s-node-1 dockerImages]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test/demo 1.2.0 fff004fa39a7 11 hours ago 290 MB
docker.io/nginx alpine 4937520ae206 3 weeks ago 41.4 MB
docker.io/nginx latest eb4a57159180 3 weeks ago 187 MB
registry.access.redhat.com/rhel7/pod-infrastructure latest 99965fb98423 5 years ago 209 MB
[node@k8s-node-1 dockerImages]$
(3)docker tag
用于给镜像打标签,语法格式如下所示。
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
(4)docker push
将本地的镜像上传到镜像仓库,要先登陆到镜像仓库。语法格式如下所示。
docker push [OPTIONS] NAME[:TAG]
3.2 上传镜像
(1)登录 Harbor
首先,需要修改配置,修改 /etc/docker/daemon.json 文件,添加如下内容。
{"insecure-registries": ["192.168.231.152"]
}
其中,IP 是 Harbor 仓库 IP。然后执行如下命令,重启服务。
[root@k8s-master harbor]# systemctl daemon-reload
[root@k8s-master harbor]# systemctl restart docker
然后,需要在本地的服务器(Linux 机器)上登录,执行如下命令登录。
[root@k8s-master harbor]# docker login 192.168.231.152
其中,IP 是 Harbor 仓库的 IP,然后输入用户名和密码(这里默认用户名:admin,密码:Harbor12345)。
登录如果有问题,可以执行如下命令尝试,或者重启机器。
docker-compose down -v
# 需要在 harbor 解压包的目录下执行
docker-compose up -d
(2)登录 Harbor UI 界面
登录 Harbor UI 界面后,点击 项目 -> library -> 推送镜像,如下所示。

可以看到两条命令,第一个命令就是推送到 library 项目下的镜像需要打 TAG 的命令,第二条命令是推送到 library 项目下镜像的推送命令。
(3)上传镜像
执行 docker tag 和 docker push 命令,将镜像上传到 Harbor 中,如下所示。
[root@k8s-master imagesJar]# docker tag test/demo:1.2.0 192.168.231.152/library/test:1.9.0
[root@k8s-master imagesJar]# docker push 192.168.231.152/library/test:1.9.0
The push refers to a repository [192.168.231.152/library/test]
0931afb63541: Mounted from library/demo
0a8cde955e2b: Mounted from library/demo
1aaddf64804f: Mounted from library/demo
990c5138f5d1: Mounted from library/demo
5c384ea5f752: Mounted from library/demo
293d5db30c9f: Mounted from library/demo
03127cdb479b: Mounted from library/demo
9c742cd6c7a5: Mounted from library/demo
1.9.0: digest: sha256:f864fb61dc16e5df453fcb6697418d0229871c6bb584cccdfd8662b1fd06c335 size: 2001
[root@k8s-master imagesJar]#
在 Harbor UI 界面中可以看到对应的镜像。
3.3 下载镜像
执行如下命令拉取镜像。
[root@k8s-master imagesJar]# docker pull 192.168.231.152/library/demo:1.8.0
Trying to pull repository 192.168.231.152/library/demo ...
1.8.0: Pulling from 192.168.231.152/library/demo
Digest: sha256:f864fb61dc16e5df453fcb6697418d0229871c6bb584cccdfd8662b1fd06c335
Status: Image is up to date for 192.168.231.152/library/demo:1.8.0
[root@k8s-master imagesJar]#
参考链接:
https://www.runoob.com/docker/docker-push-command.html
https://www.cnblogs.com/pzk7788/p/10180919.html
Harbor私有镜像仓库离线部署-harbor 2.5.3_harbor离线部署_渡渡甲的博客-CSDN博客
Harbor安装小坑Please set hostname and other necessary attributes in harbor.cfg first._please do not set --with-chartmuseum, as chartmusu_流年 Narcissus yu的博客-CSDN博客 报错:ERROR: for nginx Cannot start service proxy;for proxy Cannot start service proxy;......_这闺女长得真俊啊的博客-CSDN博客
push到harbor的注意事项_error parsing http 405 response body: invalid char_阿白,的博客-CSDN博客
https://www.cnblogs.com/anxminise/p/9764221.html
🎈 感觉有帮助记得「一键三连」支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章」回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞
相关文章:
Docker 私有仓库 harbor 搭建
🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…...
工厂方法模式
在开发组件的时候比如button、text等,需要对这些组件做比较多的初始化工作,比如初始化长度等。传统的开发方案如下: 图 传统开发方案UML 上面的方案组件创建及组件的其他业务操作耦合在一起,违背了单一职责原则;在客户…...
(CentOS 7)nvidia-smi:Failed to initialize NVML: Driver/library version mismatch
[CentOS 7]nvidia-smi:Failed to initialize NVML: Driver/library version mismatch 问题源头: nvidia-smi \text{nvidia-smi} nvidia-smi报错问题 CUDA \text{CUDA} CUDA安装时的问题 这里仅描述自身发现的一种情况,希望对大家有所帮助。 问题源头&…...
呼吸灯——FPGA
文章目录 前言一、呼吸灯是什么?1、介绍2、占空比调节示意图 二、系统设计1、系统框图2、RTL视图 三、源码四、效果五、总结六、参考资料 前言 环境: 1、Quartus18.0 2、vscode 3、板子型号:EP4CE6F17C8 要求: 将四个LED灯实现循环…...
群辉用户接入vocechat的方法(附开通GPT机器人)
群辉安装聊天服务器-加入chatgpt vocechat项目简单的使用介绍集成群辉帐号系统登陆vocechat 第二章接入chatgpt这是一个机器人的演示 这是个处于发展中的不错的项目吧,才感觉到好神奇。有意思。 vocechat项目简单的使用介绍 昨天的找群辉文章的时候看到了vocechat&…...
flutter js交互传参
加载网页的webView WebView(initialUrl:http://test/h5atui//#/mobileMaps?lng${CommonConfig.lng}&lat${CommonConfig.lat},javascriptMode: JavascriptMode.unrestricted,onWebViewCreated: (controller) {_webViewController controller;},onProgress: (process){set…...
重磅IntelliJ IDEA 2023.2 新版本即将发布,拥抱 AI
IntelliJ IDEA 近期连续发布多个EAP版本,官方在对用户体验不断优化的同时,也新增了一些不错的功能,尤其是人工智能助手补充,AI Assistant,相信在后续IDEA使用中,会对开发者工作效率带来不错的提升。 以下是…...
JavaWeb_SpringCloud微服务_Day1-eureka, ribbon, nacos
JavaWeb_SpringCloud微服务_Day1-eureka, ribbon, nacos 认识微服务微服务技术对比 分布式服务架构案例远程调用 eureka注册中心原理搭建EurekaServer服务注册服务发现 Ribbon负载均衡修改负载均衡饥饿加载 nacos注册中心快速入门eureka和nacos对比 来源 认识微服务 微服务技术…...
数据科学领域常用python库
pandas Pandas 的名称源自 “ panel data ”,这是一个计量经济学术语,用于表示多维结构化数据集和 “ Python 数据分析”。众所周知,清理和转换数据在数据分析中非常重要,Pandas 提供了丰富的数据结构和功能,使数据处…...
【Android关键字】startActivityForResult/onActivityResult/setResult方法的使用
最近在写一个安卓程序,在程序里需要用到startActivityForResult这个Intent操作关键字,与该关键字有关的还有onActivityResult和setResult。这里对其用法进行一个总结。 三者在API中的形式 //startActivityForResult与startActivity类似,只不…...
PyTorch深度学习实战(5)——计算机视觉
PyTorch深度学习实战(5)——计算机视觉 0. 前言1. 图像表示2. 将图像转换为结构化数组2.1 灰度图像表示2.2 彩色图像表示 3 利用神经网络进行图像分析的优势小结系列链接 0. 前言 计算机视觉是指通过计算机系统对图像和视频进行处理和分析,利…...
遥感目标检测(1)--R3Det
目录 一、概述 二、三个挑战 三、网络架构编辑 1、旋转RetinaNet 2、精细化旋转RetinaNet 3、与RoIAlign(感兴趣区域插值)进行比较 4、消融实验与对比实验 一、概述 R3Det论文中提到一个端到端的精细化的单级旋转检测器,通过从粗到细…...
使用 vue3-tel-input电话组件时,为什么通过v-model绑定的默认值无效而 通过:value绑定有效?
问题: 使用第三方 vue3-tel-input电话组件时,通过v-model绑定具有初始值的电话变量,但input框内显示的初始值为空? 排查过程: 将 v-model绑定改为 :value绑定后,电话变量初始值竟然能够显示在vue3-tel-inp…...
【运维工程师学习二】OS系统管理
【运维工程师学习二】OS系统管理 1、操作系统管理2、进程管理3、进程的启动4、进程信息的查看4.1、STAT 进程的状态:进程状态使用字符表示的(STAT的状态码),其状态码对应的含义:4.2、ps命令常用用法(方便查看系统进程&…...
【前端技巧】CSS常用知识碎片(九)
CSS常用知识碎片(九) mask-image属性 带有半透明的PNG图像的遮罩效果 .mask-image {mask: no-repeat center / contain;mask-image: url(bird.png); }SVG图形遮罩效果 .mask-image {mask-image: url("data:image/svgxml,%3Csvg viewBox0 0 3232…...
SQL 上升的温度
197 上升的温度 SQL架构 表: Weather ---------------------- | Column Name | Type | ---------------------- | id | int | | recordDate | date | | temperature | int | ---------------------- id 是这个表的主键 该表包含特定日期的温度信息 编写一个 SQL …...
Matlab实现最优化(附上多个完整仿真源码)
最优化是一种寻找最优解的数学方法,它在各个领域都有广泛的应用。在Matlab中,有多种工具箱和函数库可以用来实现最优化,下面我们来介绍一下如何用Matlab实现最优化。 1. 定义目标函数 在开始最优化之前,需要定义一个目标函数。目…...
es下载历史的tar文件
第一步进入官网找到历史版本 第二步复制历史版本名称组合成下面的链接 直接get访问下载。如下链接所示只需要修改7.3.0这个版本号 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz...
顺畅下载chatglm2-6b的模型文件
不管是从huggingface下,git下,wget下,都可能卡。 用推荐的清华源的url下,也卡,但url转换之后的,在windows下不了。 但是在linux上就几十兆每秒 wget https://cloud.tsinghua.edu.cn/seafhttp/files/0d8b273…...
go语言 socket: too many open files 错误分析
问题背景: 近期针对老的PHP接口做了迁移重构,用golang重新实现,在上线之前,测试进行了压测,压测的量级为:200请求/s, 连续请求10s,发现接口出现大量超时错误,查看日志发现错误信息为…...
Micro Debug:Arduino极简嵌入式调试库
1. 项目概述Micro Debug 是一个专为 Arduino 平台设计的极简式嵌入式调试库,其核心设计哲学是“零依赖、零开销、零侵入”——不引入任何额外的硬件资源占用(如额外串口、定时器或DMA通道),不增加运行时调度负担(无任务…...
Lychee Rerank MM惊艳效果:工业图纸图像与技术文档段落的跨模态重排序
Lychee Rerank MM惊艳效果:工业图纸图像与技术文档段落的跨模态重排序 1. 引言:当图纸遇见文字的多模态匹配革命 想象一下这样的场景:你手头有一张复杂的工业设备图纸,需要从海量技术文档中找到与之最匹配的说明段落。传统的关键…...
嵌入式系统内存管理技术与实践
嵌入式系统内存管理的工程实践1. 嵌入式内存管理概述嵌入式系统的内存管理直接决定了系统的三个关键特性:稳定性、实时性和功耗表现。与通用计算系统不同,嵌入式环境对内存使用有着更严格的约束条件,这要求工程师必须掌握专业的内存管理技术。…...
OpenClaw多模型对比:Qwen3.5-4B-Claude与基础版任务实测
OpenClaw多模型对比:Qwen3.5-4B-Claude与基础版任务实测 1. 测试背景与模型选择 最近在搭建个人自动化工作流时,我发现OpenClaw的任务执行质量高度依赖底层大模型的推理能力。为了找到最适合复杂任务的模型,我决定对两个版本进行系统测试&a…...
新手友好:通过快马生成带详解的nodepad项目轻松入门Web开发
作为一个刚接触Web开发的新手,想要自己动手实现一个简易的文本编辑器(nodepad)可能会觉得无从下手。最近我在InsCode(快马)平台上尝试了这个项目,发现整个过程比我预想的要简单很多,特别适合像我这样的初学者来理解Web开发的基本流程。 项目结…...
Audacity:5分钟快速掌握免费音频编辑的终极指南
Audacity:5分钟快速掌握免费音频编辑的终极指南 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 想要专业级的音频编辑能力却不想支付高昂的费用?Audacity正是你寻找的解决方案!…...
GMSL GUI实战:利用EOM眼图与Link Margin优化高速链路设计
1. GMSL高速链路设计的核心挑战 在车载摄像头、工业视觉等需要长距离传输高清视频的场景中,GMSL(千兆多媒体串行链路)技术凭借其高带宽和抗干扰能力成为首选方案。但当我第一次尝试设计6Gbps的GMSL3链路时,信号完整性问题就像个隐…...
面试官最爱问的归并排序:从递归到非递归,带你彻底搞懂边界条件与内存管理(避坑指南)
归并排序实战:从递归陷阱到非递归优化的工程级实现 在技术面试中,归并排序就像一位老练的考官,总能用各种边界条件挑战候选人的代码功底。我曾见过不少开发者能流畅写出递归版本,却在非递归实现中陷入无限循环;也有候选…...
终极foobox-cn配置指南:如何打造专业级音乐播放体验
终极foobox-cn配置指南:如何打造专业级音乐播放体验 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobox-cn作为foobar2000的DUI(自定义用户界面)配置方案&#…...
3分钟掌握AI工作流:Awesome-Dify-Workflow全功能实战指南
3分钟掌握AI工作流:Awesome-Dify-Workflow全功能实战指南 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Di…...
