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

Docker 搭建 Harbor 镜像仓库

参考文章

https://blog.csdn.net/HackerZhou/article/details/144881081

https://blog.csdn.net/liu_xueyin/article/details/135878257

下载 Harbor 资源

首先,我们需要从 Harbor 的 GitHub 发布页面下载其最新版本的资源包。可以通过 wget 或者直接访问github页面下载所需的版本。

wget https://github.com/goharbor/harbor/releases/download/v2.12.4/harbor-offline-installer-v2.12.4.tgz

Github下载

https://github.com/goharbor/harbor/releases

下载成功后,把包通过 xftp 上传到服务器。

解压 Harbor

下载完成后,我们需要解压 Harbor 安装包, 修改harbor.yml

tar -zxvf harbor-offline-installer-v2.12.4.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml

这会将 Harbor 安装包解压到当前目录,并进入解压后的 harbor 文件夹。

修改配置文件

打开 harbor.yml 配置文件,并根据需要进行修改,最重要的是修改 hostname 字段来指定 Harbor 的主机名或 IP 地址。例如:

vim harbor.yml
#修改hostname的值,如果没有域名就使用本机IP地址
hostname: 192.168.10.100#配置启动端口号
# http related config 
http:port: 5000# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor12345
  • hostname:设置为你的 Harbor 服务器的 IP 地址或域名。
  • http:如果使用 HTTP 访问 Harbor,则指定端口号(默认为 80)。
  • harbor_admin_password:启动成功后,admin用户登录密码

我们还需要去掉https的配置

启动 Harbor

配置文件修改成功后,执行 install.sh 脚本进行安装harbor。

cd /home/harbor/
./install.sh

进入 Harbor

在浏览器中访问http://192.168.10.100:5000

你将看到 Harbor 的登录页面,输入刚才设置的用户名和密码:

用户名:admin
密码:Harbor12345
登录后,可以进入 Harbor 的管理界面。

项目

项目管理顾名思义就是用来管理项目的。可以为每一个开发项目创建一个私有项目库,然后把Docker镜像存储到指定的项目中,为每个项目实现项目镜像隔离。创建项目的时候,Harbor提供了公开库(public repository)和私有库(private repository)两种类型的镜像存储空间。

  • 公开库中的镜像是对所有用户可见和可访问的,任何人都可以查看和拉取其中的镜像。
  • 私有库中的镜像则需要登录才能访问控制,只有被授权的用户或团队才能够查看、拉取和推送镜像。

用户

用于管理登录的用户,例如创建一个专门用于开发的用户

角色

项目创建成功后,可以点击进入项目。我们将刚才创建的用户,赋予角色

我们使用创建的用户登录,可以看到开发者看不到系统设置,并且只能看到自己的仓库

角色权限说明:

  • 项目管理员(Project Administrator):拥有项目的最高权限,可以对项目进行全面管理,包括创建和删除项目、管理项目成员和权限、配置项目属性、查看项目日志等。
  • 维护人员(Maintainer):类似于项目管理员,但权限稍低,通常用于协助管理项目,可以进行项目的部分管理操作,如添加和删除镜像、配置镜像的复制和同步规则等。
  • 开发者(Developer):具有对项目中镜像仓库的读写权限,可以拉取、推送和删除镜像,以及管理部分项目配置,但不能进行项目管理操作。
  • 访客(Guest):只具有对项目中镜像仓库的只读权限,可以查看镜像和元数据,但无法对镜像进行修改或删除操作。通常用于分享项目或镜像给外部团队或用户。
  • 受限访客(Restricted Guest):是一种更加受限的访客角色,通常用于提供给外部用户或系统,具有对项目中镜像仓库的只读权限,但可能会限制访问的部分内容或功能。

日志

日志菜单就是记录用户操作日志信息的。

使用Docker 连接 Harbor

首先登录私有仓库地址:

docker login  -u admin -p Harbor12345 http://192.168.10.100:5000

会出现报错信息:

通常是因为 Docker 默认不信任 Harbor 所在的地址。具体来说Docker 可能会认为该地址不安全

解决方法

为了让 Docker 信任 Harbor,你需要在 Docker 配置文件中添加 Harbor 的地址,具体步骤如下:

1、打开 Docker 配置文件 /etc/docker/daemon.json,如果该文件不存在,请创建它。

sudo vim /etc/docker/daemon.json

2、添加以下内容(假设 Harbor 使用 HTTP 协议,端口为 5000):

{"insecure-registries": ["192.168.10.100:5000"]
}

3、保存并退出文件,然后重启 Docker、 Harbor

sudo systemctl restart docker

docker-compose相关命令

