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.xdnf.cn/news/146097.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

tauri嵌入自定义目录/文件,并在代码中读取文件内容的操作流程

可以看官方文档&#xff1a;Embedding Additional Files | Tauri Apps 在绑定了文件之后&#xff0c;可以在js中访问嵌入的文件或者在rust中读取嵌入的文件内容&#xff0c;详细的配置操作如下。 在src-tauri中创建自定义文件夹或文件&#xff0c;并在在tauri.conf.json中配置…

Java多线程Thread及其原理深度解析

文章目录 1. 实现多线程的方式2. Thread 部分源码2.1. native 方法注册2.2. Thread 中的成员变量2.3. Thread 构造方法与初始化2.4. Thread 线程状态与操作系统状态2.4. start() 与 run() 方法2.5. sleep() 方法2.6. join() 方法2.7. interrupt() 方法 本文参考&#xff1a; 线…

Spring自定义参数解析器

在这篇文章中&#xff0c;我们认识了参数解析器和消息转换器&#xff0c;今天我们来自定义一个参数解析器。 自定义参数解析器 实现HandlerMethodArgumentResolver的类&#xff0c;并注册到Spring容器。 Component&#xff0f;&#xff0f;注册到Spring public class UserAr…

Java集合必知必会:热门面试题汇编与核心源码(ArrayList、HashMap)剖析

写在前面 &#x1f525;我把后端Java面试题做了一个汇总&#xff0c;有兴趣大家可以看看&#xff01;这里&#x1f449; ⭐️在无数次的复习巩固中&#xff0c;我逐渐意识到一个问题&#xff1a;面对同样的面试题目&#xff0c;不同的资料来源往往给出了五花八门的解释&#…

【Linux进程控制】自主Shell

目录 自主shell实现 获取基本变量 实现命令行 获取用户命令字符串 命令行字符串分割 内建命令CD() chdir getcwd putenv 检查是否为内建命令 检查是否为重定向 执行命令 主函数设置 测试用例 项目代码 自主shell实现 根据之前学的内容&#xff0c;我们已经可以模…

【学习笔记】SSL/TLS安全机制之CAA

1、概念界定 CAA全称Certificate Authority Authorization&#xff0c;即证书颁发机构授权&#xff0c;每个CA都能给任何网站签发证书。 2、CAA要解决的问题 例如&#xff0c;蓝色网站有一张橙色CA颁发的证书&#xff0c;我们也知道还有许多其他的CA&#xff1b;中间人可以说服…

网址链接能做成二维码吗?在线网址二维码生成的操作技巧

现在用二维码能够展示很多的内容&#xff0c;将内容放入二维码后&#xff0c;通过扫码的方式获取内容会更加的方便快捷&#xff0c;简化获取内容的流程。比如在分享网上内容时&#xff0c;可以将链接生成二维码的方式来让用户扫码访问网页&#xff0c;那么网址转二维码具体该怎…

【BetterBench博士】2024年中国研究生数学建模竞赛 E题:高速公路应急车道紧急启用模型 问题分析

2024年中国研究生数学建模竞赛 E题&#xff1a;高速公路应急车道紧急启用模型 问题分析 更新进展 【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析 【BetterBench博士】2024年中国研究生数学建模竞赛 E题&#xff1a;高速公路应急车道紧急启用…

【垃圾识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目选题+TensorFlow+图像识别

一、介绍 垃圾识别分类系统。本系统采用Python作为主要编程语言&#xff0c;通过收集了5种常见的垃圾数据集&#xff08;‘塑料’, ‘玻璃’, ‘纸张’, ‘纸板’, ‘金属’&#xff09;&#xff0c;然后基于TensorFlow搭建卷积神经网络算法模型&#xff0c;通过对图像数据集进…

Qt窗口——对话框

文章目录 对话框自定义对话框对话框分类消息对话框QMessageBox使用示例自定义按钮快速构造对话框 颜色对话框QColorDialog文件对话框QFileDialog字体对话框QFontDialog输入对话框QInputDialog 对话框 对话框可以理解成一个弹窗&#xff0c;用于短期任务或者简洁的用户交互 Qt…

2024华为杯研赛D题分析

2024华为杯研究生数学建模D题分析如下&#xff0c;完整版本在文末名片

【HTTP】请求“报头”,Referer 和 Cookie

Referer 描述了当前这个页面是从哪里来的&#xff08;从哪个页面跳转过来的&#xff09; 浏览器中&#xff0c;直接输入 URL/点击收藏夹打开的网页&#xff0c;此时是没有 referer。当你在 sogou 页面进行搜索时&#xff0c;新进入的网页就会有 referer 有一个非常典型的用…

扎克伯格的未来愿景:用智能眼镜引领数字社交新时代

Meta Connect 2024大会前夕&#xff0c;创始人马克扎克伯格的90分钟播客访谈&#xff0c;为我们描绘了Meta未来的蓝图。这场访谈&#xff0c;不仅是大会的热身&#xff0c;更是对科技未来的一次深刻洞察。 人工智能 - Ai工具集 - 未来办公人的智能办公生活导航网 扎克伯格的未…

nacos适配人大金仓的数据库

前言 在微服务架构中&#xff0c;服务发现和配置管理是关键组件。Nacos作为一个动态服务发现和配置管理平台&#xff0c;支持多种数据库作为其后端存储。本文将探讨如何在Nacos中适配人大金仓数据库&#xff0c;以及在此过程中的最佳实践。 Nacos简介 Nacos&#xff08;Nami…

二分查找算法(1) _二分查找_模板

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 二分查找算法(1) _二分查找模板 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 1. 二…

Redis——持久化策略

Redis持久化 Redis的读写操作都是在内存上&#xff0c;所以Redis性能高。 但是当重启的时候&#xff0c;或者因为特殊情况导致Redis崩了&#xff0c;就可能导致数据的丢失。 所以Redis采取了持久化的机制&#xff0c;重启的时候利用之间持久化的文件实现数据的恢复。 Redis提…

[Matplotlib教程] 02 折线图、柱状图、散点图教程

基于MFCC和CNN的语音情感识别 2 折线图、柱状图、散点图2.1 折线图2.1.1 简单折线图2.1.1 线形和Markevery2.1.2 带误差棒的折线图2.1.3 区间填充和透明度 2.2 柱状图2.2.1 分组柱状图2.2.2 堆叠柱状图2.2.3 横向柱状图 2.3 散点图 我们的网站是 菜码编程&#xff0c;我们的q群…

django项目添加测试数据的三种方式

文章目录 自定义终端命令Faker添加模拟数据基于终端脚本来完成数据的添加编写python脚本编写shell脚本执行脚本需要权限使用shell命令来完成测试数据的添加 添加测试数据在工作中一共有三种方式&#xff1a; 可以根据django的manage.py指令进行[自定义终端命令]可以采用第三方…

2024华为杯数学建模研赛F题建模代码思路文章研究生数学建模

截止2024.8.21 12点 已更新F全部小问的建模和问题一的代码 #### https://docs.qq.com/doc/DVVBUREF2SmFhRUl3F题: 问题1&#xff1a;卫星轨道根数与运动学关系的数学模型 从卫星的轨道根数计算出它在特定时刻的三维位置和速度。轨道根数包括&#xff1a; 1.计算卫星的轨道半径…

Android Studio开发发布教程

本文讲解Android Studio如何发布APP。 在Android Studiobuild菜单栏下点击Generate Singed Bundle/APK…打开对话框。 选择APK点击Next 点击Create New...进行创建