Docker--harbor私有仓库

目录

一、什么是Harbor?

二、Harbor的特性

三、Harbor的构成

四、部署

五、维护管理Harbor


一、什么是Harbor?

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

二、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做了封装,扩展了自己的业务模板。

三、Harbor的构成

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

1、Proxy: nginx反向代理。

2、Registry: 负责储存 Docker 镜像。
3、Core services: Harbor的核心功能,主要提供以下3个服务:
1)UI(harbor-ui): 提供图形化界面。
2)WebHook:为了及时获取Registry上image 状态变化的情况,把状态变化传递给 UI 模块。
3)Token 服务:负责根据用户权限给每个 Docker push/pull 命令签发 Token。

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

5、Job services: 主要用于镜像复制,与远程 Harbor 实例同步镜像。

6、Log collector(harbor-log): 负责收集其他组件的日志到一个地方。

四、部署

环境:

Harbor服务器            192.168.246.10       docker-ce、docker-compose、harbor-offline-v1.2.2
client服务器               192.168.246.11       docker-ce1. 部署 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

如果在下载过程中出现以下报错:

解决办法·:

vim /etc/hosts

在最后插入以下即可解决

 
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安装的配置文件

vim /usr/local/harbor/harbor.cfg


第5行,修改设置为Harbor服务器的IP地址或者域名

hostname = 192.168.246.10


第59行指定管理员的初始密码

harbor_admin_password = Harbor12345

 

3. 启动 Harbor

cd /usr/local/harbor/
 ./prepare
 ./install.sh


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

4. 查看 Harbor 启动镜像

cd /usr/local/harbor/
docker-compose ps

 

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

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

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

(4)此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,Registry 服务器在端口 80 上侦听。
#登录 Harbor

docker login [-u admin -p Harbor12345] http://127.0.0.1

 这里我用的是自己的ip登录,方法不太一样

#下载镜像进行测试

docker pull nginx

#将镜像打标签
格式:docker tag 镜像:标签  仓库IP/项目名称/镜像名:标签

docker tag nginx:latest 127.0.0.1/myproject-shh/nginx:v1

#上传镜像到 Harbor

docker push 127.0.0.1/myproject-shh/nginx:v1

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

五、维护管理Harbor

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

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

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

 

 

(3)在客户端上使用普通账户操作镜像
#删除上述打标签的本地镜像
docker rmi 192.168.246.10/myproject-shh/cirros:v2#先退出当前用户,然后使用上述创建的账户 shh-zhangsan 登录

docker logout 192.168.246.10
docker login 192.168.246.10
或者
docker login -u shh-zhangsan -p Abc123456 http://192.168.246.10

 

//下载和上传镜像进行测试

docker pull 192.168.246.10/myproject-shh/cirros:v2
docker tag cirros:latest 192.168.246.10/myproject-shh/cirros:v3
docker push 192.168.246.10/myproject-shh/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
vim harbor.cfg            #只能修改可选参数
./prepare
docker-compose up -d

#如果有以下报错,需要开启防火墙 firewalld 服务解决
Creating network "harbor_harbor" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-b53c314f45e8 -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))

systemctl restart firewalld.service
docker-compose up -d

5. 移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移
在Harbor服务器上操作
(1)移除 Harbor 服务容器

cd /usr/local/harbor
docker-compose down -v

(2)把项目中的镜像数据进行打包
持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下

