Docker 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/ADHarbor 可以集成企业内部已有的AD/LDAP (类似数据库的一张表),用于对已经存在的用户认证和管理。
镜像删除和垃圾回收镜像可以被删除,也可以回收镜像占用的空间。
图形化用户界面用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。
审计管理所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
支持RESTful APIRESTful 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.200docker-ce、docker-compose、harbor-offline-v1.2.2
client服务器CentOS7.4(64 位) 192.168.80.10docker-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 用户

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值