文章目录
- 一、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 的每个组件都是以 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,这边直接上传之前下载好的
2 赋予权限,移动后查看版本
chmod +x docker-compose
mv docker-compose /usr/local/bin/
docker-compose -v
2.部署 Harbor 服务
1 解压缩Harbor安装程序
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
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
4.查看 Harbor 启动镜像
5.创建一个新项目进行测试
1.访问Harbor仓库首页,输入默认的账号密码
2.登录到系统中
3尝试创建新项目
6.使用Docker命令在本地通过127.0.0.1来登录和推送镜像。默认情况下,Registry服务器在80端口上侦听
1登录Harbor
2.下载一个tomcat镜像用于测试
3.修改tomcat镜像的标签后推送到Harbor仓库中
在浏览器中的Harbor中查看我们推送的tomcat镜像
7.在其他客户端上传镜像
以上操作都是在Harbor 服务器本地操作。如果其他客户端登录到Harbor, 就会报如下错误。出现这问题的原因为Docker Registry交互默认使用的是HTTPS但是搭建私有镜像默认使用的是HTTP 服务
所以与私有镜像交互时出现以下错误
解决方法:
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
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
9.下载Harbor仓库中的tomcat镜像
10.从公网下载nginx镜像,上传到我们的Harbor仓库中
11.在浏览器中的Harbor仓库中查看
也可以查看相关日志
三、维护管理Harbir
1.通过Harbor Web创建项目
在Harbor仓库中,任何镜像在被push到regsitry之前都必须有一个自己所属的项目。
单击“+项目”,填写项目名称,项目级别若设置为"私有",则不勾选。如果设置为公共仓库,则所有人对此项目下的镜像拥有读权限,命令行中不需要执行"Docker login"即可下载镜像,镜像操作与Docker Hub一致。
2.创建Harbor 用户