harbor私有镜像仓库,搭建及管理

私有镜像仓库

docker-distribution docker的镜像仓库,默认端口号5000

做个仓库,把镜像放里头,用什么服务,起什么容器

vmware公司在docker私有仓库的基础上做了一个web页面,是harbor

docker可以把仓库的镜像下载到本地,也可以直接用私有仓库的镜像启动容器

云服务商的镜像加速器,就是云服务商做的私有镜像仓库,供云服务商的用户使用

registry镜像仓库tag格式

registry:5000/img/img:tag

仓库地址 路径 镜像名称和标签

路径不需要提前创建

~]# docker tag  nginx:latest registry:5000/img/myimg:nginx
#  上传镜像之前,先要给镜像改名字,才能识别把镜像放在什么仓库的什么路径下
~]# docker push  registry:5000/img/myimg:nginx 

镜像仓库的library路径比较特别,是默认路径

创建容器时,不写路径,默认就是library

容器可以映射宿主机的目录

部署harbor镜像仓库

官方把harbor做成了compose项目,

部署harbor服务器:

1. 给harbor主机安装docker环境,因为harbor是以docker-compose的方式部署的

]# dnf -y install docker-ce
]# systemctl enable docker --now

2. harbor仓库没有域名,只能使用主机名。所以要在harbor主机的/etc/hosts做好映射

]# tail -1 /etc/hosts
192.168.1.30  harbor

3. 用跳板机把harbor软件包传给harbor主机,harbor是一个绿色软件,不用安装,解压就可以用,比如解压到/usr/local/目录下

# proxy主机操作]# rsync -av  harbor-v2.9.2.tgz   192.168.1.30:/root/

# harbor主机操作
]# tar  -zxf  harbor-v2.9.2.tgz   -C /usr/local/
]# cd  /usr/local/harbor/
]# tree
.
├── common.sh
├── harbor.v2.9.2.tar.gz           #  镜像
├── harbor.yml.tmpl
├── install.sh
├── LICENSE
└── prepare
]# docker load -i harbor.v2.9.2.tar.gz   # 导入镜像到本地
]# docker images
REPOSITORY                      TAG       IMAGE ID       CREATED        SIZE
goharbor/harbor-exporter        v2.9.2    xxx           x months ago    xxMB
goharbor/redis-photon           v2.9.2    xxx           x months ago    xxMB
goharbor/trivy-adapter-photon   v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-registryctl     v2.9.2    xxx           x months ago    xxMB
goharbor/registry-photon        v2.9.2    xxx           x months ago    xxMB
goharbor/nginx-photon           v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-log             v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-jobservice      v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-core            v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-portal          v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-db              v2.9.2    xxx           x months ago    xxMB
goharbor/prepare                v2.9.2    xxx           x months ago    xxMB

4. harbor用https协议,https需要一个证书,

]# mkdir tls
]# openssl genrsa  -out tls/cert.key 2048        # 创建私钥
]# openssl req -new -x509 -days 3650  -key tls/cert.key -out tls/cert.crt  -subj "/C=CN/ST=SZ/L=SZ/O=HI/OU=HI/CN=harbor"  #生成证书
]# tree tls/
tls/
├── cert.crt
└── cert.key

5. 启动harbor项目

]# mv  harbor.yml.tmpl harbor.yml
]# vim harbor.yml
05:    hostname: harbor
08:    # http:         # 注释掉http,用https
10:      # port: 80
17:    certificate: /usr/local/harbor/tls/cert.crt   # 证书
18:    private_key: /usr/local/harbor/tls/cert.key   # 密钥
36:    harbor_admin_password: <登录密码>           # 自己设置登录密码
]# ./prepare  #检测项目环境,如果OK,就会生成docker-compose.yml项目文件
]# ls
common     docker-compose.yml    harbor.yml  LICENSE  privkey.pem
common.sh  harbor.v2.9.2.tar.gz  install.sh  prepare  tls
]# docker compose -f docker-compose.yml up -d   # 启动docker项目
# harbor这个docker compose项目开机启动
]# chmod  0755  /etc/rc.d/rc.local 
]# echo   "/usr/bin/docker compose -p harbor start"  >> /etc/rc.d/rc.local 

