Docker Harbor | 私有仓库 | 用户登录 |用户创建

news2024/11/26 18:51:41

Docker Harbor | 私有仓库 |用户登录 |用户创建

  • 一、Docker Harbor 概述
  • 二、Harbor 的核心组件
  • 四、Harbor 构建 Docker 私有仓库实战
    • 4.1 搭建本地私有仓库
    • 4.2 部署 Docker-Compose 服务
    • 4.3 启动harbor验证
    • 4.4 在其他客户端上传镜像
    • 4.5 维护管理Harbor

一、Docker Harbor 概述

1.Harbor 简介
Docker Harbor 能够提供可视化的 Web 管理界面,可以方便管理 Docker 镜像,而且提供了多个项目的镜像权限管理及控制功能(包括统计信息,比如镜像被下载了多少次,什么时候上传得)

Harbor 是 VMware 公司开源的企业级 Docker Registry 项目

Registry:
1.Docker官方提供了Docker Hub来维护管理所有的镜像,只是对于免费用户而言,只能创建一个私有仓库,付费用户才能拥有更多私有仓库的权限
2.对此官方开源了Docker Registry的源代码,我们可以通过它在局域网内部搭建私有的镜像注册中心(私有仓库)

2.Harbor 的优势
基于角色控制:有管理员与普通用户,可赋权普通用户,比如只能上传和下载,可根据项目来进行操作和管理

基于镜像的复制策略:也与权限相关,比如有只一些用户与组才能对此项目进行相对应的操作

支持 LDAP/AD:域控制,比如南京去下载北京 harbor 私有仓库的镜像,两端打上局域网的地址,连接在一块,数据信息的传输通过一条隧道,会通过两层加密,第一层为隧道加密,第二层为数据加密,安全可靠

图像删除和垃圾收集:即回收站机制

图形 UI:具有统计功能,比如访问量与镜像下载热度

审计:日志,这里意义不大,主要还是借助于 ELK

RESTful API:定义 Web 语言规范的格式,方便调用 Harbor 的接口,也便于二次开发

二、Harbor 的核心组件

1.Proxy
通过一个前置的反向代理统一接收浏览器、Docker 客户端的请
求,并将请求转发给后端不同的服务
这是一个反向代理组件

2.Registry
负责储存 Docker 镜像
处理 docker push/pull 命令来上传和下载

3.Core services
1.Harbor 的核心功能,包括UI、webhook、 token 服务
2.webhook:网站的一些服务功能
3.token:令牌,提供身份验证服务

4.Database
为 core services 提供数据库服务
数据库记录镜像的元信息及用户的身份信息

5.Log collector
负责收集其他组件的日志,以供然后进行分析
健康检查等

在这里插入图片描述

所有的请求或人为的操作都会首先交给 Proxy(反向代理)

Proxy 会先将请求转发给后端 Core services,Core services 中包含 UI、token(身份验证服务)、webhook(网站的一些服务功能)

转发给 Registry(镜像存储),若需要下载镜像等权限操作,需要通过 Core services 中的 token 令牌的身份验证服务才行

每一次下载和上传都会产生操作记录,生成到日志,保存至 Database 中

Database 记录保存镜像的元信息及用户与组的身份信息,通过验证授权才能允许相关操作

四、Harbor 构建 Docker 私有仓库实战

4.1 搭建本地私有仓库

首先下载 registry 镜像
docker pull registry

#在 daemon.json 文件中添加私有镜像仓库地址
vim /etc/docker/daemon.json
{
  "insecure-registries": ["192.168.10.50:5000"],						#添加,注意用逗号结尾
  "registry-mirrors": ["https://ae3f5qei.mirror.aliyuncs.com"]
}

systemctl restart docker.service

#运行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
#查看创建的仓库
docker ps  -a 


-itd:在容器中打开一个伪终端进行交互操作,并在后台运行
-v:把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了
--restart=always:这是重启的策略,在容器退出时总是重启容器
--name registry:创建容器命名为registry
registry:latest:这个是刚才pull下来的镜像

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

请添加图片描述
请添加图片描述

