Docker仓库之Harbor企业级镜像仓库的搭建与使用

news/2024/11/14 1:08:01/文章来源:https://www.cnblogs.com/xyh9039/p/18523973

本章将和大家分享Docker仓库之Harbor企业级镜像仓库的搭建与使用。废话不多说,下面我们直接进入主题。

一、企业最爱:Harbor企业级镜像仓库

Harbor是VMware公司开源的一个企业级Docker Registry项目,项目地址:https://github.com/goharbor/harbor

Harbor是一个开源的企业级Docker Registry服务,它提供了一个安全、可信赖的仓库来存储和管理Docker镜像。

虽然Harbor和Registry都是私有镜像仓库的选择,但是Harbor的企业级特性更强,因此也是更多企业级用户的选择。

Harbor实现了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制,也常常和K8S中的namespace结合使用。此外,Harbor还提供了图形化的管理界面,我们可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。

二、一些准备工作

1、安装docker

如果还没有安装docker,那么请先安装docker,已安装则跳过。

[root@localhost ~]# docker -v
Docker version 26.1.4, build 5650f9b

之前的博文我们已经讲解过Docker的安装,此处已经安装过就不再安装了。

2、安装docker-compose

此处我采用的是离线安装方式。

首先下载 docker-compose 到本地,下载地址:https://github.com/docker/compose/

下载链接:https://github.com/docker/compose/releases/download/v2.30.1/docker-compose-linux-x86_64

如果直接点击下载比较慢的话,建议复制链接地址到迅雷下载,这样可能会快一些。下载完成后,把它上传到 Linux 服务器,如下所示:

接着把可执行文件移到 Linux 系统命令目录(/usr/local/bin/)下,并重命名为 “docker-compose” :

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

授权:

chmod +x /usr/local/bin/docker-compose

验证是否安装成功:

docker-compose --version

如果能正常显示出正确的版本号,说明安装成功了。

如果需要卸载,直接删除即可:

sudo rm /usr/local/bin/docker-compose

三、Harbor安装与配置

1、下载 Harbor 离线安装包

通过 GitHub下载离线安装包,下载地址:https://github.com/goharbor/harbor

下载链接:https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz

如果直接点击下载比较慢的话,建议复制链接地址到迅雷下载,这样可能会快一些。

2、把安装包上传到 Linux 服务器

下载完成后,把离线安装包上传到 Linux 服务器,如下所示:

3、将安装包解压出来

tar -zxvf harbor-offline-installer-v2.11.1.tgz

4、修改 harbor.yml 配置文件

进入解压后的文件夹,复制 harbor.yml.tmpl 文件,并重命名为 harbor.yml ,如下所示:

# 拷贝并重命名
cp harbor.yml.tmpl harbor.yml# 修改配置文件
vim harbor.yml

修改配置文件,需要设置hostname、端口、admin用户的初始登录密码等,标红色的表示修改的部分:

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
# 修改主机名,如果没有域名就使用本机IP地址
hostname: 192.168.4.250# 配置启动端口号,默认是80端口,此处我把它改成 5001
# http related config
http:# port for http, default is 80. If https enabled, this port will redirect to https portport: 5001# 如果没有申请证书,需要把 https 这块相关的全部给它注释掉
# https related config
# https:# https port for harbor, default is 443
#  port: 443# The path of cert and key files for nginx
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path# 启动成功后,admin用户的初始登录密码
harbor_admin_password: admin123456

5、修改 docker 守护进程配置文件

vim /etc/docker/daemon.json

加上下面这一句,让 Docker 认为该地址是安全的,这里的 “your-server-ip” 请替换为你的服务器外网IP地址,“port” 替换为你的端口:

{"insecure-registries": ["your-server-ip:port"]
}

“insecure-registries”:不安全的注册表,用来配置 Docker 可以通过 HTTP 而非 HTTPS 连接的不安全镜像仓库地址,即:配置可信任地址。如果配置为0.0.0.0/0,则表示信任所有地址的所有私有仓库。

示例:

保存成功后,重新加载配置并重启Docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

6、启动安装 Harbor

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

./install.sh

提示安装成功,接下来就可以访问 Harbor 了。通过 IP+端口 访问:http://192.168.4.250:5001

访问成功,由于 Harbor 是通过 Docker 管理的,所以启动非常方便。如果首页访问成功说明 Docker 私有仓库已经部署成功了。

四、Harbor Web页面操作说明

默认用户名是admin,密码是启动时设置的密码:admin123456

登录成功进入主页面,从系统首页可以看到系统分为三个菜单:项目、日志、系统管理。 

1、项目

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

通过详情信息可以看到:公开库中的镜像是对所有用户可见和可访问的,任何人都可以查看和拉取其中的镜像。而私有库中的镜像则需要登录才能访问控制,只有被授权的用户或团队才能够查看、拉取和推送镜像。 可以根据需要创建相关的项目。

项目创建成功后,可以点击进入项目。在里面可以为每个项目单独设置不同的配置信息。可以为每一个项目添加成员信息。