6. 通过ELB负载均衡443端口发布harbor通过https://elb_ipaddress访问harbor仓库

7. 管理员admin,通过菜单栏:系统管理-->用户管理创建普通用户

8. docker1主机进行本机域名解析

~]# tail -1 /etc/hosts
192.168.1.30  harbor

9. harbor仓库信息添加docker主机docker知道这么仓库

添加信任主机(证书,自己做的需要,授权机构认证的不需要)

]# cat /etc/docker/daemon.json
{"registry-mirrors": ["https://harbor:443", "https://words.mirror.swr.examplecloud.com"],"insecure-registries": ["harbor:443"]
]# systemctl restart docker
]# docker info  |grep -A2 harbor 
  harbor:443                  # docker已识别harbor仓库127.0.0.0/8
 Registry Mirrors:
  https://harbor:443/        # docker已识别harbor仓库https://words.mirror.swr.examplecloud.com/
 Live Restore Enabled: false

10. 命令行,用创建普通用户,测试登录登出

]# docker login harbor:443
Username: example_name             #  输入用户名
Password:                            #  输入密码
... Your password will be stored in /root/.docker/config.json
...            #  记录登录信息等于开机自动登录不用手动登录
...
Login Succeeded                 # 登录成功]# docker logout harbor:443
Removing login credentials for harbor:443
~]# cat /root/.docker/config.json
{"auths": {}         # 登录信息会删除
}

11. harborregistry区别 registry可以无视路径上传镜像

12. harbor仓库管理

harbor:443/myimg/img:tag

harbor里面概念项目,在web页面左侧菜单栏,第一字段

harbor项目就是harbor路径项目需要提前创建出来如果不

提前创建出来,这个项目就是无法使用的,

谁创建这个项目项目路径管理其他人使用其他名称其他路径

所以上传镜像需要创建项目

创建项目基于web通过web页面创建项目

登录仓库自定义用户需要这个用户创建项目

项目分为两种

一种公共仓库任何人可以访问下载镜像

一种私有仓库只有认证用户可以访问下载

harbor容器集群核心仓库服务

13. 创建三个harbor项目

公共项目k8splugins

私有项目private

14. 上传镜像harbor项目

harbor仓库不管公共还是私有,想上传镜像,都需要提供用户名密码

如何提供docker login

# docker主机操作
]# docker login harbor:443             #  登录harbor仓库
Username: example_name                  # 普通用户用户名
Password:                               # 此用户密码
]# docker images                        # 查看docker主机本地镜像
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
myos         php-fpm   example      xx months ago   x75MB
myos         nginx     example      xx months ago   x74MB
myos         latest    example     xx months ago   x.67MB
myos         httpd     example      xx months ago   x99MB
myos         8.5       example       xx months ago   x49MB
rockylinux   8.5       example        x years ago     x05MB
]# docker tag myos:httpd harbor:443/private/httpd:latest                       #tag,给本地镜像标签
]# docker push harbor:443/private/httpd:latest #push,上传tag好的镜像到harbor仓库
The push refers to repository [harbor:443/private/httpd]
xxx: Pushed 
xxx: Pushed 
xxx: Pushed 
latest: digest: sha256:xxx size: xxx 

上传成功harborweb页面看到上传镜像httpd

标签可在点击private/httpd看到

15. library项目的所有者是harbor服务器管理员用户

所以普通用户没有权限访问这个项目

如果要访问,需要管理员用户给予权限

授权方法

 管理员用户admin在web界面登录harbor仓库,点击library项目点击菜单栏关键字"成员"添加用户角色选择

授权后,普通用户可以向harbor仓库library项目上传镜像

]# docker push harbor:443/library/myos:latest 
The push refers to repository [harbor:443/library/myos]
xxx: Pushed 
latest: digest: sha256:xxx size: x