请添加图片描述

#为镜像打标签
docker tag centos:7 192.168.10.50:5000/centos:v1

#上传到私有仓库
docker push 192.168.10.50:5000/centos:v1

#列出私有仓库的所有镜像
curl http://192.168.10.50:5000/v2/_catalog

#出私有仓库的 centos 镜像有哪些tag
curl http://192.168.10.50:5000/v2/centos/tags/list

#先删除原有的 centos 的镜像,再测试私有仓库下载
docker rmi 192.168.10.50:5000/centos:v1

docker pull 192.168.10.50:5000/centos:v1

请添加图片描述
请添加图片描述

4.2 部署 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 --version


2. 部署 Harbor 服务
(1)下载或上传 Harbor 安装程序
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/


(2)修改harbor安装的配置文件
关于 Harbor.cfg 配置文件中有两类参数:所需参数和可选参数
1、所需参数:这些参数需要在配置文件 Harbor.cfg 中设置。如果用户更新它们并运行 install.sh 脚本重新安装 Harbor, 参数将生效。
2、可选参数:这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新。如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数的更新,Harbor.cfg 将被忽略。

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

请添加图片描述

请添加图片描述
请添加图片描述

4.3 启动harbor验证

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

4. 查看 Harbor 启动镜像
cd /usr/local/harbor/
docker-compose ps

5. 创建一个新项目
(1)浏览器访问:http://192.168.10.50 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345

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

(3)填写项目名称为“myproject-kgc”,点击“确定”按钮,创建新项目

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

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

将镜像打标签
格式:docker tag 镜像:标签  仓库IP/项目名称/镜像名:标签
docker tag nginx:latest 127.0.0.1/myproject-kgc/nginx:v1

//上传镜像到 Harbor
docker push 127.0.0.1/myproject-kgc/nginx:v1

在 Harbor 界面 myproject-kgc 目录下可看见此镜像及相关信息

请添加图片描述
请添加图片描述
请添加图片描述

4.4 在其他客户端上传镜像

以上操作都是在 Harbor 服务器本地操作。如果其他客户端登录到 Harbor,就会报如下错误。出现这问题的原因为Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

docker login -u admin -p Harbor12345 http://192.168.10.50
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.10.50/v2/: dial tcp 192.168.10.50:443: connect: connection refused

(1)在 Docker 客户端配置操作
//解决办法是:在 Docker server 启动的时候,增加启动参数,默认使用 HTTP 访问。
vim /usr/lib/systemd/system/docker.service
--13行--修改
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.10.50 --containerd=/run/containerd/containerd.sock
或
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.10.50

//重启 Docker,再次登录
systemctl daemon-reload
systemctl restart docker

//再次登录 Harbor
docker login -u admin -p Harbor12345 http://192.168.10.50
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Login Succeeded
//将自动保存凭据到/root/.docker/config.json,下次登录时可直接使用凭据登录 Harbor

//下载镜像进行测试
docker pull 192.168.10.50/myproject-kgc/nginx:v1

//上传镜像进行测试
docker pull cirros
docker tag cirros:latest 192.168.10.50/myproject-kgc/cirros:v2
docker push 192.168.10.50/myproject-kgc/cirros:v2

