harbor仓库的搭建

news2025/2/10 22:09:21

harbor仓库的搭建

  • 前言
  • 一、准备
  • 二、registry私有仓库
      • 拉取registry镜像
      • 上传镜像
      • 下载镜像
      • 添加私有仓库解析
      • 配置使用非加密端口
      • 拉取镜像
  • 三、仓库加密
      • 域名保持一致
      • 部署客户端证书,不然会报错
      • 验证
      • 仓库认证
      • 删除registry,重建
      • 登录仓库,不然无法上传下载
      • 验证
  • 四、harbor企业级私有仓库
      • 拷贝证书
      • 部署docker-compose
      • 部署harbor
      • 上传镜像,首先需要执行docker login
      • 客户端配置默认私有仓库
      • 匿名拉取镜像
      • 创建私有仓库


前言

Harbor是一个开源的容器镜像仓库,它提供了一个安全、可靠的平台来存储和分发Docker镜像。与Docker Hub不同的是,Harbor允许用户将私有镜像存储在本地环境中,并且能够对镜像进行访问控制和审计等管理操作,可以帮助组织更好地管理和保护他们的镜像资源,也更适合在企业内部使用。
Harbor支持各种云平台和容器管理平台,如Docker、Kubernetes、Mesos等,同时还支持LDAP、AD等多种认证方式。它还具备高可用性、数据备份、镜像复制等特性,可以满足复杂的部署需求。


一、准备

官方仓库:https://hub.docker.com