docker优秀很多当项目对容器需求量很大docker似乎比较局限于一台机器上运行。大规模集群应用,似乎有一定限制。

大规模容器集群编排管理容易为了解决这个问题各个厂商推出第二个容器管理解决方案就是管理容器集群

docker swarm apache mesoskubernetes

kubernetes符合市场需求

所以现在主流容器集群编排管理工具主要kubernetes也就是k8s

k8s为首时代称为云原生

应该可以这么理解

docker管理容器、镜像以及镜像仓库工具

k8s管理容器集群工具

harbor是提供镜像仓库工具

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab 的.m 文件批量转成py文件

在工作中碰到了一个问题&#xff0c;需要将原来用matlab gui做出来的程序改为python程序&#xff0c;因为涉及到很多文件&#xff0c;所以在网上搜了搜有没有直接能转化的库。参考了【Matlab】一键Matlab代码转python代码详细教程_matlab2python-CSDN博客 这位博主提到的matla…

Lanterns (dp 紫 线段树 二分 维护dp)

Lanterns - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 让所有点被覆盖&#xff0c;那么状态可以设计成覆盖一段前缀&#xff0c;并且中间不允许出现断点 由于CF崩了&#xff0c;所以暂时没提交代码。 记f(i) 为前 i 个灯笼点亮的最长前缀。 由于答案具有保留性&#xff…

自闭症孩子送寄宿学校,给他们成长的机会

在自闭症儿童的教育与康复之路上&#xff0c;选择一种合适的寄宿方式对于孩子的成长至关重要。这不仅关乎到孩子能否获得专业的训练与关怀&#xff0c;还直接影响到他们未来的社交能力、独立生活能力以及心理健康。今天&#xff0c;我们将以广州的星贝育园自闭症儿童寄宿制学校…

SOI 刻蚀气体

Liu, Yingjie, et al. "Very sharp adiabatic bends based on an inverse design." Optics letters 43.11 (2018): 2482-2485.

yolov8模型在手部关键点检测识别中的应用【代码+数据集+python环境+GUI系统】

yolov8模型在手部关键点检测识别中的应用【代码数据集python环境GUI系统】 背景意义 在手势识别、虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR&#xff09;等领域&#xff0c;手部关键点检测为用户提供了更加自然、直观的交互方式。通过检测手部关键点&#…

FreeSWITCH 简单图形化界面29 - 使用mod_xml_curl 动态获取配置、用户、网关数据

FreeSWITCH 简单图形化界面29 - 使用mod_xml_curl 动态获取配置、用户、网关数据 FreeSWITCH GUI界面预览安装FreeSWITCH GUI先看使用手册1、简介2、安装mod_xml_curl模块3、配置mod_xml_curl模块3、编写API接口4、测试一下5、其他注意的地方 FreeSWITCH GUI界面预览 http://m…

鸿蒙开发(NEXT/API 12)【跨设备互通特性简介】协同服务

跨设备互通提供跨设备的相机、扫描、图库访问能力&#xff0c;平板或2in1设备可以调用手机的相机、扫描、图库等功能。 说明 本章节以拍照为例展开介绍&#xff0c;扫描、图库功能的使用与拍照类似。 用户在平板或2in1设备上使用富文本类编辑应用&#xff08;如&#xff1a;…

【yolo破损纸板-包装盒-快递袋缺陷检测】

yolo破损纸板-包装盒-快递袋缺陷检测 破损纸质包装盒检测方盒型快递包裹检测 破损纸质包装盒检测 数据集合模型 可视化 方盒型快递包裹检测 数据集和模型 train: ../train/images val: ../valid/images test: ../test/images nc: 1 names: - box_packet可视化

股指期权交易详细基础介绍

股指期权是期权市场中的一种特定类型&#xff0c;其标的资产为股票指数。简而言之&#xff0c;它允许投资者在未来某个特定时间&#xff0c;以预先约定的价格&#xff0c;买入或卖出股票指数的权利。在中国&#xff0c;已上市的股指期权包括上证50、沪深300和中证1000股指期权&…

