Docker--harbor私有仓库部署与管理

目录

一、构建私有库

1.下载 registry 镜像

2.在 daemon.json 文件中添加私有镜像仓库地址

3.运行 registry 容器

4.为镜像打标签

5.上传到私有仓库

6.列出私有仓库的所有镜像

7.列出私有仓库的centos镜像有哪些tag

8.测试私有仓库下载

二、Harbor 简介

1.什么是Harbor?

2.Harbor 的特性

3. Harbor 的构成

3.1Proxy

3.2Registry

3.3Core services

3.4Database(harbor-db)

3.5Job services

3.6Log collector(harbor-log)

三、部署 Harbor

 1.部署 Docker-Compose 服务

2.部署 Harbor 服务

2.1下载或上传 Harbor 安装程序

2.2修改harbor安装的配置文件

3.启动 Harbor

4.查看 Harbor 启动镜像

5.创建一个新项目

三、维护管理 Harbor

1.通过 Harbor Web 创建项目

2.创建 Harbor 用户

2.1创建用户并分配权限

2.2添加项目成员

2.3在客户端上使用普通账户操作镜像

四、实现 Harbor 高可用

1.在192.168.88.10上部署 Harbor

2.构建 Harbor 高可用


一、构建私有库

基于registry镜像创建的私有仓库,存在几点问题:

  • 查看镜像不方便
  • 私有仓库没有加密,安全性较差

1.下载 registry 镜像

docker pull registry

docker images

2.在 daemon.json 文件中添加私有镜像仓库地址

vim /etc/docker/daemon.json

