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

docker-harbor 私有仓库部署和管理

harbor

开源的企业级的docker仓库软件。

仓库:私有仓库(用的最多) 公有仓库。

harnor是有图形化的,页面UI展示的一个工具。操作起来很直观。

harnor每个组件都是由容器构建的,所以安装harbor必须要有docker。

docker-compose一键编排,所以也是需要安装的。

harbor特性

1、通过角色对权限进行控制,用户和仓库都是基于项目进行组织。不同的用户在不同的项目中拥有不同的权限

2、镜像复制,每个仓库(之间可以通信)之间可以互相复制里面的镜像

3、UI界面可以对镜像进行删除,删除了之后也会释放本机的空间

4、图形化界面,可以用浏览器访问的

5、审计管理,所有对镜像操作都有记录,

harbor组件

1、porxy:nginx的前端页面,nginx的配置中做个反向代理。浏览器不同的请求转发到后端不同的容器中

2、registry:仓库,保存镜像,同时主要作用push、pull

3、core services:harbor的核心功能,对用户进行授权。检测仓库内镜像的变化以及token,根据不同的权限给予不同的token。

4、database:负责存储用户的权限,审计日志,docker镜像的分组信息

5、JOB service:镜像复制

6、log collector:日志收集工具

以上组件都是由容器来运行的,用docker-compose一键拉取部署

harbor网页

[root@docker1 harbor]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
[root@docker1 opt]# tar -xf harbor-offline-installer-v2.8.1.tgz 
#准备环境
[root@docker1 harbor]# ./prepare 
#启动harbor
[root@docker1 harbor]# ./install.sh 
#设置标签名
[root@docker1 harbor]# docker tag nginx:1.22 192.168.65.51/test1/nginx:v1
#公有登录
[root@docker1 harbor]# docker login -u admin -p 123456 http://192.168.65.51
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.65.51/v2/": dial tcp 192.168.65.51:443: connect: connection refused
#本地登录
[root@docker1 harbor]# docker login -u admin -p 123456 http://127.0.0.1
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
​
Login Succeeded
#设置镜像名
[root@docker1 harbor]# docker tag nginx:1.22 127.0.0.1/test1/nginx:v1
#上传镜像
[root@docker1 harbor]# docker push 127.0.0.1/test1/nginx:v1
The push refers to repository [127.0.0.1/test1/nginx]
9543dec06aa8: Pushed 
ccf4f419ba49: Pushed 
21f8452ebfb1: Pushed 
25bbf4633bb3: Pushed 
a4f34e6fb432: Pushed 
3af14c9a24c9: Pushed 
v1: digest: sha256:9081064712674ffcff7b7bdf874c75bcb8e5fb933b65527026090dacda36ea8b size: 1570
#客户端上传
[root@docker1 harbor]# vim /usr/lib/systemd/system/docker.service 
需要修改的配置
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.65.51 --containerd=    /run/containerd/containerd.sock
#修改配置后重启服务
[root@docker1 harbor]# systemctl daemon-reload 
[root@docker1 harbor]# systemctl restart docker
#退出登录
[root@docker1 harbor]# docker logout
Removing login credentials for https://index.docker.io/v1/
#登录客户端
[root@docker1 harbor]# docker login -u admin -p 123456 http://192.168.65.51
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
​
Login Succeeded
#上传镜像到仓库
[root@docker1 harbor]# docker push 192.168.65.51/test1/nginx:v1
The push refers to repository [192.168.65.51/test1/nginx]
9543dec06aa8: Layer already exists 
ccf4f419ba49: Layer already exists 
21f8452ebfb1: Layer already exists 
25bbf4633bb3: Layer already exists 
a4f34e6fb432: Layer already exists 
3af14c9a24c9: Layer already exists 
v1: digest: sha256:9081064712674ffcff7b7bdf874c75bcb8e5fb933b65527026090dacda36ea8b size: 1570
#下载镜像就直接在harbor页面上复制粘贴到命令行直接运行就行
​
角色:

1、先添加用户,用户就是一个普通用户,私有项目是无法浏览的

2、要浏览私有项目,必须要项目中添加成员,设定成员的角色。

受限访客:只能看,不能上传,也不能下载,也没有其他权限

访客:拥有只读权限,可以拉取镜像,不能上传,也无法删除镜像

开发者:可以读写,但是没有删除权限

维护人员:有读写权限也可以对项目的配置进行修改

管理员:读写、修改、删除都可以

项目流程图

image-20240820141458583

1

相关文章:

docker-harbor 私有仓库部署和管理

harbor 开源的企业级的docker仓库软件。 仓库:私有仓库(用的最多) 公有仓库。 harnor是有图形化的,页面UI展示的一个工具。操作起来很直观。 harnor每个组件都是由容器构建的,所以安装harbor必须要有docker。 doc…...

机器学习笔记二-回归

回归是统计学和机器学习中的一种基本方法,用于建模变量之间的关系,特别是用一个或多个自变量(输入变量)来预测一个因变量(输出变量)的值。回归分析广泛应用于预测、趋势分析和关联研究中。根据目标和数据的…...

判断http链接中文件是否存在

最近项目遇到需要从http请求下载文件到服务器,下载前需要判断下http中的文件是否存在。如果判断本地服务器上文件是否存在,用file.exists来判断。但是这个方法却无法判断http中文件是否存在。 如果要判断http文件是否存在,用如下代码&#xf…...

