文章目录

  • 一、Harbor 简介
  • 1. 什么是Harbor?
  • 2.Harbor 有哪些特性
  • 3 Harbor 构成组件
  • 二、Harbor 部署
  • 1.部署 Docker-compose 服务
  • 2.部署 Harbor 服务
  • 4.查看 Harbor 启动镜像
  • 5.创建一个新项目进行测试
  • 6.使用Docker命令在本地通过127.0.0.1来登录和推送镜像。默认情况下,Registry服务器在80端口上侦听
  • 7.在其他客户端上传镜像
  • 三、维护管理Harbir
  • 1.通过Harbor Web创建项目
  • 2.创建Harbor 用户


一、Harbor 简介

1. 什么是Harbor?

Harbor 是VMware 公司开源的企业级Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的Docker Registry 服务。

Harbor以Docker 公司开源的Registry 为基础,提供了图形管理UI、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP
集成、以及审计日志(Auditlogging)等企业用户需求的功能,同时还原生支持中文。

Harbor 的每个组件都是以Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署Harbor 的docker -compose模板位于harbor/docker- compose.yml

2.Harbor 有哪些特性

特性

概述

基于角色控制

用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。(如给用户设置可读或者可写)

基于镜像的复制策略

镜像可以在多个Harbor实例之间进行复制(同步)。

支持LDAP/AD

Harbor 可以集成企业内部已有的AD/LDAP (类似数据库的一张表),用于对已经存在的用户认证和管理。

镜像删除和垃圾回收

镜像可以被删除,也可以回收镜像占用的空间。

图形化用户界面

用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。

审计管理

所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

支持RESTful API

RESTful API提供给管理员对于Harbor 更多的操控,使得与其它管理软件集成变得更容易。

Harbor和docker registry的关系

Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

3 Harbor 构成组件

Harbor在架构上主要有Proxy、 Registry、 Core services、 Database ( Harbor-db)、Log collector ( Harbor-log)、Job services六个组件。

harbor仓库不用443端口 harbor部署_docker

Harbor 的每个组件都是以 Docker 容器的形式构建的,因此,使用 Docker Compose 来对它进行部署。
总共分为7个容器运行,通过在 docker- compose.yml 所在目录中执行 docker-compose ps命令来查看, 名称分别为:nginx、 harbor-jobservice、 harbor-ui、 harbor-db、 harbor-adminserver、registry、 harbor-log。
其中 harbor-adminserver 主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui 所要操作的所有数据都通过 harbor-adminserver 这样一个数据配置管理中心来完成。

二、Harbor 部署

环境准备工作

服务器类型

系统和IP地址

需要安装的组件

Harbor服务器

CentOS7.4(64 位) 192.168.80.200

docker-ce、docker-compose、harbor-offline-v1.2.2

client服务器

CentOS7.4(64 位) 192.168.80.10

docker-ce

所有服务器关闭防火墙和SElinux

1.部署 Docker-compose 服务

1下载或上传docker-compose 和 Harbor,这边直接上传之前下载好的

harbor仓库不用443端口 harbor部署_服务器_02


2 赋予权限,移动后查看版本

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

harbor仓库不用443端口 harbor部署_harbor仓库不用443端口_03

2.部署 Harbor 服务

1 解压缩Harbor安装程序

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

harbor仓库不用443端口 harbor部署_docker_04


2 修改harbor安装的配置文件

vim /usr/local/harbor/harbor.cfg
###第五行###
hostname = 192.168.80.10

###第59行 默认的用户名/密码为:admin/horbor12345###
harbor_admin_password = Harbor12345

```![在这里插入图片描述](https://img-blog.csdnimg.cn/b7f41889fb9a4e92b7ea89c082c9a958.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NTYwOTgzNw==,size_16,color_FFFFFF,t_70)

![在这里插入图片描述](https://img-blog.csdnimg.cn/7e71fed1d7e54096b59a345999c1e1fd.png)
### 3.启动harbor

```csharp
cd /usr/local/harbor/
./install.sh

harbor仓库不用443端口 harbor部署_harbor仓库不用443端口_05


harbor仓库不用443端口 harbor部署_服务器_06

4.查看 Harbor 启动镜像

harbor仓库不用443端口 harbor部署_docker_07

5.创建一个新项目进行测试

1.访问Harbor仓库首页,输入默认的账号密码

harbor仓库不用443端口 harbor部署_Docker_08

2.登录到系统中

harbor仓库不用443端口 harbor部署_服务器_09


3尝试创建新项目

harbor仓库不用443端口 harbor部署_Docker_10

harbor仓库不用443端口 harbor部署_docker_11

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

1登录Harbor

harbor仓库不用443端口 harbor部署_docker_12


2.下载一个tomcat镜像用于测试

harbor仓库不用443端口 harbor部署_Docker_13


3.修改tomcat镜像的标签后推送到Harbor仓库中

harbor仓库不用443端口 harbor部署_服务器_14


harbor仓库不用443端口 harbor部署_harbor仓库不用443端口_15


在浏览器中的Harbor中查看我们推送的tomcat镜像

harbor仓库不用443端口 harbor部署_harbor仓库不用443端口_16

7.在其他客户端上传镜像

以上操作都是在Harbor 服务器本地操作。如果其他客户端登录到Harbor, 就会报如下错误。出现这问题的原因为Docker Registry交互默认使用的是HTTPS但是搭建私有镜像默认使用的是HTTP 服务

所以与私有镜像交互时出现以下错误

harbor仓库不用443端口 harbor部署_Docker_17


解决方法:

1.在Docker客户端修改配置

//解决办法是: 在Docker server 启动的时候, 增加启动参数, 默认使用HTTP访问。

[root@we ~] # vim /usr/lib/systemd/system/docker.service 

  1 [Unit]
  2 Description=Docker Application Container Engine
  3 Documentation=https://docs.docker.com
  4 After=network-online.target firewalld.service containerd.service
  5 Wants=network-online.target
  6 Requires=docker.socket containerd.service
  7 
  8 [Service]
  9 Type=notify
 10 # the default is not to use systemd for cgroups because the delegate issues still
 11 # exists and systemd currently does not support the cgroup feature set required
 12 # for containers run by docker
 13 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.80.200 --containerd=/run/containerd/containerd.sock

harbor仓库不用443端口 harbor部署_docker_18


8.重载Docker后重新登录Harbor

[root@we ~] # systemctl daemon-reload 
[root@we ~] # systemctl restart docker
[root@we ~] # docker login http://192.168.80.200
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

harbor仓库不用443端口 harbor部署_harbor仓库不用443端口_19


9.下载Harbor仓库中的tomcat镜像

harbor仓库不用443端口 harbor部署_docker_20


harbor仓库不用443端口 harbor部署_docker_21


10.从公网下载nginx镜像,上传到我们的Harbor仓库中

harbor仓库不用443端口 harbor部署_Docker_22


11.在浏览器中的Harbor仓库中查看

harbor仓库不用443端口 harbor部署_Docker_23


也可以查看相关日志

harbor仓库不用443端口 harbor部署_harbor仓库不用443端口_24

三、维护管理Harbir

1.通过Harbor Web创建项目

在Harbor仓库中,任何镜像在被push到regsitry之前都必须有一个自己所属的项目。
单击“+项目”,填写项目名称,项目级别若设置为"私有",则不勾选。如果设置为公共仓库,则所有人对此项目下的镜像拥有读权限,命令行中不需要执行"Docker login"即可下载镜像,镜像操作与Docker Hub一致。

2.创建Harbor 用户

harbor仓库不用443端口 harbor部署_Docker_25


harbor仓库不用443端口 harbor部署_docker_26