{
  #指定本机的私有镜像地址,注意用逗号结尾。
  "insecure-registries": ["http://192.168.88.10:5000"],
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

systemctl restart docker

3.运行 registry 容器

docker run -d -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest

docker ps -a

-itd:在容器中打开一个伪终端进行交互操作,并在后台运行
-v:指定宿主机的目录绑定容器中的目录,实现数据持久化
-p:指定端口映射,将宿主机的5000端口就访问到registry容器的服务
--restart=always:重启策略。在容器退出时重启容器。
--name registry:创建容器命名为registry

Docker 容器重启策略:
no:默认策略。在容器退出时不重启容器。
on-failure:在容器非正常退出时(退出状态非0),才会重启容器。
on-failure:3 :在容器非正常退出时重启容器,最多重启3次。
always:在容器退出时总是重启容器
unless-stopped:在容器退出时总是重启容器,但不考虑在Docker守护进程启动时就已经停止了的容器

4.为镜像打标签

docker tag centos:7 192.168.88.10:5000/centos:v1

5.上传到私有仓库

docker push 192.168.88.10:5000/centos:v1

6.列出私有仓库的所有镜像

curl http://192.168.88.10:5000/v2/_catalog

7.列出私有仓库的centos镜像有哪些tag

curl http://192.168.88.10:5000/v2/centos/tags/list

8.测试私有仓库下载

#本地下载私有仓库镜像
docker rmi -f 
docker pull 192.168.88.10/centos:v1

#其他主机从私有仓库下载镜像
192.168.88.20
systemctl stop firewalld
setenforce 0

192.168.88.70
vim /etc/docker/daemon.json
{
  #添加私有仓库地址
  "insecure-registries": ["http://192.168.88.10:5000"],
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

systemctl restart docker

二、Harbor 简介

1.什么是Harbor?

Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。

Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。

Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml。

2.Harbor 的特性

  1. 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
  2. 基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。
  3. 支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理。
  4. 镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。
  5. 图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。
  6. 审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  7. 支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
  8. Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

3. Harbor 的构成

Harbor 在架构上主要有 Proxy、Registry、Core services、Database(Harbor-db)、Log collector(Harbor-log)、Job services 六个组件。

Harbor 的每个组件都是以 Docker 容器的形式构建的,因此,使用 Docker Compose 来对它进行部署。
总共分为7个容器运行,通过在docker-compose.yml所在目录中执行 docker-compose ps 命令来查看, 名称分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。
其中 harbor-adminserver 主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui 所要操作的所有数据都通过 harbor-adminserver 这样一个数据配置管理中心来完成。

3.1Proxy

是一个 nginx 的前端代理,Harbor 的 Registry、UI、Token 服务等组件,都处在 nginx 反向代理后边。 该代理将来自浏览器、docker clients 的请求转发到后端不同的服务上。

3.2Registry

负责储存 Docker 镜像,并处理 Docker push/pull 命令。由于要对用户进行访问控制,即不同用户对 Docker 镜像 有不同的读写权限,Registry 会指向一个 Token 服务,强制用户的每次 Docker pull/push 请求都要携带一个合法的 Token, Registry 会通过公钥对 Token 进行解密验证。

3.3Core services

Harbor的核心功能,主要提供以下3个服务:

  1. UI(harbor-ui): 提供图形化界面,帮助用户管理 Registry 上的镜像(image), 并对用户进行授权。
  2. WebHook:为了及时获取Registry 上image 状态变化的情况,在Registry 上配置 Webhook,把状态变化传递给 UI 模块。
  3. Token 服务:负责根据用户权限给每个 Docker push/pull 命令签发 Token。Docker 客户端向 Registry 服务发起的请求, 如果不包含 Token,会被重定向到 Token 服务,获得 Token 后再重新向 Registry 进行请求。

3.4Database(harbor-db)

为core services提供数据库服务,负责储存用户权限、审计日志、Docker 镜像分组信息等数据。 

3.5Job services

主要用于镜像复制,本地镜像可以被同步到远程 Harbor 实例上。

3.6Log collector(harbor-log)

负责收集其他组件的日志到一个地方。

三、部署 Harbor

 1.部署 Docker-Compose 服务

//下载或者上传 Docker-Compose
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose -v

2.部署 Harbor 服务

2.1下载或上传 Harbor 安装程序

cd /opt
上传harbor-offline-installer-v1.10.18.tgz压缩包

tar zxvf harbor-offline-installer-v1.10.18.tgz 

2.2修改harbor安装的配置文件

vim /opt/harbor.yml
--5行--修改,设置为Harbor服务器的IP地址或者域名
hostname = 192.168.88.70
--59行--指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345
harbor_admin_password = Harbor12345

3.启动 Harbor

cd /opt/harbor/

./prepare
./install.sh
如果./install.sh执行不成功,执行docker rm -f $(docker ps -aq)删除容器

在配置好了 harbor.cfg 之后,执行 ./prepare 命令,为 harbor 启动的容器生成一些必要的文件(环境)
再执行命令 ./install.sh 以 pull 镜像并启动容器

4.查看 Harbor 启动镜像

cd /opt/harbor/
docker-compose ps

docker-compose up -d      #启动
docker-compose stop       #停止
docker-compose restart    #重新启动

5.创建一个新项目

(1)浏览器访问:http://192.168.88.70 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345

(2)输入用户名和密码登录界面后可以创建一个新项目。点击“+项目”按钮

(3)此时可使用 Docker 命令在本地通过 192.168.88.70 来登录和推送镜像。默认情况下,Registry 服务器在端口 80 上侦听。
//登录 Harbor
docker login [-u admin -p Harbor12345] http://192.168.88.70

//将镜像打标签
格式:docker tag 镜像:标签  仓库IP/项目名称/镜像名:标签
docker tag centos:7 192.168.88.70/library/centos:7


//上传镜像到 Harbor
docker push 192.168.88.70/library/centos:7 

(4)在 Harbor 界面 library 目录下可看见此镜像及相关信息

三、维护管理 Harbor

1.通过 Harbor Web 创建项目

在 Harbor 仓库中,任何镜像在被 push 到 regsitry 之前都必须有一个自己所属的项目。
单击“+项目”,填写项目名称,项目级别若设置为"私有",则不勾选。
如果设置为公共仓库,则所有人对此项目下的镜像拥有读权限,
命令行中不需要执行"Docker login"即可下载镜像,镜像操作与 Docker Hub 一致。

2.创建 Harbor 用户

2.1创建用户并分配权限

在 Web 管理界面中单击系统管理 -> 用户管理 -> +用户,
填写用户名为“zhangsan”,邮箱为“zhangsan@qq.com”,全名为“zhangsan”,密码为“Abc123456”,注释为“管理员”(可省略)。
附:用户创建成功后,单击左侧“...”按钮可将上述创建的用户设置为管理员角色或进行删除操作,本例不作任何设置。

角色				权限说明
访客				对于指定项目拥有只读权限
开发人员			对于指定项目拥有读写权限,但没用删除权限
维护人员			对于指定项目拥有读写权限,也能对修改其它配置,比如创建 Webhooks
项目管理员		除了读写权限,同时拥有用户管理/镜像扫描等管理权限

2.2添加项目成员

单击项目 -> myproject -> 成员 -> + 成员,填写上述创建的用户 zhangsan 并分配角色为“开发人员”。
附:此时单击左侧“...”按钮仍然可对成员角色进行变更或者删除操作

2.3在客户端上使用普通账户操作镜像

//先退出当前用户,然后使用上述创建的账户 kgc-zhangsan 登录
docker logout 192.168.88.70

docker login 192.168.88.70
或
docker login -u zhangsan -p Abc123456 http://192.168.88.70

//上传本地镜像
docker tag centos:latest 192.168.88.70/myproject/centos:latest
docker push 192.168.88.70/myproject/centos:latest

//删除上述打标签的本地镜像
docker rmi 192.168.80.70/myproject/centos:latest

//下载本地镜像
docker pull 192.168.80.10/myproject/centos:latest

四、实现 Harbor 高可用

1.在192.168.88.10上部署 Harbor

cd /opt
scp -r harbor/ 192.168.88.10:`pwd`

#修改yml文件
cd /opt/harbor
vim harbor.yml
修改 
hostname: 192.168.88.10

vim /etc/docker/daemon.json
添加 
{
  "insecure-registries": ["http://192.168.88.10"],
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

cd /opt/harbor
./install.sh

2.构建 Harbor 高可用

1.浏览器访问:http://192.168.88.10 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345

2.在 仓库管理 -> 新建目标

3.在 复制管理 -> 新建规则

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS--属性关键字

定义 chat: 在iOS开发中,属性关键字是用于声明类的属性(实例变量)的修饰符。属性关键字可以影响属性的访问权限、内存管理和生成相关的getter和setter方法。 属性关键字有哪些? 分类属性关键字原子性atomic、nonato…

Spring MVC-基础概念(定义+创建和连接+@RequestMappring的描述)

目录 1.什么是Spring MVC? 2. MVC 和 Spring MVC 的关系 3.Spring MVC 项目创建 4. RequestMappring实现用户和程序的映射 4.1 RequestMappring 注解解释 4.2 方法1: RequestMapping(“/xxx”) 4.4 RequestMapping(method xxxx, value “xxx”) 是POST/GET…

协作实现时序数据高效流转链路 | 7.20 IoTDB X RocketMQ 技术沙龙线上直播回顾

7 月 20 日,IoTDB X RocketMQ 技术沙龙线上直播圆满结束。工业物联网时序数据库研发商天谋科技、云原生事件流平台 Apache RocketMQ 社区的四位技术专家,针对实时数据接入、多样数据处理与系统的高扩展、高可靠特性的数据流转处理平台实现难点&#xff0…

Java日志框架JUL、Log4j、logback、log4j2使用

随着软件系统的发展系统业务越来越多、逻辑越来越复杂、代码量越来越多,伴随着容易出现的bug也会越来越多,不论是开发测试阶段还是生产阶段都需要将这些错误及时的捕捉记录下来,方便解决这些问题,否则针对出现的异常无从下手&…

【三维点云处理】顶点、面片、邻接矩阵、邻接距离矩阵以及稀疏存储概念

文章目录 vts和faces基础知识vertices-节点(3是点的三维坐标)faces-面片(3是构成三角形面片的3个点) 邻接矩阵邻接距离矩阵(NN500)稀疏矩阵 vts和faces基础知识 vertices-节点(3是点的三维坐标…

【JavaEE初阶】HTTP协议

文章目录 1. HTTP概述和fiddler的使用1.1 HTTP是什么1.2 抓包工具fiddler的使用1.2.1 注意事项1.2.2 fiddler的使用 2. HTTP协议格式2.1 HTTP请求格式2.1.1 基本格式2.1.2 认识URL2.1.3 方法 2.2 请求报头关键字段2.3 HTTP响应格式2.3.1 基本格式2.3.2状态码 1. HTTP概述和fidd…

【博客682】k8s apiserver bookmarks机制以更高效检测变更

k8s apiserver bookmarks机制以更高效检测变更 list-watch背景: List-Watch 是kubernetes中server和client通信的最核心的机制, 比如说api-server监听etcd, kubelet监听api-server, scheduler监听api-server等等,其实…

任务的创建与删除

Q: 什么是任务? A: 任务可以理解为进程/线程,创建一个任务,就会在内存开辟一个空间。 比如: 玩游戏,打篮球,开车,都可以视为任务。 Windows 系统中的 MarkText 、谷歌浏览器、记事本&#xff0…

SpringBoot2为什么默认使用CGLib不再使用JDK动态代理

SpringBoot2为什么默认使用CGLib不再使用JDK动态代理 CGLib和JDK动态代理对比1. 不需要实现接口2. 性能3. 代理对象的创建4. 调用方法 2. CGLib使用 CGLib和JDK动态代理对比 1. 不需要实现接口 JDK动态代理类要求目标类必须实现接口,而CGLib动态代理可以直接代理普通类(非接口…

C语言中指针(简略复习)

一、指针 1. 指针运算 设p为指针,T为类型,n为整型数字,则pn表示,指针从当前位置向后移动n个数据单位,而不是n个字节。 数据类型不同,移动的数据单位字节数也不同,实际上移动的字节数为n*sizeo…

【windows】连接共享打印机提示:0x0000011B

【问题现象】 添加共享打印机的时候, 提示错误:0x0000011B。 【解决方法】 按winr键,在运行输入regedit 然后在注册表中找到路径: 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print 打开后,在右侧…

【Nodejs】Puppeteer\爬虫实践

puppeteer 文档:puppeteer.js中文文档|puppeteerjs中文网|puppeteer爬虫教程 Puppeteer本身依赖6.4以上的Node,但是为了异步超级好用的async/await,推荐使用7.6版本以上的Node。另外headless Chrome本身对服务器依赖的库的版本要求比较高,c…

[Angular] Import TranslateModule in Angular 16

1.Background Angular 更新至V16版后,支援 standalone,故移除了 NgModule,而TranslateModule 又要在AppModule中 import,那该如何做呢? 2.NPM packages installation npm install ngx-translate/core npm install n…

Pytorch个人学习记录总结 08

目录 神经网络-搭建小实战和Sequential的使用 版本1——未用Sequential 版本2——用Sequential 神经网络-搭建小实战和Sequential的使用 torch.nn.Sequential的官方文档地址,模块将按照它们在构造函数中传递的顺序添加。代码实现的是下图: 版本1—…

Vue入门项目——WebApi

Vue入门——WebApi vue3项目搭建组合式API响应式APIreactive()ref() 生命周期钩子computed计算属性函数watch监听函数父子通信模板引用组合选项 vue3项目搭建 简单看下Vue3的优势吧 下载安装npm及node.js16.0以上版本(确保安装成功可用如下代码检查版本&#xff0…

【Docker-compose】基于Docker-compose创建LNMP环境并运行Wordpress网站平台

基于Docker compose创建LNMP环境并运行Wordpress网站平台 1.Docker-Compose概述2. YAML文件格式及编写注意事项3. Docker-Compose配置常用字段4.Docker Compose常用命令5.使用Docker-compose创建LNMP环境,并运行Wordpress网站平台5.1 Docker Compose环境安装5.2 使用…

使用spark进行hbase的bulkload

使用spark进行hbase的bulkload 一、 背景 HBase 是一个面向列,schemaless,高吞吐,高可靠可水平扩展的 NoSQL 数据库,用户可以通过 HBase client 提供的 put get 等 api 实现在数据的实时读写。在过去的几年里,HBase …

主机漏洞利用演示MS17-010(永恒之蓝)

ms17-010危害:对被攻击方的电脑造成蓝屏! 申明:本篇文章的用意仅做学习使用 网络搭建环境: 软件:Vmware Workstation 17 攻击机:Kali 靶机环境:Windows 7 Nmap软件的基本功能: …

ONNX Runtime 加速深度学习(C++ 、python)详细介绍

ONNX Runtime 加速深度学习(C 、python)详细介绍 本文在 https://blog.csdn.net/u013250861/article/details/127829944 基础上进行了更改,感谢原作! ONNXRuntime(Open Neural Network Exchange)是微软推出的一款针对ONNX模型格式的推理框架&#xff0c…

3DVR全景旅游,最新数字化智慧文旅

导语: 随着科技的飞速发展,3DVR全景旅游正以其独特的特点和无限的优势,成为当今智慧文旅的领航者。穿戴上VR设备,只需一个轻轻的点击,你将被带入一个全新的数字世界,领略美景、探索奇迹。让我们一起深入了…