目录

一、Harbor私有仓库

1.Docker Compose

2.Harbor的优势

3.Harbo的构成

4.配置文件的所需参数和可选参数

①所需参数

②可选参数

二、Harbor搭建

1.上传Harbor包

2.配置Harbor参数文件

3.安装harbor

4.查看harbor的ui界面

5.使用命令登录hurbor

①harbor的本地操作

②harbor的非本地操作

6.harbor用户管理

①创建harbor用户

②通过创建的用户登录harbor,上传镜像

7.harbor的作用

8.docker-harbor的使用


一、Harbor私有仓库

Harbor被部署为多个Docker容器,因此可以部署在任何支持Docker的Linux发行版上。(registry为其核心组件)

Harbor有可视化的Web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制功能

Harbor与registry相比,好处是:harbor支持多种功能、图形化界面管理、多用户权限、角色管理机制、安全机制等

1.Docker Compose

Docker Compose是统一编排容器的一个技术

Docker Compose在yml配置文件/资源清单管理多个dockerfile(构建镜像),批量启动允许docker容器,还可以对多个容器批量暴露端口和volume挂载

2.Harbor的优势

①基于角色控制:有管理员与普通用户,可赋权普通用户,比如只能上传和下载,可根据项目来进行操作和管理

②基于镜像的复制策略:也与权限相关,比如有只一-些用户与组才能对此项目进行相对应的操作

③支持LDAP/AD: 域控制

比如南京去下载北京harbor,私有仓库的镜像,两端打上,局域网的地址,连接在一块,数据信息的传输通过一条隧道,会通过两层加密,第一层为隧道加密,第二层为数据加密,安全可靠

④图像删除和垃圾收集:即回收站机制

⑤图形UI:具有统计功能,比如访问量与镜像^下载热度

⑥审计:日志,这里意义不大,主要还是借助于ELK

⑦RESTful API:定义Web 语言规范的格式,方便调用Harbor 的接口,也便于二次开发

3.Harbo的构成

Proxy:通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务

Registry:(核心组件)负责储存Docker镜像,并处理docker push/pull命令

Core services:Harbor的核心功能, 包括UI、webhook、 token服务

Database:为core services提供数据库服务

Log collector:负责收集其他组件的log,供日后进行分析

这些组件都是以容器封装的方式,使用docker-compose编排管理完成的

registry是镜像仓库

4.配置文件的所需参数和可选参数

①所需参数

这些参数需要在配置文件Harbor.cfg中设置。如果用户更新它们并运行install.sh脚本重新安装 Harbor,参数将生效。

参数如下:

hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限 定的域名(FQDN)

例如192.168.226.130或hub.abc.cn。不要使用localhost或127.0.0.1为主机名。

ui_url_protocol:(http或 https,默认为 http)用于访问ui和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为https。(身份验证时会向Mysql数据库进行比对,然后授予令牌)

max_job_workers:镜像复制作业线程。

db_password:用于db_auth 的MySQL数据库root 用户的密码。

customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为 off。

ssl_cert:SSL 证书的路径,仅当协议设置为 https 时才应用。

ssl_cert_key:SSL 密钥的路径,仅当协议设置为 https 时才应用。

secretkey_path:用于在复制策略中加密或解密远程 register 密码的密钥路径

②可选参数

这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新。

如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数的更新,Harbor.cfg 将被忽略。

注意:如果选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。具体来说,必须在注册或在 Harbor 中创建任何新用户之前设置所需的auth_mode。当系统中有用户时(除了默认的 admin 用户),auth_mode 不能被修改。

Email:Harbor需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才需要。

请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS,那么应该通过设置启用SSL email_ssl = TRUE。

harbour_admin_password:管理员的初始密码,只在Harbour第一次启动时生效。之后,此设置将被忽略,并且应 UI中设置管理员的密码。

请注意,默认的用户名/密码是 admin/Harbor12345。

auth_mode:使用的认证类型,默认情况下,它是 db_auth,即凭据存储在数据库中。对于LDAP身份验证(以文件形式验证),请将其设置为 ldap_auth。

self_registration:启用/禁用用户注册功能。禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在 Harbour中创建新用户。

注意:当 auth_mode 设置为 ldap_auth 时,自注册功能将始终处于禁用状态,并且该标志被忽略。

