Harbor了解及部署

news2024/10/6 14:32:36

Harbor

无论是使用Docker-distribution去自建仓库,还是通过官方镜像跑容器的方式去自建仓库,通过前面的演示我们可以发现其是非常的简陋的,还不如直接使用官方的Docker Hub去管理镜像来得方便,至少官方的Docker Hub能够通过web界面来管理镜像,还能在web界面执行搜索,还能基于Dockerfile利用Webhooks和Automated Builds实现自动构建镜像的功能,用户不需要在本地执行docker build,而是把所有build上下文的文件作为一个仓库推送到github上,让Docker Hub可以从github上去pull这些文件来完成自动构建。

但无论官方的Docker Hub有多强大,它毕竟是在国外,所以速度是最大的瓶颈,我们很多时候是不可能去考虑使用官方的仓库的,但是上面说的两种自建仓库方式又十分简陋,不便管理,所以后来就出现了一个被 CNCF 组织青睐的项目,其名为Harbor。

Docker compose

Harbor在物理机上部署是非常难的,而为了简化Harbor的应用,Harbor官方直接把Harbor做成了在容器中运行的应用,而且这个容器在Harbor中依赖类似redis、mysql、pgsql等很多存储系统,所以它需要编排很多容器协同起来工作,因此VMWare Harbor在部署和使用时,需要借助于Docker的单机编排工具(Docker compose)来实现。

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.

Docker Compose官方文档

Harbor简介

Harbor是由VMWare在Docker Registry的基础之上进行了二次封装,加进去了很多额外程序,而且提供了一个非常漂亮的web界面。

https://github.com/goharbor/harbor (harbor官网)

安装Harbor
环境说明:
需先安装docker,安装docker请查阅docker安装
# 先把 docker-compose 和 harbor 下载到本地上传
[root@docker ~]# ll
总用量 778212
-rw-------. 1 root root      1250 10月 25 03:23 anaconda-ks.cfg
-rw-r--r--. 1 root root      2261 11月 11 02:15 docker-ce.repo
-rw-r--r--. 1 root root 796863822 11月 11 02:14 harbor-offline-installer-v2.9.1.tgz

# 解压 harbor
[root@docker ~]# tar xf harbor-offline-installer-v2.9.1.tgz -C /usr/local/
[root@docker ~]# ls /usr/local/
bin  games   include  lib64    sbin   src
etc  harbor  lib      libexec  share
[root@docker ~]# cd /usr/local/harbor/
[root@docker harbor]# ls
common.sh             harbor.yml.tmpl  LICENSE
harbor.v2.9.1.tar.gz  install.sh       prepare

# 复制一个harbor.yml文件
[root@docker harbor]# cp harbor.yml.tmpl harbor.yml
# 做一个映射
[root@docker harbor]#  cat /etc/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.136.154 docker
# 创建一个data目录
[root@docker ~]# ls /home/
tq
[root@docker ~]# mkdir /home/data
# 查看你的主机名
[root@docker harbor]# hostname
docker

# 修改 harbor.yml配置文件
[root@docker harbor]# vim harbor.yml
  ....
  5 hostname: docker //修改为自己的主机名
   
 12 # https related config  //以下加上注释
 13 #https:
 14   # https port for harbor, default is 443
 15   # port: 443
 16   # The path of cert and key files for nginx
 17   # certificate: /your/certificate/path
 18   #private_key: /your/private/key/path
 55   data_volume: /home/data //这个改为上面创建的data路径
 ........

[root@docker harbor]#  ls
common                harbor.yml       install.sh
common.sh             harbor.yml.tmpl  LICENSE
harbor.v2.9.1.tar.gz  input            prepare

# 执行install.sh脚本
[root@docker harbor]#  ./install.sh 
...
✔ ----Harbor has been installed and started successfully.---- (看到这行成功)

# 查看端口
[root@docker harbor]# ss -antl
State  Recv-Q Send-Q  Local Address:Port   Peer Address:Port Process                                                      
LISTEN 0      2048          0.0.0.0:80          0.0.0.0:*                                                                 
LISTEN 0      128           0.0.0.0:22          0.0.0.0:*                                                                 
LISTEN 0      2048        127.0.0.1:1514        0.0.0.0:*                                                                 
LISTEN 0      2048             [::]:80             [::]:*                                                                 
LISTEN 0      128              [::]:22             [::]:*                                                                 

使用IP登录管理Harbor:
在这里插入图片描述登入成功界面
在这里插入图片描述

使用Harbor的注意事项:

  1. 在客户端上传镜像时一定要记得执行docker login进行用户认证,否则无法直接push
  2. 在客户端使用的时候如果不是用的https则必须要在客户端的/etc/docker/daemon.json配置文件中配置insecure-registries参数
  3. 数据存放路径应在配置文件中配置到一个容量比较充足的共享存储中
  4. Harbor是使用docker-compose命令来管理的,如果需要停止Harbor也应用docker-compose stop来停止,其他参数请–help

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

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

相关文章

认识继承和多态

1 继承 1.1 为什么需要继承 Java 中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关联,那在设计程序里就需要考虑 比如&a…

赶紧收藏!阿里内部使用的127页k8s实战手册,不能再详细了!

2022 年 12 月 8 号Kubernetes 发布了1.26新版本,此版本中有两个突出的新功能,它们有可能改变用户与 Kubernetes 交互的方式,此外,其他功能将使集群管理员的工作更轻松。 说起来,Kubernetes从诞生初期就广泛受到业界的…

英国访问学者类型签证详解