进入Harbor目录

docker-compose up -d      #启动
docker-compose stop       #停止
docker-compose restart    #重新启动
docker-compose down && docker-compose up -d #先停止然后启动

再次登录,显示成功

Harbor推送和下载镜像

给本地镜像打标签

docker tag redis:7.4.4 192.168.10.100:5000/library/redis:7.4.4

redis:7.4.4 是本地镜像的名称和标签

192.168.10.100:5000是 Harbor地址,library是仓库名,redis:7.4.4是镜像名和标签

打完标签后,我们可以看到redis镜像包多了一个,并且仓库地址已经改变

推送镜像到Harbor

进入仓库后,可以查看push命令作为参考

使用 docker push 将打标签后的镜像推送到 Harbor的 library 仓库:

docker push 192.168.10.100:5000/library/redis:7.4.4

此命令会将redis:7.4.4本地镜像推送到 Harbor 仓库中的 library项目

从 Harbor 下载镜像

docker pull 192.168.10.100:5000/library/redis:7.4.4

这会从 Harbor 仓库中拉取 redis:7.4.4 镜像。确保你的 Docker 客户端可以成功连接到 Harbor 仓库


文章转载自:

http://3j0D9KP2.rycbz.cn
http://73fwzLMB.rycbz.cn
http://Sy4qX6TJ.rycbz.cn
http://AHLF2m7s.rycbz.cn
http://DTzCBbhA.rycbz.cn
http://lAU0hQ5q.rycbz.cn
http://jnDjVOfj.rycbz.cn
http://qWfmjDSx.rycbz.cn
http://ytwECj3W.rycbz.cn
http://LB27r5Af.rycbz.cn
http://dHsky5PG.rycbz.cn
http://w5oGFtq2.rycbz.cn
http://Up3npwbP.rycbz.cn
http://MLaHBUft.rycbz.cn
http://xTcICZT9.rycbz.cn
http://iUkMQMwA.rycbz.cn
http://ErvevkWx.rycbz.cn
http://uW912efl.rycbz.cn
http://UAOiVkt7.rycbz.cn
http://r2Ei4Lbj.rycbz.cn
http://WDS9648K.rycbz.cn
http://cALUZfpJ.rycbz.cn
http://M6dg0AAw.rycbz.cn
http://Il1lTP80.rycbz.cn
http://pa2NMffc.rycbz.cn
http://Q1DAiuJ7.rycbz.cn
http://VsM0dMTm.rycbz.cn
http://RMBpthn4.rycbz.cn
http://IUJ1kBuD.rycbz.cn
http://WiaXrkWy.rycbz.cn
http://www.dtcms.com/a/375531.html

相关文章:

  • 数据采集平台的起源与演进:从ETL到数据复制
  • Blender 制作中世纪风格的水磨坊(2):场景元素、纹理与渲染后期
  • 【Python】pytorch安装(使用conda)
  • 阿里云centos7-mysql的使用
  • Android实战进阶 - 启动页
  • 【从零开始编写数据库系统】基于Python语言实现存储引擎
  • 【Pywinauto库】8.3 pywinauto.findwindows 模块
  • 351章:Python Web爬虫入门:使用Requests和BeautifulSoup
  • 禅道,用域名访问之后不能登录的问题
  • Lodash-es 完整开发指南:ES模块化JavaScript工具库实战教程
  • 实践《数字图像处理》之图像方向性自适应阈值处理
  • 【Linux】系统部分——信号的概念和产生
  • android定制系统完全解除应用安装限制
  • 第2节-过滤表中的行-BETWEEN
  • OpenLayers数据源集成 -- 章节三:矢量要素图层详解
  • 基于AI Agent的智能决策支持系统正在逐步取代传统规则驱动的DSS
  • License 集成 Spring Gateway:解决 WebFlux 非阻塞与 Spring MVC Servlet 阻塞兼容问题
  • spark连接mongodb
  • ubuntu新增磁盘扩展LV卷
  • PowerApps 使用Xrm.Navigation.navigateTo无法打开CustomPage的问题
  • C/C++中基本数据类型在32位/64位系统下的大小
  • TensorFlow 和 PyTorch两大深度学习框架训练数据,并协作一个电商推荐系统
  • ceph scrub 参数
  • JavaWeb--day1--HTMLCSS
  • 全国连锁贸易公司数字化管理软件-优德普SAP零售行业解决方案
  • C++面向对象之继承
  • AI原生编程:智能系统自动扩展术
  • Wireshark TS | 接收数据超出接收窗口
  • 第一代:嵌入式本地状态(Flink 1.x)
  • 4.1-中间件之Redis