Flink CDC (session模式)

1、 # Start YARN session ./bin/yarn-session.sh --detached 2、配置文件: rest.bind-port: {{REST_PORT}} rest.address: {{NODE_IP}} execution.target: yarn-session yarn.application.id: {{YARN_APPLICATION_ID}} 3、mysql-doris.yml source:type: mysql…...

下载ISO镜像的方法 Debian、Red Hat 、CentOS、Ubuntu、Kali Linux

目录 Debian Red Hat CentOS Ubuntu Kali Linux Debian 下载步骤: 访问Debian的官方网站:Debian官网。在网站上找到“Downloads”或类似的下载链接。选择适合你的计算机架构(如amd64、i386等)的Debian版本。点击下载ISO镜像…...

想学接口测试,不知道那个工具适合?

接口测试是软件测试中的一项重要任务,它主要关注系统的不同组件之间的数据交换和通信。接口测试是一种黑盒测试方法,它可以帮助我们验证系统的功能和性能是否达到预期,并且确保不同组件之间的消息传递是正确的。在接口测试过程中,…...

干货分享 | TSMaster—RP1210模块使用指南

RP1210是由技术和维护委员会(TMC)编写的一种建议性实践。RP1210用于对重型车辆射频相关的(主要针对)电子控制单元(ECU)进行二次编程和分析。本文主要针对TSMaster—RP1210模块的操作进行详细介绍。 本文关…...

一步解决Ubuntu中无法使用git clone的问题

在网上找了很多教程都无法解决,最后用了一行命令成功解决 git config --global url."https://github.com".insteadOf git://github.com输入这行命令,之后就可以使用git clone了...

c++的时间复杂度

前言 Hello,大家好我是文宇. 最近没怎么写文章了,写个教程吧. 正文 C是一种高级编程语言,用于开发各种类型的应用程序,包括计算机科学中的算法和数据结构。在编写代码时,了解算法和数据结构的时间复杂度非常重要,因为它可以帮…...

PDF转图片 JAVA

前言 以下是一个使用 Apache PDFBox 将 PDF 文件转换为图片的封装方法。这个方法将会把 PDF 的每一页转换为一张图片,并保存到指定的目录中。 1.添加依赖 首先,你需要在项目中添加 PDFBox 的依赖。如果你使用的是 Maven,可以在 pom.xml 中添…...

树莓派5 笔记26:ollama大型语言模型_中文输入法_Python_espeak文字转语音

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 下载大语言模型,下载中文输入法&#…...

【kubernetes】k8s安全机制

Kubernetes 作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server 是集群内部各个组件通信的中介, 也是外部控制的入口。所以 Kubernetes 的安全机制基本就是围绕保护 API Server 来设计的。 比如 kubectl 如果想向 API Server…...

Android T(13) The app is granted permissions by default

我的博客 对比Android11,frameworks\base\services\core\java\com\android\server\pm\permission文件夹下,多了个PermissionManagerServiceImpl.java. 有一部分关于权限的处理,移到了这个文件中.比如:restorePermissionState(…) all app granted permissions by default b/fr…...

4 - Linux远程访问及控制

目录 一、SSH远程管理 1. SSH概述 2.SSH的优点 3.配置OpenSSH客户端 4.sshd服务支持的两种验证方式 5. 使用SSH客户端程序 5.1 ssh - 远程登录 5.2 scp - 远程复制 6.配置密钥对验证 二、TCP Wrappers访问控制 1.TCP Wrappers 概述 2. TCP Wrappers 机制的基本原则 …...

如何使用AWS EC2资源?

随着云计算技术的迅速发展,越来越多的企业和个人选择将工作负载迁移到云端,以获取灵活性、可扩展性和成本效益。作为全球领先的云计算服务提供商,AWS为用户提供了丰富的服务,其中最受欢迎的之一是云服务器EC2。本文中九河云将探讨…...

Linux高编-进程的概念(1)

目录 1.ps aux 2.top 3.kill -2 进程pid // fork函数 getpid拿自己的进程号 getppid拿父进程号 fork()&&fork()||fork() 父子进程的关系: 僵尸进程,孤儿进程 僵…...

go语言中new和make的区别

在 Go 语言中,new 函数不能用来创建通道(chan),这是因为 new 只分配内存并返回指向该内存的指针,而不负责初始化内存。 为什么不能使用 new 来创建通道? new 只能分配内存,但不会对内存进行初…...

SpringBoot响应式编程(3)R2DBC

一、概述 1.1简介 R2DBC基于Reactive Streams反应流规范,它是一个开放的规范,为驱动程序供应商和使用方提供接口(r2dbc-spi),与JDBC的阻塞特性不同,它提供了完全反应式的非阻塞API与关系型数据库交互。 …...

什么是私有继承

私有,公有,针对类而言; 私有( private )的成员,自己的,只能在自己内部( 类的定义体内部 )访问,外部( 类的定义体外部 )不能访问/调用; 公有( 或者说公开,public )的成员&#xff0…...

Scratch编程:开启智能硬件控制的大门

标题:“Scratch编程:开启智能硬件控制的大门” 在当今数字化时代,编程不仅仅是与计算机的交互,更是与物理世界的连接。Scratch,这款由麻省理工学院媒体实验室开发的视觉化编程语言,以其易学易用的特性&…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...