当前位置: 首页 > news >正文

docker高级管理——Compose容器编排与私有仓库

目录

  • Harbor私有仓库
      • 1:什么是Harbor
      • 2:Harbor的优势
      • 3:Harbor的构成
  • 部署Harbor私有仓库
      • 1:基础环境设置
      • 2:Harbor部署安装
      • 3:配置harbor
      • 4:运行脚本
      • 5:访问harbor
  • Harbor客户端应用
      • 1:所有docker主机设置daemon.json文件
      • 2:找到一个docker主机登录仓库
      • 3:测试从仓库拉取
      • 4:退出harbor
  • 项目案例——构建高可用Harbor私有镜像仓库
      • 1:两个harbor的安装
      • 2:nginx的安装
      • 2:编写启动脚本
      • 3:master节点的IP访问
      • 4:配置Harbor节点互相复制(两个节点都设置,要连接对方的ip)

Harbor私有仓库

1:什么是Harbor

Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。它以 Docker 公司开源的 Registry 为基础,提供了管理 UI、基于角色的访问控制(Role Based Accesscontrol)、AD/LDAP 集成、以及审计日志(Auditlogging)等企业用户需求的功能。通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 DockerDistribution。作为一个企业级私有 Registry 服务器, Harbor 提供了更好的性能和安全,以提升用户使用 Registry 构建和运行环境传输镜像的效率。

2:Harbor的优势

Harbor 具有如下优势:
基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
基于镜像的复制策略:镜像可以在多个 Harbor 实例之间进行复制(同步),适用于负载平衡、高可用性、多数据中心、混合和多云场景。
支持 LDAP/AD:Harbor 与现有的企业 LDAP/AD 集成,用于用户认证和管理。
删除图像和收集垃圾:镜像可以被删除,也可以回收镜像占用的空间。
图形 UI:用户可以轻松浏览、搜索镜像仓库以及对项目进行管理。
审计:对存储库的所有操作都进行记录。
RESTfu1 API:用于大多数管理操作的 RESTfu1 API,易于与外部系统集成。

3:Harbor的构成

Harbor 在架构上主要有 Proxy、Registry、core services、Database(Harbor-db)、Logcollector(Harbor-log)五个组件:
(1)Proxy
Harbor 的 Registry、UI、Token 等服务通过一个前置的反向代理统一接收浏览器和 Docker 客户端的请求,并将请求转发给后端不同的服务。
(2)Registry
负责储存 Docker 镜像,并处理 Docker push/pu11 命令。由于要对用户进行访问控制,即 不同用户对 Docker image 有不同的读写权限,Registry 会指向一个 Token 服务,强制用户的 每次Docker pull/push 请求都要携带一个合法的 Token,Registry 会通过公钥对 Token 进行解 密验证。
(3)Core service
这是 Harbor 的核心功能,主要提供以下服务:
UI(Harbor-ui):提供图形化界面,帮助用户管理 Registry 上的镜像(image),并对 用户进行授权。
Webhook:为了及时获取Registry上image 状态变化的情况,在 Registry上 配 置 webhook, 把状态变化传递给 UI 模块。
(4)Token 服务:负责根据用户权限给每个 Docker push/pu1l 命令签发 Token。Docker 客 户端向Registry 服务发起的请求,如果不包含 Token,会被重定向,获得 Token 后再 重新向 Registry 进行请求
(5)Database(Harbor-db)
为 coreservices 提供数据库服务,负责储存用户权限、审计日志、Docker image 分组信 息等数
据。
(6)Log collector(Harbor-log)
为了帮助监控 Harbor 运行,负责收集其他组件的 1og,供日后进行分析

部署Harbor私有仓库

1:基础环境设置

在这里插入图片描述

2:Harbor部署安装

下载安装包
首先下载官方的离线安装包
https://github.com/goharbor/harbor/releases/tag/v2.4.3
https://github.com/goharbor/harbor/releases/download/v2.4.3/harbor-offline-installer-v2.4.3.tgz
压缩包上传到服务器
在这里插入图片描述
在这里插入图片描述

3:配置harbor

在这里插入图片描述
修改为当前节点IP,https都注释掉
在这里插入图片描述
登入界面密码
在这里插入图片描述

4:运行脚本

在这里插入图片描述

5:访问harbor

浏览器访问本节点IP地址192.168.10.106,用户名admin
在这里插入图片描述
用户管理中创建一个用户
在这里插入图片描述
创建一个项目,名称为kubernetes
在这里插入图片描述
并把张三加入此项目
在这里插入图片描述

Harbor客户端应用

1:所有docker主机设置daemon.json文件

回到命令行上测试一下 push 和 pull。由于我们自己搭建的私有仓库默认是不受 Docker 信任的,所以需要先在配置文件中增加如下配置项让 Docker 信任该 registry:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2:找到一个docker主机登录仓库

