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,发现接口出现大量超时错误,查看日志发现错误信息为…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...