Token_expiration:由令牌服务创建的令牌的到期时间(分钟),默认为 30 分钟。

project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下, 每个人都可以创建一个项目。如果将其值设置为“adminonly”,那么只有 admin 可以创建项目。

verify_remote_cert:打开或关闭,默认打开。此标志决定了当Harbor与远程 register 实例通信时是否验证 SSL/TLS 证书。将此属性设置为 off 将绕过 SSL/TLS 验证,这在远程实例具有自签名或不可信证书时经常使用。

二、Harbor搭建

1.上传Harbor包

解压harbor

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /opt

2.配置Harbor参数文件

vim /opt/harbor/harbor.cfg

hostname = 192.169.72.11                        #修改为本机地址

harbor_admin_password = 123456            #修改登录harbor的密码

3.安装harbor

上传docker-compose文件到/usr/local/bin下

chmod +x docker-compose              #给docker-compose执行权限

sh -x /opt/harbor/install.sh

查看镜像,可以看到harbor需要用到的镜像

也可以用docker-compose ps查看同一编排的镜像,只能在harbor工作目录下查看

4.查看harbor的ui界面

用浏览器访问http://192.168.72.11的管理页面,默认的管理员的用户名是admin密码是Harbor12345

登陆进去就可以看到

也可以直接在网页进行创建,可以为项目设置公开

5.使用命令登录hurbor

①harbor的本地操作

使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,Register 服务器在端口 80 上侦听。

可以使用docker login -u admin -p Harbor12345 http://127.0.0.1登录

下载镜像进行测试

docker pull cirros                       #

docker tag cirros:latest 127.0.0.1/test/cirros:test1

docker push 127.0.0.1/test/cirros:test1

可以看到test项目有推送上去的镜像

②harbor的非本地操作

以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报

如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜

像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

用第二台机器测试

先指向私有仓库地址

vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.72.11  --containerd=/run/containerd/containerd.sock

加上--insecure-registry 192.168.72.11 harbor私有仓库地址

重载和重启docker,再继续登录

登录成功后推送镜像

docker pull cirros

docker tag cirros:latest 192.168.72.11/test/cirros:test2

可以看到harbor仓库已有不是本地上传上去的镜像

6.harbor用户管理

①创建harbor用户

系统管理—》用户管理—》用户—》输入用户名、邮箱、全名、密码

②通过创建的用户登录harbor,上传镜像

注销登录

docker logout 192.168.72.11

docker tag cirros:latest 192.168.72.11/test/cirros:ergou

7.harbor的作用

docker harbor镜像仓库是本地私有的镜像仓库,用于保存项目/企业/平台经内部经常使用的镜像或者自定义的镜像,用于给docker或者k8s使用

docker harbor服务由多个子功能模块组成,例如:UI/Nginx/Mysql/Proxy/registry/adminserver/jobserver

docker harbor使用docker-compose的方式将以上的子功能模块以容器的形式,部署或者展现出来,并且进行统一的编排管理

docker-compose编排管理

docker-compose可以定义镜像拉取的方式:docker-hub公共仓库、dockerfile自定义构建镜像

docker-compose可以指定镜像的挂载、镜像中服务的端口暴露,可以指顶network网络,可以指定env环境变量,可以指定重启策略等等

docker-compose就是用来批量管理镜像、容器的一个技术

8.docker-harbor的使用

①解压

②上传docker-compose命令工具,给予执行权限

③执行install.sh脚本

④在docker的systemd管理服务的docker.service启动文件中添加insecure-registry 192.168.72.11(harbor仓库位置)并且重载守护进程和重启容器,让本地的docker可以识别并登录本地私有仓库(docker login)

⑤上传镜像必要操作:docker tag source_image_name :tag 192.168.72.11/project_name/image_name:TAG 在docker push 192.168.72.11/project_name/image_name:TAG

docker-UI界面操作中

①可以进行用户/角色的创建和权限管理

②认证管理:数据库/ldap

③镜像操作的日志管理

④loken令牌

harbor **高可用、**认证(CA、LDAP)、*备份

GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:2 个月前 )
9e55afbb pull image from registry.goharbor.io instead of dockerhub Update testcase to support Docker Image Can Be Pulled With Credential Change gitlab project name when user changed. Update permissions count and permission count total Change webhook_endpoint_ui Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 14 小时前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 19 小时前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