一、简介

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

二、Harbor特征

  • 基于角色的访问控制 :用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
  • 镜像复制 : 镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
  • 图形化用户界面 : 用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
  • AD/LDAP 支持 : Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  • 审计管理 : 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 国际化 : 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
  • RESTful API : RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
  • 部署简单 : 提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。

三、离线安装Harbor

下载离线安装包,500多M,有点儿大,在xshell下载半天都不动,复制链接到浏览器一会er就下载完了

wget  https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.4.tgz

安装epel源

docker-compose在epel仓库中

[root@n1 ~]# yum install epel-release -y

需要用到Docker Compose

[root@n1 harbor]# yum install docker-compose -y

解压

[root@n1 ~]# tar xf harbor-offline-installer-v1.7.4.tgz -C /usr/local/

修改配置文件

[root@n1 harbor]# pwd

/usr/local/harbor

[root@n1 harbor]# vim harbor.cfg

hostname = n1.realxw.com  #设置主机名
harbor_admin_password = Harbor12345  #设置harbor管理员登录密码
db_password = root123  #设置数据库登录密码

开始安装

[root@n1 harbor]# ./prepare

[root@n1 harbor]# ./install.sh

✔ ----Harbor has been installed and started successfully.----

查看相关端口是否开启

图片.png

安装成功!

四、测试

默认用户登录

用户名:admin,密码:Harbor

创建普通用户及项目

浏览器输入IP地址

http://192.168.231.60

图片.png

创建普通用户

图片.png

用realxw用户登录

图片.png

创建一个devel项目,项目下边可以有多个仓库

图片.png

向镜像仓库中推送镜像,需要安装提示打标签

配置

想要推镜像,需要设置非安全仓库(这里使用http协议,没有使用https)

[root@n1 ~]# vim /etc/docker/daemon.json

{

"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com","https://registry.docker-cn.com"],
"insecure-registries": ["n1.realxw.com"]   #添加
}

添加解析记录

[root@n1 ~]# vim /etc/hosts

192.168.231.60 n1.realxw.com

修改i配置文件后重启docker

[root@n1 ~]# systemctl restart docker

再次登录时会出现用户登录用户名或密码错误,是因为harbor的相关容器关闭,需要用docker-compose启动harbor

[root@n1 harbor]# pwd

/usr/local/harbor#切换到harbor目录,使docker-compose能找到docker-compose.yml

[root@n1 harbor]# docker-compose start   #停止服务,使用stop

登录Harbor

图片.png

推送镜像

拉取busybox镜像

[root@n1 ~]# docker pull busybox:latest

为busybox镜像打标签

[root@n1 ~]# docker tag busybox:latest n1.realxw.com/devel/busybox:v1

 [root@n1 ~]# docker push  n1.realxw.com/devel/busybox:v1

The push refers to repository [n1.realxw.com/devel/busybox]

adab5d09ba79: Pushed

v1: digest: sha256:4415a904b1aca178c2450fd54928ab362825e863c0ad5452fd020e92f7a6a47e size: 527

推送成功

五、配置HTTPS

这里是后续补充,不是在上边主机部署

生成自签证书

[root@zhangshibin ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650

创建数据库文件

[root@zhangshibin ~]# touch  /etc/pki/CA/index.txt

序列号文件并给明第一个证书的序列号码

[root@zhangshibin ~]# echo 01 > /etc/pki/CA/serial

生成秘钥

[root@zhangshibin test]# (umask 077; openssl genrsa -out docker.key 1024)

生成证书请求文件

[root@zhangshibin test]# openssl req -new -key docker.key -out docker.csr

CA签署证书

[root@zhangshibin test]# openssl ca -in docker.csr -out docker.crt -days 365

[root@zhangshibin ~]# mkdir -p /etc/docker/certs.d/192.168.231.30

[root@zhangshibin test]# cp docker.key /etc/docker/certs.d/192.168.231.30/

[root@zhangshibin test]# cp docker.crt /etc/docker/certs.d/192.168.231.30/

修改配置文件

[root@zhangshibin ~]# vim harbor/harbor.cfg

ui_url_protocol = https

ssl_cert = /etc/docker/certs.d/192.168.231.30/docker.crt

ssl_cert_key = /etc/docker/certs.d/192.168.231.30/docker.key

更新配置文件

[root@zhangshibin harbor]# ./prepare

[root@zhangshibin harbor]# docker-compose restart

编辑/etc/docker/daemon.json

删除"insecure-registries": ["192.168.231.30"]

重启docker

[root@zhangshibin ~]# systemctl restart docker.servic

浏览器访问

 

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> 9 天前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 9 天前
Logo

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

更多推荐