ls /data/registry/docker/registry/v2/repositories/myproject-shh
cd /data/registry/docker/registry/v2/repositories/myproject-shh
tar zcvf kgc-registry.tar.gz ./*

6. 如需重新部署,需要移除 Harbor 服务容器全部数据

cd /usr/local/harbor
docker-compose down -v
rm -r /data/database
rm -r /data/registry


 

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

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

相关文章

【昇思技术公开课笔记-大模型】Transformer理论知识

什么是Transformer Transformer是一种神经网络结构,由Vaswani等人在2017年的论文“Attention Is All You Need”中提出,用于处理机器翻译、语言建模和文本生成等自然语言处理任务。 Transformer与传统NLP特征提取类模型的区别主要在以下两点&#xff1…

WebGL开发智慧城市应用

在使用WebGL实现智慧城市应用时,需要考虑一系列的问题,以确保系统的性能、安全性和用户体验。以下是在开发WebGL智慧城市应用时需要注意的问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,…

【iOS】——基于Vision Kit框架实现图片文字识别

文章目录 前言一、文本识别的分类二、实现步骤1.导入Vision Kit框架2.创建请求处理器3.在请求处理器中设置文字识别功能4.将图片添加到请求处理器中5.发起文字识别请求6.处理识别结果 三、运行结果测试1.纯英文环境2.中英文混合环境 前言 根据苹果的官方文档,Visio…

MySQL面试题 | 15.精选MySQL面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

YOLOv7全网独家首发:DCNv4更快收敛、更高速度、更高性能,效果秒杀DCNv3、DCNv2等 ,助力检测实现暴力涨点

💡💡💡本文独家改进:DCNv4更快收敛、更高速度、更高性能,完美和YOLOv7结合,助力涨点 DCNv4优势:(1) 去除空间聚合中的softmax归一化,以增强其动态性和表达能力;(2) 优化存储器访问以最小化冗余操作以加速。这些改进显著加快了收敛速度,并大幅提高了处理速度,DCN…

Mybatis 动态SQL条件查询①

需求 : 根据用户的输入情况进行条件查询 新建了一个 userInfo2Mapper 接口,然后写下如下代码,声明 selectByCondition 这个方法 package com.example.mybatisdemo.mapper; import com.example.mybatisdemo.model.UserInfo; import org.apache.ibatis.annotations.*; import j…

LeetCode、2462. 雇佣 K 位工人的总代价【中等,最小堆+双指针】

文章目录 前言LeetCode、2462. 雇佣 K 位工人的总代价【中等,最小堆双指针】题目及类型思路及代码实现 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后…

【安全篇 / FortiGuard】(7.4) ❀ 02. 独立VDOM下的FortiGuard服务升级 ❀ FortiGate 防火墙

【简介】由于业务的需要,创建两个独立VDOM,每个VDOM有各自的宽带,但是FortiGuard服务却无法升级,有什么办法解决吗? VDOM概念 首先我们看看什么是VDOM。 ① VDOM将你的FortiGate划分为多个逻辑设备,并将一个…

用 Python 制作可视化 GUI 界面,一键实现自动分类管理文件!

经常杂乱无章的文件夹会让我们找不到所想要的文件,因此小编特意制作了一个可视化GUI界面,通过输入路径一键点击实现文件分门别类的归档。 不同的文件后缀归类为不同的类别 我们先罗列一下大致有几类文件,根据文件的后缀来设定,大…

Babylonjs inspector工具开启embedMode模式后不显示

项目地址见:https://github.com/tipace/simple-babylonjs 简单的babylonjs example 本身问题挺简单的,仅做一个记录。开始以为是babylon的问题,最后发现是css问题。 因为是做demo,把canas设置为占满全屏,习惯性的写…

Linux--磁盘与文件系统

目录 1.什么是文件系统 2.磁盘 2.1什么时磁盘 2.2磁盘的物理存储结构 2.3磁盘的逻辑抽象结构 3.磁盘文件系统(EXT2) inode Table(i结点表) Data Block inode Bitmap(inode位图) Block Bitmap(块位图) 在Linux如何删除文件 Group Descriptor Ta…

uniapp web-view组件双向通信

前言 本文主要介绍在uniapp中页面与webview组件内页面的双向通信问题。 准备 uniapp项目 调用webview组件 <web-view src"/hybrid/html/index.html"></web-view> Web项目 项目目录 在uniapp项目根目录下新建hybrid/html目录&#xff0c;web项目文件…

「sdkman」「nvm」Linux:基于sdkman安装多版本Java;安装maven;基于nvm安装多版本nodejs;安装yarn

1. 基于sdkman 安装多版本Java Linux环境下管理多版本java可以使用sdkman,官网: https://sdkman.io/ 需要注意sdkman 依赖 zip和unzip 命令,记得提前下载再下载sdkman 安装命令 按官网走很简单: curl -s “https://get.sdkman.io” | bash source “$HOME/.sdkman/bin/sdkm…

【Linux】27、arm 交叉编译

arm 下的 gcc 工具&#xff1a;arm-linux-gnueabihf-gcc 交叉编译介绍&#xff1a;https://aijishu.com/a/1060000000023713 一、redis arm 编译 1.1 准备交叉编译工具 在 https://redis.io/download/ 下载源码&#xff1a;redis-6.2.14.tar.gz 下载交叉编译工具&#xff…

明渠流量监测站的优势

明渠流量监测站的优势相对于传统监测站来说较为明显。首先&#xff0c;明渠流量监测站可以适应各种形态的水流条件&#xff0c;包括矩形、梯形和涵洞等不同类型的明渠。其次&#xff0c;其采用了先进的在线监测技术&#xff0c;如超声波明渠流量计、多普勒明渠流量计和多声道明…

云原生网关哪家强---Sealos 网关血泪史

云原生网关哪家强---Sealos 网关血泪史 Sealos 公有云&#xff08;https://cloud.sealos.io&#xff09;几乎打爆了市面上所有主流的开源网关&#xff0c;本文可以给大家很好的避坑&#xff0c;在网关选型方面做一些参考。 Sealos Cloud 的复杂场景 Sealos 公有云上线以来&a…

【Java】HttpServlet类中前后端交互三种方式(query string、form表单、JSON字符串)

在前后端的交互中&#xff0c;前端通过以下三种方式来与后端进行交互&#x1f31f; ✅query string ✅form表单 ✅JSON字符串 下面我们将书写这三种方式的后端代码并进行讲解 1、Query String QueryString即在url中写入键值对&#xff0c;一般用doGet方法进行交互 代码如下 …

即时按需原子 CSS 引擎:比 Tailwind JIT 快 5 倍! | 开源日报 No.149

unocss/unocss Stars: 14.6k License: MIT 该项目是一个即时的按需原子 CSS 引擎&#xff0c;受到 Windi CSS、Tailwind CSS 和 Twind 的启发&#xff0c;解决了定制化、速度和体积的问题。 以下是该项目的特点和核心优势&#xff1a; 完全可定制&#xff1a;通过预设提供所…

Docker(三)使用 Docker 镜像:从仓库获取镜像;管理本地主机上的镜像;介绍镜像实现的基本原理

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 使用 Docker 镜像 在之前的介绍中&#xff0c;我们知道镜像是 Docker 的三大组件之一。 Docker 运行容器前需要本地存在对应的镜像&#x…

Linux之echo|反引号|重定向符

echo命令输出内容 反引号的使用 tail命令跟踪文件更改 重定向符号使用