鸿萌数据恢复服务: 修复 Windows, Mac, 手机中 “SD 卡无法读取”错误

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务&#xff0c;并针对企业面临的数据安全风险&#xff0c;提供专业的相关数据安全培训。 公司是多款国际主流数据恢复软件的授权代理商&#xff0c;为…

C语言深入理解指针(四)

目录 字符指针变量数组指针变量数组指针变量是什么数组指针变量怎么初始化 二维数组传参的本质函数指针变量函数指针变量的创建函数指针变量的使用代码typedef关键字 函数指针数组转移表 字符指针变量 字符指针在之前我们有提到过&#xff0c;&#xff08;字符&#xff09;&am…

Python--TCP/UDP通信

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.客户端与服务端通信原理 1. 服务器端 服务器端的主要任务是监听来自客户端的连接请求&#xff0c;并与之建立连接&#xff0c;然后接收和发送数据。 创建套接字&#xff1a;首先&#xff0…

《使用 LangChain 进行大模型应用开发》学习笔记(四)

前言 本文是 Harrison Chase &#xff08;LangChain 创建者&#xff09;和吴恩达&#xff08;Andrew Ng&#xff09;的视频课程《LangChain for LLM Application Development》&#xff08;使用 LangChain 进行大模型应用开发&#xff09;的学习笔记。由于原课程为全英文视频课…

Gitlab学习(009 gitlab冲突提交)

尚硅谷2024最新Git企业实战教程&#xff0c;全方位学习git与gitlab 总时长 5:42:00 共40P 此文章包含第30p-第p34的内容 文章目录 冲突提交不同人修改不同文件不同人修改同文件的不同区域不同人修改同文件的相同区域 同时变更文件名和文件内容gitLab功能拓展code review代码复…

Mastering Qt 番外 —— 添加源码调试

笔者最近正在尝试深入的学习Qt框架&#xff0c;经常需要明确我经常使用的类底下发生了什么&#xff0c;因此笔者决定仔细研究一下如何进行源码级别的调试 此篇文章将会介绍如何使用Qt Creator这个IDE进行调试。最终效果如下 EasyWay 笔者采用的是这个最简单明了的方式&#xff…

OpenCV基础入门30讲(Python)——第三讲 图像对象的创建与赋值

在OpenCV里&#xff0c;对图像的操作是最为基本的。接下来我们看一下图像对象的创建与赋值。 注&#xff1a;前文介绍过的代码和操作不再重复。 代码 在 main 文件中&#xff0c;先导入新的模块 # 导入 numpy 模块&#xff0c;重命名为 np import numpy as np 再写进以下代…

Cpp类和对象(中)(4)

文章目录 前言一、类的六个默认成员函数二、构造函数构造函数的概念构造函数的特性构造函数的两种分类编译器默认生成构造函数意义及相关问题C11打的补丁 三、析构函数析构函数的概念析构函数的特性验证是否会自动调用析构函数验证析构函数对于内置与自定义类型处理验证先定义后…

LLM - 理解 多模态大语言模型(MLLM) 的 对齐微调(Alignment) 与相关技术 (五)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142354652 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 完备(F…

为什么git有些commit记录,只有git reflog可以看到,git log看不到?

文章目录 原因分析1. git log 只能显示 **可达的** 提交2. git reflog 记录所有引用的变更 常见导致 git log 看不到提交的原因1. git reset 操作2. git rebase 操作3. 分支删除4. git commit --amend5. 垃圾回收&#xff08;GC&#xff09;* 如何恢复 git log 看不到的提交&am…

带你0到1之QT编程:十七、Http协议实战,实现一个简单服务器和一个客户端进行http协议通信

此为QT编程的第十七谈&#xff01;关注我&#xff0c;带你快速学习QT编程的学习路线&#xff01; 每一篇的技术点都是很很重要&#xff01;很重要&#xff01;很重要&#xff01;但不冗余&#xff01; 我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点&#xff01; …