(2)刷新 ![请添加图片描述](https://img-blog.csdnimg.cn/7009298ab42040b3a6f0d9a34c03171e.png)
Harbor 的 Web 管理界面进行查看,会发现 myproject-kgc 项目里面有两个镜像

请添加图片描述
请添加图片描述
请添加图片描述

4.5 维护管理Harbor

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

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

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

(3)在客户端上使用普通账户操作镜像
//删除上述打标签的本地镜像
docker rmi 192.168.10.50/myproject-kgc/cirros:v2

//先退出当前用户,然后使用上述创建的账户boa 登录
docker logout 192.168.10.50

docker login 192.168.10.50
或
docker login -u boa -p Abc123456 http://192.168.10.50

//下载和上传镜像进行测试
docker pull 192.168.10.50/myproject-kgc/cirros:v2

docker tag cirros:latest 192.168.10.50/myproject-kgc/cirros:v3
docker push 192.168.10.50/myproject-kgc/cirros:v3

3. 查看日志
Web 界面日志,操作日志按时间顺序记录用户相关操作

4. 修改 Harbor.cfg 配置文件
要更改 Harbor的配置文件中的可选参数时,请先停止现有的 Harbor实例并更新 Harbor.cfg;然后运行 prepare 脚本来填充配置; 最后重新创建并启动 Harbor 的实例。

使用 docker-compose 管理 Harbor 时,必须在与 docker-compose.yml 相同的目录中运行。
cd /usr/local/harbor
docker-compose down -v

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

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

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

相关文章

【校招VIP】面试了一个抽奖的项目,我终于搞明白了,是8股文终于开始作恶了

最近因为招实习生,进行了很多次面试。 但面试的结果不尽人意。 就感觉今年的面试跟以前差距太大了。 直到经过这个同学的面试,我终于明白了是什么原因。 这个同学是南京一所211的研究生,他的项目经历是做了一个抽奖的微服务管理平台。 也…

JAVA 类型的类型转换

JAVA 类型的类型转换 一、基本类型的类型转换 箭头开始的地方是小类型,箭头指向的地方是大类型 我们此处所指的"大"和"小",指的是对应类型的取值范围,不是字节数哦 1.1 小到大(隐式转换) byte m 120; int n m;//小转大,右面的m是小类型,给左面的n大…

【微服务笔记21】微服务组件之Sentinel服务熔断、服务降级、流量控制介绍

这篇文章,主要介绍微服务组件之Sentinel服务熔断、服务降级、流量控制。 目录 一、Sentinel组件 1.1、Sentinel介绍 1.2、Sentinel环境搭建 (1)引入依赖 (2)资源和规则 1.3、使用SphU定义资源 (1&am…

LNMP网站框架搭建

1. Nginx的工作原理 php-fpm.conf 是控制php-fpm守护进程的 php.ini是php解析器 工作进程: 1.客户端通过域名进行请求访问时,会找Nginx对应的虚拟主机 2. Nginx对该请求进行判断,如果是静态请求,Nginx会自行处理,并将处理结果返…

微信小程序原生开发功能合集十三:列表界面的实现

本章实现列表展示组件,包括列表数据加载、筛选、分页加载、快速搜索等功能。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: https://edu.csdn.net/course/detail/379…

提交代码「前置处理」,向前一小步,效率提升「亿点点」

💡 如何巧用 Git Hook,解决代码提交中的代码规范性、冲突和错误以及工作流程问题? 近日,在极狐Tech Talk 直播上,极狐(GitLab) 后端工程师田鲁分享了自己的实践经验。以下内容整理自本次直播,你也可以点击文…

Linux第二章

文章目录 前言一、Linux系统的目录结构和路径表达形式二、Linux命令基础1.ls命令入门2.ls命令的参数和选项3.-cd-pwd命令4.相对路径绝对路径和特殊路径符5.-mkdir命令6.-touch-cat-more-命令7.-cp-mv-rm-命令8.-which-find命令9.-grep-wc-管道符10.-echo-tail-重定向符11.-vi编…

Spring Boot自动装配

目录 是什么? 自动装配的原理 进入SpringBootApplication注解 点击进入EnableAutoConfiguration注解 AutoConfigurationImportSelector(核心) 点进getAutoConfigurationEntry()方法: 点进getCandidateConfigurations() 流程图 是什么&…

远程支持软件:轻松解决电脑问题!

远程协助不工作 当我们提到Windows的远程支持软件时,许多人的第一个想法可能是Windows远程协助。它可以通过发送和接收邀请文件连接两台电脑,然后您可以远程修复另一台电脑上的问题。但是,有时,您会遇到诸如“远程协助无法连接…

【FFTW库】编译生成 x86、arm 环境下的FFTW库

FFTW是一个快速计算离散傅里叶变换的标准C语言程序集,可计算一维或多维实和复数据以及任意规模的DFT。下面主要介绍的是 x86 环境下 FFTW库的编译过程,arm环境下的编译过程和FFTW类似,不同之处在于需要手动指定 编译环境 和 编译器。 FFTW有…

十大常见的电子元器件

电子元器件是电子技术中的基础组成部分,是电子电路的基本构件。电子元器件的种类繁多,但其中一些元器件的应用非常广泛,被称为十大最常用电子元器件。本文将介绍这些元器件的基础知识。 一、电阻器 电阻器是一种用来阻碍电流流动的元器件&a…

改善内部客户服务的 3 个技巧

在当今世界,许多公司都专注于改善客户关系管理,公司管理层面临的挑战是他们不仅拥有外部客户,员工也是有痛点和需求的内部客户。正如糟糕的客户服务会导致客户流失一样,糟糕的内部客户服务会增加员工流动率。在当今瞬息万变的就业…

C++98 auto_ptr智能指针

auto_ptr 是C98定义的智能指针模板,其定义了管理指针的对象,可以将new获得(直接或间接)的地址赋给这种对象.当对象过期时,其析构函数将使用delete来释放内存! 用法: 头文件: #include<memory> 用法: auto_ptr <类型> 变量名(new 类型); #include<iostream> …

算力为基,生态谋远,英特尔商用客户端的三重创新进化

“混合办公”仍旧是2023年全球企业IT管理者与“打工人”共同关注的热点话题。 比如根据携程最新公布的数据&#xff0c;过去一年内有超过66%的员工申请了混合办公对比试运行阶段&#xff0c;管理者对混合办公的支持率提升了10%。超九成管理者认为混合办公对效率无影响。调研数…

gpt人工智能模型原理-GPT的特点和基本原理

gpt训练模型 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是指一类以Transformer网络为基础的语言模型&#xff0c;可以用于自然语言生成、问答、文本分类等多个NLP任务。GPT的训练是基于预训练&#xff08;pre-training&#xff09;的方式进行的&#xff…

Java中读取用户输入的是谁?Scanner类

目录 前言一、Scanner类二、Scanner类基本使用1. 基本使用2. nextLine()方法 前言 我们在初学 Java 编程的时候&#xff0c;总是感觉很枯燥乏味&#xff0c;想着做点可以交互的小系统&#xff0c;可以让用户自由输入&#xff0c;系统可以接收做出反映。这就要介绍一下 Java 中的…

【数据库】表的增删改查(基础 )

目录 1、新增/插入数据 1.1、给表中所有字段插入数据 1.1、给表中指定字段&#xff08;列&#xff09;插入数据 1.2、一次插入多条记录 1.3、时间日期数据的插入 1.3.1、手动插入某个时间 1.3.2、插入当前时刻的时间 2、查找操作 2.1、全列查找&#xff08;查找表的…

【ArcGIS Pro二次开发】(24):现状、规划用地图斑的变化检查

如题如见&#xff0c;这是一个检查现状、规划用地变化的工具。 通过此工具&#xff0c;可以生成变化图斑&#xff0c;检查规划中发生的变化&#xff0c;明确是正常的规划措施&#xff0c;还是因为误操作产生的图斑变化。 一、要实现的功能 如上图所示&#xff0c;点击【检查现状…

【Daily Share】没有域名怎么破?手把手教你如何通过hosts配置域名(假域名)

目录 ❌前言&#x1f4c4;hosts文件&#x1f989;DNS解析步骤&#x1f44c;配置伪域名第一步 修改本机hosts配置第二步 配置服务器nginx &#x1f503;流程图 ❌前言 ip记不住&#xff1f;&#xff1f;&#xff1f; 域名不想买&#xff1f;&#xff1f;&#xff1f; 每次当我…

系统分析师《企业信息化战略与实施》高频知识点

企业信息化战略与实施---企业信息化与电子商务 业务流程重组&#xff08;Business Process Reengineering BPR&#xff09;是针对企业业务流程的基本问题进行反思&#xff0c;并对它进行彻底的重新设计&#xff0c;使业绩取得显著性提高。与目标管理、全面质量管理、战略管理等…