Docker搭建私有仓库harbor(docker 镜像仓库搭建)
- Harbor介绍
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker
Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
官网地址:https://github.com/goharbor/harborDocker Harbor是一个企业级的Docker Registry服务,旨在提供安全、可靠的镜像存储和管理解决方案。以下是Docker
Harbor的一些关键特点:
- 私有Registry:Docker Harbor允许用户搭建私有的Docker Registry,使得企业可以在自己的内部网络中安全地存储和管理Docker镜像。
- 安全性:Docker Harbor提供了访问控制、用户和团队管理功能,以确保镜像的安全性。它支持用户身份验证、权限控制、安全扫描等功能,帮助用户保护他们的容器镜像不受未经授权的访问。
- 可扩展性:Docker Harbor支持集群部署,可以轻松地扩展以应对大规模的容器镜像存储需求。
- 镜像复制和同步:Docker Harbor允许用户在不同的Registry之间复制和同步镜像,方便用户在多个部署环境之间共享和管理镜像。
- 审计和日志记录:Docker Harbor提供审计和日志记录功能,记录用户对镜像的操作,以帮助用户跟踪镜像的变更历史。 总的来说,Docker Harbor是一个功能强大的企业级Docker
Registry服务,为用户提供了安全、可靠的方式来管理和存储Docker镜像。
- 所需要的安装包
链接:https://pan.baidu.com/s/1rN25l72i6W36ANAOqxcc_w 提取码:1021
- 为harbor签发证书
[root@harbor ~]# hostnamectl set-hostname harbor && /bin/bash
[root@harbor ~]# mkdir /data/ssl -p
[root@harbor ~]# cd /data/ssl/#生成ca证书
#生成一个3072位的key,也就是私钥
[root@harbor ssl]# openssl genrsa -out ca.key 3072
Generating RSA private key, 3072 bit long modulus
...........++
.............++
e is 65537 (0x10001)
#生成一个数字证书ca.pem,3650表示证书的有效时间是3年,按箭头提示填写即可,没有箭头标注的为空:
[root@harbor ssl]# openssl req -new -x509 -days 3650 -key ca.key -out ca.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CH
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:BJ
Organizational Unit Name (eg, section) []:BJ
Common Name (eg, your name or your server's hostname) []:CHONG
Email Address []:123@163.com#生成域名的证书
#生成一个3072位的key,也就是私钥
[root@harbor ssl]# openssl genrsa -out harbor.key 3072
Generating RSA private key, 3072 bit long modulus
.++
..........................................................++
e is 65537 (0x10001)
#生成一个证书请求,一会签发证书时需要的,标箭头的按提示填写,没有箭头标注的为空:
[root@harbor ssl]# openssl req -new -key harbor.key -out harbor.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CH
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:harbor #主机名
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#签发证书
[root@harbor ssl]# openssl x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 3650
#显示如下说明证书发布完成
Signature ok
subject=/C=CH/ST=BJ/L=BJ/O=Default Company Ltd/CN=harbor
Getting CA Private Key
注:安装harbor需要docker,记得安装docker
- 安装harbor
#创建harbor安装目录
[root@harbor ~]# mkdir /data/install -p
[root@harbor ~]# cd /data/install/
#上传harbor离线包到该目录:harbor-offline-installer-v2.3.0-rc3.tgz
#下载harbor离线包的地址:https://github.com/goharbor/harbor/releases/tag/
[root@harbor install]# ll
total 614492
-rw-r--r-- 1 root root 629238614 Apr 11 21:40 harbor-offline-installer-v2.3.0-rc3.tgz#解压该安装包
[root@harbor install]# tar -xf harbor-offline-installer-v2.3.0-rc3.tgz
[root@harbor install]# ll
total 614492
drwxr-xr-x 2 root root 122 Apr 11 21:42 harbor
-rw-r--r-- 1 root root 629238614 Apr 11 21:40 harbor-offline-installer-v2.3.0-rc3.tgz
[root@harbor install]# cd harbor
[root@harbor harbor]# ll
total 617800
-rw-r--r-- 1 root root 3361 Jun 17 2021 common.sh
-rw-r--r-- 1 root root 632593607 Jun 17 2021 harbor.v2.3.0.tar.gz
-rw-r--r-- 1 root root 7840 Jun 17 2021 harbor.yml.tmpl
-rwxr-xr-x 1 root root 2500 Jun 17 2021 install.sh
-rw-r--r-- 1 root root 11347 Jun 17 2021 LICENSE
-rwxr-xr-x 1 root root 1881 Jun 17 2021 prepare
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml#修改配置
[root@harbor harbor]# vim harbor.yml
只修改三种地方 一个是主机名 一个是key和pem得位置

- 安装docker-compose
上传docker-compose-Linux-x86_64文件到harbor机器
[root@harbor harbor]# ll
total 629776
-rw-r--r-- 1 root root 3361 Jun 17 2021 common.sh
-rw-r--r-- 1 root root 12254160 Apr 11 22:44 docker-compose-Linux-x86_64.64
-rw-r--r-- 1 root root 632593607 Jun 17 2021 harbor.v2.3.0.tar.gz
-rw-r--r-- 1 root root 7826 Apr 11 22:41 harbor.yml
-rw-r--r-- 1 root root 7840 Jun 17 2021 harbor.yml.tmpl
-rwxr-xr-x 1 root root 2500 Jun 17 2021 install.sh
-rw-r--r-- 1 root root 11347 Jun 17 2021 LICENSE
-rwxr-xr-x 1 root root 1881 Jun 17 2021 prepare
You have new mail in /var/spool/mail/root
[root@harbor harbor]# mv docker-compose-Linux-x86_64.64 /usr/bin/docker-compose
[root@harbor harbor]# chmod +x /usr/bin/docker-compose
[root@harbor harbor]# /bin/bash
[root@harbor harbor]# docker-compose version
docker-compose version 1.26.2, build eefe0d31
docker-py version: 4.2.2
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
[root@harbor harbor]#
- 上传harbor所需要得镜像
docker-harbor-2-3-0.tar.gz
#解压镜像
[root@harbor harbor]# docker load -i docker-harbor-2-3-0.tar.gz
[root@harbor harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
goharbor/harbor-exporter v2.3.0 fa4ecf260b3a 2 years ago 80.7MB
goharbor/chartmuseum-photon v2.3.0 199be7eb1b5b 2 years ago 178MB
goharbor/redis-photon v2.3.0 3cc2c3e315a2 2 years ago 191MB
goharbor/trivy-adapter-photon v2.3.0 3c3dc5fc0529 2 years ago 164MB
goharbor/notary-server-photon v2.3.0 a8e3a26ef25a 2 years ago 105MB
goharbor/notary-signer-photon v2.3.0 e8776cc92436 2 years ago 102MB
goharbor/harbor-registryctl v2.3.0 4cf0d9bc3086 2 years ago 132MB
goharbor/registry-photon v2.3.0 222f05a9ab07 2 years ago 81MB
goharbor/nginx-photon v2.3.0 78f6ae7adc04 2 years ago 44MB
goharbor/harbor-log v2.3.0 9446a5b39706 2 years ago 194MB
goharbor/harbor-jobservice v2.3.0 bac328ac1a47 2 years ago 170MB
goharbor/harbor-core v2.3.0 7bbebce7798c 2 years ago 157MB
goharbor/harbor-portal v2.3.0 c4f22964cbf3 2 years ago 57.3MB
goharbor/harbor-db v2.3.0 fc74663d9e30 2 years ago 262MB
goharbor/prepare v2.3.0 a830321ca695 2 years ago 291MB#安装harbor
[root@harbor harbor]# cd /data/install/harbor
[root@harbor harbor]# ./install.sh
看到以下内容 成名成功

5. 安装成功
默认用户名:admin
默认密码:Harbor12345


6. 新建项目


- 其他docker机器配置该镜像仓库
#两台服务器配置本地hosts
vim /etc/hosts
192.168.40.180 test-server01
192.168.40.181 harbor#修改180机器得daemon.json配置
[root@test-server01 ~]# vim /etc/docker/daemon.json{"registry-mirrors":["https://vl2nkrv0.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"],"insecure-registries": ["192.168.40.181","harbor"]
}
#harbor机器得IP和主机名#重启docker
[root@test-server01 ~]# systemctl restart docker
- docker登录harbor进行测试
[root@test-server01 ~]# docker login 192.168.40.181
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded#打包一个镜像上传到test项目
[root@test-server01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat v1 422fe599256a 4 weeks ago 803MB
nginx v1 f436f09d9c6c 4 weeks ago 342MB
inter-image latest 5eb7b6cd9fb7 4 weeks ago 342MB
volume latest 4fd3ed843dab 2 years ago 231MB
centos latest 5d0da3dc9764 2 years ago 231MB
[root@test-server01 ~]#
#以本机有的镜像tomcat为例进行打标签[root@test-server01 ~]# docker tag tomcat:v1 192.168.40.181/test/tomcat:v1
[root@test-server01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.40.181/test/tomcat v1 422fe599256a 4 weeks ago 803MB
tomcat v1 422fe599256a 4 weeks ago 803MB
nginx v1 f436f09d9c6c 4 weeks ago 342MB
inter-image latest 5eb7b6cd9fb7 4 weeks ago 342MB
centos latest 5d0da3dc9764 2 years ago 231MB
volume latest 4fd3ed843dab 2 years ago 231MB
#上传打上标签得镜像
[root@test-server01 ~]# docker push 192.168.40.181/test/tomcat:v1
The push refers to repository [192.168.40.181/test/tomcat]
baa34f4b2d36: Pushed
9098e168cf25: Pushed
8e1cd85f5863: Pushed
70e115906be4: Pushed
6900d18cbe12: Pushed
49461804abc1: Pushed
2e412669ee56: Pushed
74ddd0ec08fa: Pushed
v1: digest: sha256:99c83711e386c7de760bc2c549b231995928bcb37b0d27b7d6478b6c332a5200 size: 1999
#成功上传到镜像仓库
- harbor web页面查看
已经有这个tomcat包
- 测试从harbor下载镜像
#删除本地镜像[root@test-server01 ~]# docker images |grep test/tomcat
192.168.40.181/test/tomcat v1 422fe599256a 4 weeks ago 803MB
[root@test-server01 ~]# docker rmi 192.168.40.181/test/tomcat:v1
Untagged: 192.168.40.181/test/tomcat:v1
Untagged: 192.168.40.181/test/tomcat@sha256:99c83711e386c7de760bc2c549b231995928bcb37b0d27b7d6478b6c332a5200
[root@test-server01 ~]# docker images |grep test/tomcat#下载镜像
[root@test-server01 ~]# docker pull 192.168.40.181/test/tomcat:v1
v1: Pulling from test/tomcat
Digest: sha256:99c83711e386c7de760bc2c549b231995928bcb37b0d27b7d6478b6c332a5200
Status: Downloaded newer image for 192.168.40.181/test/tomcat:v1
192.168.40.181/test/tomcat:v1
You have new mail in /var/spool/mail/root
[root@test-server01 ~]# docker images |grep test/tomcat
192.168.40.181/test/tomcat v1 422fe599256a 4 weeks ago 803MB
页面可以看到下载次数已经是1了
相关文章:
Docker搭建私有仓库harbor(docker 镜像仓库搭建)
Harbor介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目…...
面试题:MySQL 索引
1. 谈一下你对于MySQL索引的理解?(为什么MySQL要选择B+树来存储索引) MySQL的索引选择B+树作为数据结构来进行存储,使用B+树的本质原因在于可以减少IO次数,提高查询的效率,简单来说就是可以保证在树的高度不变的情况下存储更多的数据: IO效率的提高:在MySQL数据库中,…...
云计算day13
一、Git 概述 Git 是一种分布式版本控制系统,用于跟踪和管理代码的变更。它是由 Linus Torvalds 创建的,最初被设计用于 Linux 内核的开发。Git 允许开发 人员跟踪和管理代码的版本,并且可以在不同的开发人员之间进行协作。 Github 用的就…...
2024年孝感中级职称报名开始了吗?
2024年孝感中级职称申报终于开始了,之前参加过水测的小伙伴们,开始准备评审了 2024年孝感本批次申报时间:中级、初级职称网上申报时间:2024年8月1日至8月31日。 注意:个人通过“湖北省职称评审管理信息系统”申报,须先…...
RAG技术之Router
Router有什么用? 在RAG应用中,Router可以帮助我们基于用户的查询意图来决定使用何种数据类型或数据源,比如是否需要进行语义检索、是否需要进行text2sql查询,是否需要用function call来进行API调用。 Router也可以根据用户的查询…...
linux系统通过修改sudo文件使普通用户拥有类似root用户权限
说明:普通用户要想拥有root权限,如果不在sudo文件里配置就算把该用户加到wheel组(root用户所在的组)也不行。 要想通过在命令前加上sudo使得该用户以root权限执行命令,需要修改/etc/sudoers文件。 (如果通…...
基于PyCharm在Windows系统上远程连接Linux服务器中Docker容器进行Python项目开发与部署
文章目录 摘要项目结构项目开发项目上线参考文章 摘要 本文介绍了如何在Windows 10系统上使用PyCharm专业版2024.1,通过Docker容器在阿里云CentOS 7.9服务器上进行Python项目的开发和生产部署。文章详细阐述了项目结构的搭建、PyCharm的使用技巧、以及如何将开发项…...
TypeScript学习篇-类型介绍使用、ts相关面试题
文章目录 基础知识基础类型: number, string, boolean, object, array, undefined, void(代表该函数没有返回值)enum(枚举): 定义一个可枚举的对象typeinterface联合类型: |交叉类型: &any 类型null 和 undefinednullundefined never类型 面试题及实战1. 你觉得使用ts的好处…...
超详细!Jmeter性能测试
前言 性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。 测试流程: 需求分析→环境搭建→测试计划→脚…...
C语言经典习题24
文件操作习题 一 编程删除从C盘home文件夹下data.txt文本文件中所读取字符串中指定的字符,该指定字符由键盘输入,并将修改后的字符串以追加方式写入到文本文件C:\home\data.txt中。 #include<stdio.h> main() { char s[100],ch; int i;…...
SQL labs-SQL注入(三,sqlmap使用)
本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 引言: 盲注简述:是在没有回显得情况下采用的注入方式,分为布尔盲注和时间盲注。 布尔盲注:布尔仅有两种形式,ture&#…...
统一认证与单点登录:简明概述与应用
1. 统一认证概述 统一认证是一种身份验证机制,允许用户使用一个账户来访问多个系统和应用程序。它的主要目标是简化用户的登录过程,提高安全性,并减少管理开销。统一认证通过集中管理用户信息,使得用户只需一次认证即可访问不同的…...
MSPM0G3507学习笔记1:开发环境_引脚认识与点灯
今日速通一款Ti的单片机用于电赛:MSPM0G3507 这里默认已经安装好了Keil5_MDK 首先声明一下: 因为是速成,所以需要一定单片机学习基础,然后我写的也不会详细,这个专栏的笔记也就是自己能看懂就行的目标~~~ 文章提供测试代码解…...
使用法国云手机进行面向法国的社媒营销
在当今数字化和全球化的时代,社交媒体已经成为企业营销和拓展市场的重要工具。对于想进入法国市场的企业来说,如何在海外社媒营销中脱颖而出、抓住更多的市场份额,成为了一个关键问题。法国云手机正为企业提供全新的营销工具,助力…...
C++学习笔记——模板
学习视频 文章目录 模板的概念函数模板函数模板语法函数模板注意事项函数模板案例普通函数与函数模板的区别普通函数与函数模板的调用规则模板的局限性 类模板类模板与函数模板区别类模板中成员函数创建时机类模板对象做函数参数类模板与继承类模板成员函数类外实现类模板分文件…...
财务分析,奥威BI行计算助力财务解放报表工作
【财务分析,奥威BI行计算助力财务解放报表工作】 在企业的财务管理体系中,财务报表的编制与分析是至关重要的一环。然而,传统的手工编制报表方式不仅耗时耗力,还难以应对日益复杂多变的财务数据需求。奥威BI(Business…...
文件写入、读出-linux
基于linux操作系统,编写存储功能,在网上搜了几个例子,一直报创建错误, fopen(SAVE_PATH_OWN_INF_FILE, "w") fopen(SAVE_PATH_OWN_INF_FILE, "a"), 使用这两个创建均失败,最后发现创建可以用以…...
环境搭建-Windows系统搭建Docker
Windows系统搭建Docker 一、系统虚拟化1.1 启用虚拟化2.2 启用Hyper-v并开启虚拟任务 三、安装WSL3.1 检验安装3.2 安装WSL 四、Docker安装4.1 Docker安装包下载4.2 Docker安装4.3 运行docker Desktop 五、Docker配置5.1 打开Docker配置中心5.2 配置Docker国内镜像 六、使用 一…...
k8s零零散散问题
安装教程 https://blog.csdn.net/weixin_43933728/article/details/137977799 加入集群错误问题 https://blog.csdn.net/Linbling/article/details/139122862...
The Llama 3 Herd of Models.Llama 3 模型论文全文
现代人工智能(AI)系统是由基础模型驱动的。本文提出了一套新的基础模型,称为Llama 3。它是一组语言模型,支持多语言、编码、推理和工具使用。我们最大的模型是一个密集的Transformer,具有405B个参数和多达128K个tokens的上下文窗口。本文对Llama 3进行了广泛的实证评价。我们…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