角色权限说明:

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

在右上角显示推送命令,可以通过提示命令进行 docker 镜像推送。 

2、日志

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

3、系统管理

系统管理主要用来管理 Harbor 用户人员信息、镜像仓库的各种配置、权限和系统设置。

五、Docker命令使用私有仓库

1、登录

登录私有仓库:

docker login  -u admin -p admin123456 http://192.168.4.250:5001

通过输出可以发现登录成功了。认证信息存储在 ~/.docker/config.json 文件中,只要登录信息存在,登录会一直生效不需要每次推送拉取之前都登录。 

注意:如果未修改 docker 守护进程配置文件,那么登录时可能会报以下错误。

[root@localhost ~]# docker login  -u admin -p admin123456 http://192.168.4.250:5001
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.4.250:5001/v2/": http: server gave HTTP response to HTTPS client

这是由于,docker认为这个地址是不安全的,所以需要在docker守护进程配置文件中把该地址配置为可信任地址。

vim /etc/docker/daemon.json

加上下面这一句,让 Docker 认为该地址是安全的,这里的 “your-server-ip” 请替换为你的服务器外网IP地址,“port” 替换为你的端口:

{"insecure-registries": ["your-server-ip:port"]
}

“insecure-registries”:不安全的注册表,用来配置 Docker 可以通过 HTTP 而非 HTTPS 连接的不安全镜像仓库地址,即:配置可信任地址。如果配置为0.0.0.0/0,则表示信任所有地址的所有私有仓库。

示例:

保存成功后,重新加载配置并重启Docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

配置成功后,再次尝试登录,这时候应该就可以登录成功了。

2、推送镜像

在项目中标记镜像:

docker tag SOURCE_IMAGE[:TAG] 192.168.4.250:5001/blog_project/REPOSITORY[:TAG]

示例:

docker tag nginx:latest 192.168.4.250:5001/blog_project/nginx:v1

推送镜像到指定项目:

docker push 192.168.4.250:5001/blog_project/REPOSITORY[:TAG]

示例:

docker push 192.168.4.250:5001/blog_project/nginx:v1

查看 Harbor 仓库,推送成功。

3、拉取镜像

通过另一台服务器,使用 docker pull 从私有仓库拉取镜像:

docker pull 192.168.4.250:5001/blog_project/nginx:v1

拉取成功,查看下载数,发现已经更新了:

4、退出登录

docker logout 192.168.4.250:5001

六、其他补充

首先我们需要先进入解压后的 harbor 文件夹:

cd ./Software/
cd ./harbor/

接着可以通过 docker-compose ps 命令查看启动起来的 docker 实例:

docker-compose ps

可以看到,整个 harbor 容器实例群包括了管理服务、数据库服务、Job服务、日志服务以及 portal 网页入口(默认是80端口)服务等。 

如果想要继续更改 Harbor 配置,那么改完后需要重新初始化 Harbor:

# docker-compose down -v 命令用于停止并移除使用 docker-compose.yml 文件定义的所有容器、网络、卷(如果指定了 -v 选项)以及默认的网络桥接。
# 使用这个命令时请谨慎,因为它会永久删除卷及其数据,除非你有备份或其他方式来恢复这些数据。
# 当你需要清理或重新部署你的 Docker 环境时,这个命令非常有用。
docker-compose down -v# 生成配置文件,根据 harbor.cfg 配置生成 docker-compose 文件。
./prepare# 后台启动 Harbor 实例群
# docker-compose up -d 用于根据 docker-compose.yml 文件中的定义来创建并启动容器,同时容器会在后台运行。
# 如果你之前还没有创建过这些服务(容器),docker-compose up 会先创建它们,然后再启动。
# 如果你已经运行了这些服务,docker-compose up 会重新创建它们(这会停止并删除旧的服务,然后创建并启动新的服务),除非你使用了 --no-recreate 选项来避免重新创建。
docker-compose up -d

想要暂停和重启 Harbor:

# 暂停 Harbor
# docker-compose stop 命令用于停止通过 docker-compose.yml 文件定义并启动的所有容器。这个命令不会移除容器、网络或卷,它只是停止了容器的运行。
docker-compose stop# 启动 Harbor
# docker-compose start 命令用于启动之前已经创建但已停止的容器。
docker-compose start

不用 Harbor 了,那么可以彻底删除 Harbor 的数据和镜像文件:

# 彻底地删除 Harbor 的数据和镜像
rm -r /data/database
rm -r /data/registry

 

本文部分内容参考博文:https://www.cnblogs.com/sowler/p/18242819

至此本文就全部介绍完了,如果觉得对您有所启发请记得点个赞哦!!!

 

Demo中的软件安装包:

链接:https://pan.baidu.com/s/1vJouBntYhV4IwUUQM3iqTg 
提取码:tf92

此文由博主精心撰写转载请保留此原文链接:https://www.cnblogs.com/xyh9039/p/18523973