近年来,英国作为世界上优秀的学术研究中心之一,吸引了众多国际学者的目光。为了促进国际学术交流,英国设立了多种类型的访问学者签证,以满足不同学者的需求。在本文中,我们将深入探讨英国访问学者类型签证及其特点。 1…

金字塔原理小节

目录 第1章 为什么要用金字塔结构 一、归类分组,将思想组织成金字塔 二、奇妙的数字“7” 三、归类分组搭建金字塔 四、找出逻辑关系,抽象概括 五、自上而下表达,结论先行 第1章 为什么要用金字塔结构 如果受众希望通过阅读你的文章、听…

osg点云加载与渲染

目录 效果 laslib 关键代码 完整代码 效果 las点云读取使用了laslib这个库。 laslib 关键代码 {// 这里演示读取一个 .txt 点云文件const char* lasfile path.c_str();std::ifstream ifs;ifs.open(lasfile, std::ios::in | std::ios::binary);liblas::ReaderFactory f;libl…

MySQL数据库基础和操作

🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 MYSQL数据库 🌙请不要相信胜利就像山坡上的蒲公英一…

C++ 开发【深入浅出】笔记02

多态 同一种类型的不同表现形式基类指针指向基类对象基类对象调用的成员函数,基类指针指向派生类对象则调用派生类得成员函数,这种现象就称为多态构成多态的条件 继承关系基类多态函数必须声明为虚函数(virtual)派生类必须覆盖&am…

【原创课设】java+swing+mysql药店管理系统设计与实现

摘要: 药店管理系统对于药店运营具有重大的意义。首先,它可以提高药店的运营效率,减少人工操作成本,通过信息化的管理方式,可以提高药店的服务质量和管理水平,增强药店的市场竞争力。用户可以登录系统直接…

Spring Boot (三)

1、热部署 热部署可以替我们节省大把花在重启项目本身上的时间。热部署原理上,一个springboot项目在运行时实际上是分两个过程进行的,根据加载的东西不同,划分成base类加载器与restart类加载器。 base类加载器:用来加载jar包中的类…

Unity中【UniTask异步流程】如何进行【步骤分段】、【步骤撤销】、【步骤跳转】、【取消异步任务】

一、UniTask和Task UniTask是Unity中的Task实现,Task是C#中实现异步操作的一个模块(类)。UniTask与Task有着同样的使用思路(使用习惯,常用API等),可以说UniTask是借鉴Task而开发出来的。 二、需求的来源 以前有一个…

Android---内存泄漏的优化

内存泄漏是一个隐形炸弹,其本身并不会造成程序异常,但是随着量的增长会导致其他各种并发症:OOM,UI 卡顿等。 为什么要将 Activity 单独做预防? 因为 Activity 承担了与用户交互的职责,因此内部需要持有大…

3D渲染原理及朴素JavaScript实现【不使用WebGL】

在网页中显示图像和其他平面形状非常容易。 然而,当涉及到显示 3D 形状时,事情就变得不那么容易了,因为 3D 几何比 2D 几何更复杂。 为此,你可以使用专用技术和库,例如 WebGL 和 Three.js。 但是,如果你只…

SSH 远程登录 WSL

更新ssh设置 sudo apt-get update sudo apt-get remove openssh-server sudo apt-get install openssh-server 编辑网络配置 sudo vi /etc/ssh/sshd_config (1)修改ssh服务监听端口和监听地址 (2)修改ssh服务允许使用用户名密码…

KEIL MDK 调试 无法 查看 外设 信息 原因及解决方法

MDK5.38版本有bug : 不能把STM32F4的官方SVD文件转换成SFR,而MDK5.38a版本没有此问题。

【操作系统内核】进程

【操作系统内核】进程 进程的组成 进程的运行,需要考虑 磁盘 > 内存 > CPU > 内核 > 进程切换 这个过程 首先,程序运行要将可执行文件加载到内存,所以进程要读取可执行文件(运行后可能还需要读取其他文件的数据),需…

JUC包下面的四大天王+线程池部分知识

一)Semphore:限流器用我就对了 Java中信号量Semphore是把操作系统原生的信号量封装了一下,本质就是一个计数器,描述了 可用资源的个数,主要涉及到两个操作 如果计数器为0了,继续Р操作,就会出现阻塞等待的情况 P操作:申…

徒步“三色”泸溪 共赏冬日胜景

(金笛 胡灵芝)11月11日,“中国体育彩票”2023年“走红军走过的路”徒步穿越系列活动(泸溪站)暨泸溪文旅推荐活动在泸溪县举行,来自全国各地千余名户外爱好者通过徒步的方式,传承红色基因&#x…

C语言--输入10个数字,要求输出其中值最大的元素和该数字是第几个数

今天小编带大家了解一下什么是“打擂台”算法。 一.思路分析 可以定义一个数组arr,长度为10,用来存放10个数字,设计一个函数Max,用来求两个数中的较大值, 定义一个临时变量tmparr[0],保存临时最大的值,下标…

邻接表储存图实现广度优先遍历(C++)

目录 基本要求: 邻接表的结构体: 图的邻接表创建: 图的广度优先遍历(BFS): 邻接表的打印输出: 完整代码: 测试数据: 结果运行: 通过给出的图的顶点和…

归并排序 merge Sort + 图解 + 递归 / 非递归

归并排序(merge sort)的主要思想是:将若干个有序序列逐步归并,最终归并为一个有序序列二路归并排序(2-way merge sort)是归并排序中最简单的排序方法 (1)二路归并排序的递归实现 // 二路归并排序的递归实现 void merge(vector&l…