配置镜像加速器
[root@k8s1 ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

[root@k8s1 ~]# systemctl restart docker

[root@k8s1 ~]# docker info

二、registry私有仓库

拉取registry镜像

[root@k8s1 ~]# docker pull registry
运行registry仓库
[root@k8s1 docker]# docker run -d -p 5000:5000 --restart=always --name registry registry

上传镜像

[root@k8s1 ~]# docker tag nginx:latest localhost:5000/nginx:latest
[root@k8s1 ~]# docker push localhost:5000/nginx

[root@k8s1 ~]# curl  localhost:5000/v2/_catalog
{"repositories":["nginx"]}

下载镜像

[root@k8s1 ~]# docker pull localhost:5000/nginx

insecure registry

添加私有仓库解析

[root@k8s2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.171  k8s1 reg.westos.org
192.168.56.172  k8s2

配置使用非加密端口

[root@k8s2 ~]# vim /etc/docker/daemon.json
{
  "insecure-registries" : ["reg.westos.org:5000"]
}

[root@k8s2 docker]# systemctl  restart docker

拉取镜像

[root@k8s2 docker]# docker pull reg.westos.org:5000/nginx

三、仓库加密

升级软件包

[root@k8s1 ~]# yum install -y openssl11-1.1.1k-2.el7.x86_64.rpm openssl11-libs-1.1.1k-2.el7.x86_64.rpm

[root@k8s1 ~]# mkdir certs
[root@k8s1 ~]# openssl11 req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -addext "subjectAltName = DNS:reg.westos.org" -x509 -days 365 -out certs/westos.org.crt

域名保持一致

[root@k8s1 ~]# docker run -d -p 443:443 --restart=always --name registry -v /opt/registry:/var/lib/registry -v /root/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key registry

部署客户端证书,不然会报错

[root@k8s1 ~]# docker tag nginx:latest reg.westos.org/nginx:latest
[root@k8s1 ~]# docker push reg.westos.org/nginx:latest                                                                                             The push refers to repository [reg.westos.org/nginx]
Get "https://reg.westos.org/v2/": x509: certificate signed by unknown authority

[root@k8s1 ~]# mkdir -p /etc/docker/certs.d/reg.westos.org/
[root@k8s1 ~]# cp /root/certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt

验证

[root@k8s1 ~]# docker push reg.westos.org/nginx:latest

[root@k8s1 reg.westos.org]# curl -k https://reg.westos.org/v2/_catalog
{"repositories":["nginx"]}

仓库认证

[root@k8s1 ~]# yum install -y httpd-tools
[root@k8s1 ~]# mkdir auth
[root@k8s1 ~]# htpasswd -Bc auth/htpasswd admin
New password:
Re-type new password:
Adding password for user admin

[root@k8s1 ~]# htpasswd -B auth/htpasswd wxh
New password:
Re-type new password:
Adding password for user wxh

[root@k8s1 ~]# cat auth/htpasswd
admin:$2y$05$Wm2LHttPY5a6i2KMG0fShe92d/PjnaBbGitiClcE3wqHmwO8dIDFm
wxh:$2y$05$9rE9CXyZ1fdcMammhh7f6.soDHgKdSsi0DXBgkRW5sKRw5sEJo1lK

删除registry,重建

[root@k8s1 ~]# docker rm -f registry
[root@k8s1 ~]# docker run -d -p 443:443 --restart=always --name registry -v /opt/registry:/var/lib/registry -v /root/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key -v /root/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry

登录仓库,不然无法上传下载

[root@k8s1 ~]# docker login reg.westos.org
Username: admin
Password:
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@k8s1 ~]# cat .docker/config.json
{
        "auths": {
                "reg.westos.org": {
                        "auth": "YWRtaW46d2VzdG9z"
                }
        }
}

验证

[root@k8s1 ~]# docker tag busybox:latest reg.westos.org/busybox:latest
[root@k8s1 ~]# docker push reg.westos.org/busybox:latest

[root@k8s1 ~]# curl -k https://reg.westos.org/v2/_catalog  -u admin:westos
{"repositories":["busybox","nginx"]}

登出
[root@k8s1 ~]# docker logout reg.westos.org

四、harbor企业级私有仓库

删除之前部署的registry,不然会冲突

[root@k8s1 ~]# docker rm -f registry

[root@k8s1 ~]# tar zxf harbor-offline-installer-v2.5.0.tgz
[root@k8s1 ~]# cd harbor/
[root@k8s1 harbor]# cp harbor.yml.tmpl harbor.yml
[root@k8s1 harbor]# vim harbor.yml
hostname: reg.westos.org

http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /data/certs/westos.org.crt
  private_key: /data/certs/westos.org.key

harbor_admin_password: westos

拷贝证书

[root@k8s1 ~ ]# mkdir /data
[root@k8s1 ~ ]# cp -r certs /data

部署docker-compose

[root@k8s1 ~]# mv docker-compose-linux-x86_64-v2.5.0 /usr/local/bin/docker-compose
[root@k8s1 ~]# chmod +x /usr/local/bin/docker-compose

部署harbor

[root@k8s1 harbor]# ./install.sh --with-chartmuseum

使用浏览器登录仓库 用户名:admin 密码是上面配置文件设置的westos

上传镜像,首先需要执行docker login

[root@k8s1 ~]# docker push reg.westos.org/library/nginx:latest
[root@k8s1 ~]# docker push reg.westos.org/library/busybox:latest

客户端配置默认私有仓库

[root@k8s2 ~]# vim /etc/docker/daemon.json
{
        "registry-mirrors": ["https://reg.westos.org"]
}

[root@k8s2 ~]# systemctl  restart docker

匿名拉取镜像

[root@k8s2 ~]# docker pull nginx

创建私有仓库

在这里插入图片描述

私有仓库上传和下载镜像都需要用户认证

[root@k8s2 ~]# docker login reg.westos.org

从私有仓库下载时需要指定仓库地址

[root@k8s2 ~]# docker pull reg.westos.org/westos/game2048:latest

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

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

相关文章

[论文阅读笔记76]GPT Understands, Too(P-tuning)

1. 基本信息 题目论文作者与单位来源年份GPT Understands, Too清华大学 Citations, References 论文链接:https://arxiv.org/pdf/2103.10385.pdf 论文代码: 2. 要点 研究主题问题背景核心方法流程亮点数据集结论论文类型关键字微调大模型采用传统微…

css空间转换

目录 1. 3D移动 translate3d 1.1 三维坐标系 1.2 3D移动 translate3d 1.3 透视 perspective 1.4 translateZ 2. 3D旋转 rotate3d 2.1 左手法则-判断元素旋转方向的取值正负 3. 3D呈现 transform-style【***】 4. 3D缩放 transform:scale3d 1. 3D移动 translate3d …

nacos运行报错-jar: file does not existCan‘t retrieve image ID from build stream

一、问题 Deploying nacos Dockerfile: ruoyi-visual/ruoyi-nacos/Dockerfile… Building image… Preparing build context archive… [>]211/211 files DoneSending build context to Docker daemon… [>] 6.099MB DoneStep 1/8 : FROM openjdk:11---> 5505a9a39df…

chatgpt赋能python:用Python创建股票池

用Python创建股票池 介绍 如果你是一位投资者,你一定知道股票池是什么。它是一个包含一组股票的集合,使投资者能够跟踪和管理他们的投资组合。这些股票可以根据各种因素分类,例如行业,市值,收入增长等。 Python是一…

Oracle的学习心得和知识总结(二十六)|Oracle数据库Real Application Testing测试指南(数据库回放)

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《Oracle Database SQL Language Reference》 2、参考书籍:《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

学习HCIP的day.13

目录 IPV6 一、特征-升级点 二、IPV6地址 三、IPV6地址分类 1、单播地址 2、多播地址 四、协议 五、思科配置 1、接口配置IPV6的单播地址 2、IPV6的ACL 3、IPV6的单播路由协议 4、IPV4和IPV6共存 六、华为IPV6配置 1、静态 2、OSPF 3、BGP 4、IPV4和IPV6共存…

我的内网渗透-提权大法

拿到shell之后乱码解决 chcp 65001 #将编码设置为UTF-8的编码 出现这个提示就是切换成功,后面也是可以正常显示的 提权 方法一: 新版本的kali直接getsystem,可以提权成功(有时候可以,有时候不可以) mete…

chatgpt赋能python:Python循环3次的方法

Python循环3次的方法 循环是编程中经常用到的一个基本操作,可以让相同的代码运行多次。在Python中,循环也是极其重要的,其中最常用的是for和while循环。在本文中,我们将介绍如何使用Python循环3次。 使用for循环 使用for循环是…

电气器件系列三十八:耐压测试仪2

某型号官方资料: 系列耐压测试仪是测量耐压强度的仪器,可以直观、准确、快速地测试各种被测对象的击穿电压、漏电流等电气安全性能指标,并可以作为高压源用来测试元器件和整机性能。 本系列测试仪符合如下标准:家用电器类标准(IE…

响应式网页

解决方案&#xff1a; 媒体查询 max-width 最大宽度 <768 (从大到小) min-width 最小宽度 >768 (从小到大) media(条件){html{background-color: green;} } 需求&#xff1a; 默认网页前景色是灰色屏幕亮度大于等于768px&#xff0c;网页背景色是粉色屏幕亮度大于…

谈谈GPT-4文本代码降本减料引起的质量下降

先是少数用户提出质疑&#xff0c;随后大量网友表示自己也注意到了&#xff0c;还贴出不少证据。 有人反馈&#xff0c;把GPT-4的3小时25条对话额度一口气用完了&#xff0c;都没解决自己的代码问题。 无奈切换到GPT-3.5&#xff0c;反倒解决了。 总结下大家的反馈&#xff0c…

gitlab+jenkins+harbor实现CI/CD(2)——初级

文章目录 一、docker git安装二、jenkins使用步骤创建项目在jenkins主机获取密钥 三、实时触发构建四、整合harbor仓库 一、docker git安装 git安装 yum install -y gitjenkins主机上安装docker-ce [rootvm6 yum.repos.d]# yum install -y docker-ce [rootvm6 ~]# systemctl…

01-抒写代码之诗:Golang 关键字的文学探索

&#x1f4c3;个人主页&#xff1a;个人主页 &#x1f525;系列专栏&#xff1a;Golang基础 &#x1f4ac;Go&#xff08;又称Golang&#xff09;是由Google开发的开源编程语言。它结合了静态类型的安全性和动态语言的灵活性&#xff0c;拥有高效的并发编程能力和简洁的语法。G…

chatgpt赋能python:Python如何开三次方根

Python如何开三次方根 Python是一种强大的编程语言&#xff0c;它被广泛用于数据科学、机器学习、Web开发和自动化等领域。在这篇文章中&#xff0c;我们将介绍如何用Python开三次方根。 什么是三次方根&#xff1f; 三次方根是一个数学术语&#xff0c;表示一个数的立方根。…

《统计学习方法》——条件随机场(上)

引言 这是统计学习方法第十一章条件随机场的阅读笔记&#xff0c;包含所有公式的详细推导。 条件随机场(conditional random field,CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型&#xff0c;其特点是假设输出随机变量构成马尔可夫随机场。 建议先阅…

chatgpt赋能python:Python和SEO:如何通过Python编程获得更好的结果?

Python和SEO&#xff1a;如何通过Python编程获得更好的结果&#xff1f; Python已经成为SEO行业和数字营销领域中的热门工具。Python编程语言可以提高SEO结果&#xff0c;加快啮合速度并获得更好的结果。在本篇文章中&#xff0c;我们将介绍Python编程语言在SEO中的应用&#…

docker容器的介绍

目录 一、docker介绍和安装 官方网站&#xff1a;Docker: Accelerated, Containerized Application Development 下载docker引擎地址&#xff1a;Install Docker Engine | Docker Documentation 安装步骤 1、卸载原来安装过的docker软件&#xff0c;如果没有安装则可以不用…

Spring注解使用

文章目录 前言存储Bean对象① 配置扫描路径 -② 使用注解存储Bean对象Controller(控制器存储) 这里讲一下Spring的调用流程 及 注解的含义getBean里面的命名规则使用⽅法注解&#xff1a;Bean 获取Bean对象1. 属性注⼊属性注入的优缺点 2. 构造⽅法注⼊ (官方推荐)构造方法注入…

【c++】static和const修饰类的成员变量或成员函数

目录 1、静态成员变量 2、静态成员函数 3、常函数 4、常对象 当我们使用c的关键字static修饰类中的成员变量和成员函数的时候&#xff0c;此时的成员变量和成员函数被称为静态成员。 静态成员包含&#xff1a; 静态成员变量静态成员函数 1、静态成员变量 静态成员变量有…

window系统:python3 + auto-py-to-exe 打包playwright为exe,内含独立浏览器

auto-py-to-exe的使用参考一下链接&#xff1a; 链接: python—auto-py-to-exe—.py文件打包成.exe文件最全最详细&#xff08;用不同的类别做教程&#xff09; 1、使用auto-py-to-exe打包playwright成exe&#xff0c;运行之后运行一直报错&#xff1a;FileNotFoundError: [Wi…