版权声明:如有雷同纯属巧合,如有侵权请及时联系本人修改,谢谢!!!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试:什么是死锁,如何避免或解决死锁;MySQL中的死锁现象,MySQL死锁如何解决

面试:什么是死锁,死锁产生的四个必要条件,如何避免或解决死锁;数据库锁,锁分类,控制事务;MySQL中的死锁现象,MySQL死锁如何解决文章目录 前言 一、死锁1.1 什么是死锁 1.2 死锁产生的四个必要条件 1.3 模拟产生死锁的代码 1.4 死锁的产生原因二、如何避免或解决死锁2.1…

23. 使用MySQL之使用存储过程

1. 存储过程 迄今为止,使用的大多数SQL语句都是针对一个或多个表的单条语句。并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成。 例如,考虑以下的情形。为了处理订单,需要核对以保证库存中有相应的物品。如果库存有物品,这些物品需要预定以便不将它们…

【java开发】 Java 打包方式总结

前言 由于笔者之前也一直在使用 IDEA, Maven 等成熟工具|框架的打包方式, 也没有仔细研究过这个 JAR 包打包之中的细节, 网上公开的视频也没有找到, 但文章倒挺多的, 那周六日就简单看一下吧, 将这些打包方式都整理整理. 本篇文章彻底理解 Maven & IDEA & 原生的打包方…

分享一套基于thinkphp开发的小说内容管理系统源码,附安装教程,100%开源。

小说内容管理系统系统介绍小说内容管理系统是一套用于快速构建小说发布与阅读的小说内容管理平台。使用小说内容管理系统可以快速搭建一个完整的小说阅读网站,节省开发时间和成本。 小说内容管理系统是一套基于ThinkPHP6 + MySql + Layui + BUI 开发的小说行业内容管理系统。 …

【数据库】Cassandra的安装及基本操作

Cassandra 数据库安装 官方文档 安装环境Ubuntu 22.04.5LTS Cassandra 4.0.14 JDK 11操作步骤下载安装包curl -OL https://dlcdn.apache.org/cassandra/4.0.14/apache-cassandra-4.0.14-bin.tar.gz解压操作解压tar -zxvf ./apache-cassandra-4.0.14-bin.tar.gz运行数据库,该步…

【数据库】GeoMesa的安装及基本操作

GeoMesa-Cassandra 安装 官方文档_安装 GeoMesa Cassandra 安装环境Ubuntu 22.04.5 LTS Cassandra 3.11.16 JDK 11 geomesa-cassandra_2.12-5.1.0操作步骤下载 bin文件 wget https://github.com/locationtech/geomesa/releases/download/geomesa-5.1.0/geomesa-cassandra_2.12-…

【数据库】GeoServer的安装及基本操作

GeoServer 安装 参考: WSL-Ubuntu22.04 安装Geoserver流程 方式一:采用Tomcat的方式安装GeoServer 下载curl -OL https://sourceforge.net/projects/geoserver/files/GeoServer/2.26.0/geoserver-2.26.0-war.ziphttp://localhost:8080/http://localhost:8080/geoserver/方式二…

【java开发】 java web的Filter(过滤器),Interceptor(拦截器) 和 Aspect(切面)

“ 在Java Web开发中,始终离不开Filter,Interceptor,Aspect三个部分,本文将对此进行介绍。” Filter 是servlet层面的,由Servlet容器(如Tomcat)支持,只能在web程序中使用,实现了javax.servlet.Filter接口 Interceptor 是Spring Web层面的(Structs也有), 它是由Spring容器…

Tesla Model Y refresh All In One

Tesla Model Y refresh All In One Tesla Model Y Juniper / Tesla Model Y 焕新版Tesla Model Y refresh All In OneTesla Model Y Juniper / Tesla Model Y 焕新版demoshttps://www.youtube.com/watch?v=WWou0YzxJ7Yhttps://topelectricsuv.com/news/tesla/2024-tesla-model…

【开源系列】Loki 与 Promtail 实现轻量级日志管理系统

1、简介 Grafana Loki 是一个用于日志聚合和分析的开源工具,专为云原生环境设计,与 Grafana 无缝集成,能够高效地收集、存储和查询日志。以下是如何使用 Grafana Loki 收集日志的详细步骤。 2、环境准备 确保你已经安装了以下组件: Docker(用于容器化部署)Grafana(用于可…

【学习软件】【疯狂地理Beta1.0.0】

【前言】 近期,使用Unity开发了一款有关中国地理知识的App,目前仅支持Android,用于自己学习。知识要活学活用才行。【软件截图】 【下载地址】 https://rere.lanzoue.com/iiblf2eochmh密码:5jvy【敬畏能量 敬畏自然】

Groove Intermediate pg walkthrough

80端口web站点 dirsearch 没发现啥有用信息 感觉就是让我们突破登录框进后台的 https://github.com/ChurchCRM/CRM/issues/137 上网查到默认密码 登录后台跟具cms查exp发现有个SQL注入 payload找半天找到一个 可以直接sql注入 http://192.168.167.44/EventAttendance.php?Act…