在这里插入图片描述
放置镜像到kubernetes
在这里插入图片描述
在这里插入图片描述

3:测试从仓库拉取

到另一台机器上用同样方式配置 daemon.ison 并docker login 到 Harbor,然后使用 docker pull
从 Harbor 上拉取镜像:
在这里插入图片描述

4:退出harbor

在这里插入图片描述

项目案例——构建高可用Harbor私有镜像仓库

在这里插入图片描述

1:两个harbor的安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
docker的name是192.168.10.103
在这里插入图片描述
在这里插入图片描述
测试进入页面
在这里插入图片描述

2:nginx的安装

拉取镜像

在这里插入图片描述

创建配置文件,定义一些简单的配置
在这里插入图片描述
在这里插入图片描述

备注:
Tips:这里只所以只代理其中一个Harbor节点是因为Harbor节点之间的同步存在延迟,而且通常镜像都比较大,所以这个延迟也会比较明显。一般镜像推送完马上就会调度拉取,所以这个延迟时间一般是不可接受的。如果让nginx代理两个节点就会出现一会请求A一会请求B的问题,造成镜像pull/push不成功。只代理一个节点也成为了这个方案的缺点,当nginx代理的那个节点宕掉,我们得手动修改nginx的配置代理另一个节点。但由于Harbor是给公司内部的开发人员使用,通常可以允许分钟级别的不可用。

2:编写启动脚本

在这里插入图片描述

在这里插入图片描述

3:master节点的IP访问

在这里插入图片描述
创建新项目kubernetes
在这里插入图片描述
创建一个新用户
在这里插入图片描述
把用户添加到项目中
在这里插入图片描述

所有的docker主机设置文件
在这里插入图片描述
在这里插入图片描述

docker1,2主机
在这里插入图片描述
在这里插入图片描述
master主机
在这里插入图片描述
使用命令行push一个镜像到Harbor上
在这里插入图片描述
测试pull,用另一台机器同样的配置并登录到harbor
在这里插入图片描述

4:配置Harbor节点互相复制(两个节点都设置,要连接对方的ip)

测试完Harbor的基本功能后,我们接下来配置一下Harbor节点之间的互相复制功能,让两个节点能够同步镜像数据。首先到第一个节点上的“仓库管理”界面中新建一个目标,这个目标就是另一台Harbor节点:
在这里插入图片描述
然后到“复制管理”界面中新建复制规则,如下:
在这里插入图片描述
• 资源过滤器是用于定义只复制哪些镜像的,过滤维度有名称、tag和label。不配置默认复制全部
定义了复制规则后,我们可以在界面上手动触发复制:
在这里插入图片描述
复制成功后,到另一个节点上可以看到kubernetes这个项目及项目下的镜像都被复制过去了

http://www.dtcms.com/a/277960.html

相关文章:

  • 基于YOLOv11的无人机目标检测实战(Windows环境)
  • 小程序部分pai
  • 深度剖析:自定义线程安全 ppp::function 实现 vs std::function
  • 黑洞是什么?
  • 苍穹外卖Day3
  • python kivy 打包apk
  • 基于手势识别完成ESP32C3控制8位继电器实现智能鱼缸整体方案设计
  • “找到一个或多个多重定义的符号“(LNK2005 或 LNK1169)
  • JAVA 反射总结
  • 开源工具DeepFilterNet:实时语音降噪
  • SQL的初步学习(二)(以MySQL为例)
  • 第四章 城市给水排水处理厂站工程
  • 双向链表:前后遍历的艺术
  • 动态规划题解_将一个数字表示成幂的和的方案数【LeetCode】
  • 高压空气冲击炮cad【3张】三维图+设计说明书
  • Python 学习之路(十)--常见算法实现原理及解析
  • 智慧公安信息化建设解决方案PPT(63页)
  • Matlab的命令行窗口内容的记录-利用diary记录日志/保存命令窗口输出
  • 什么是 MVP?产品从0到1的关键一步
  • OSPF 基础实验
  • X00211-基于残差edge-graph注意力机制的深度强化学习优化车辆路径问题
  • HarmonyOS从入门到精通:动画设计与实现之八 - 高级动画技巧(二)
  • [Plecs基础知识系列]基于Plecs的半导体热仿真方法(实战篇)_1.建立电路模型
  • C语言基础知识--文件读写(一)
  • RAID磁盘冗余技术深度解析
  • WEB渗透
  • 【LeetCode100】--- 6.三叔之和【思维导图---复习回顾】
  • 基于Java日志平台的访问链路追踪实战
  • JAVA并发——synchronized的实现原理
  • C#特性:从元数据到框架基石的深度解析