一、harbor简介

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
特征:
 云本机注册表:Harbour 支持容器映像和Helm图表,可用作云本机环境(如容器运行时和业务流程平台)的注册表。
基于角色的访问控制:用户和存储库通过“项目”进行组织,用户可以对项目下的图像拥有不同的权限。
基于策略的映像复制:可以基于具有多个过滤器(存储库,标记和标签)的策略在多个注册表实例之间复制(同步)映像。如果遇到任何错误,Harbor将自动重试进行复制。非常适合负载平衡,高可用性,多数据中心,混合和多云场景。
漏洞扫描:Harbor定期扫描图像并警告用户漏洞。
LDAP / AD支持:Harbor与现有企业LDAP / AD集成以进行用户身份验证和管理,并支持将LDAP组导入Harbor并为其分配适当的项目角色。
图像删除和垃圾收集:可以删除图像,并可以回收它们的空间。
公证:可以确保图像的真实性。
图形用户门户:用户可以轻松浏览,搜索存储库和管理项目。
审计:跟踪存储库的所有操作。
RESTful API:适用于大多数管理操作的RESTful API,易于与外部系统集成。
易于部署:提供在线和离线安装程序。 

官方文档:https://goharbor.io/docs/

github用户手册:https://github.com/goharbor/harbor/blob/master/docs/user_guide.md

二、当前安装Harbor主机环境及安装要求

主机环境:
OS: CentOS Linux release 7.3. (Core)
mem: 2GB
python:2.7.
Base&EPEL:aliyun
硬件要求
资源 容量 描述
CPU 最小2 CPU 4 CPU是首选
内存 最小4GB 8GB是首选
磁盘 最小40GB 160GB是首选
软件要求
软件 描述
Python 2.7或更高版本 请注意,您可能必须在Linux发行版(Gentoo,Arch)上安装Python,默认情况下不安装Python解释器
Docker引擎 版本1.10或更高版本 有关安装说明,请参阅:https//docs.docker.com/engine/installation/
Docker Compose 版本1.6.0或更高版本 有关安装说明,请参阅:https//docs.docker.com/compose/install/
OpenSSL 建议最新的 为Harbor生成证书和密钥
网络端口要求
端口 协议 描述
443 HTTPS Harbor门户和核心API将接受此端口上的https协议请求
4443 HTTPS 只有在连接到Dock的Docker Content Trust服务启用认证时才需要
80 HTTP Harbor端口和核心API将接受此端口上的http协议请求

根据版本的不同,可能环境要求各不相同,具体可以参官方文档:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

三、安装Harbor

1.安装docker
[root@localhost ~]#  wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -P /etc/yum.repos.d/
[root@localhost ~]# yum clean all && yum makecache fast
[root@localhost ~]# yum install docker-ce -y
[root@localhost ~]#systemctl enable docker && systemctl restart docker
2.安装Docker-compose

Docker-compose有两种安装方式,分别为下载源码和pip安装

下载源码安装(可以指定版本):

、下载指定版本的docker-compose
  [root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
、对二进制文件赋可执行权限
  [root@localhost ~]# chmod +x /usr/local/bin/docker-compose
、测试下docker-compose是否安装成功
  [root@localhost ~]#docker-compose --version

pip安装:

[root@localhost ~]# yum install python-pip -y
[root@localhost ~]# pip install --upgrade pip
[root@localhost ~]# pip install docker-compose #默认最新版本,可以使用 docker-compose==version指定安装版本
[root@localhost ~]# docker-compose -version
docker-compose version 1.23., build 1110ad0
3.安装Harbor
harbor有两个版本,分别为offline(离线)和online(在线),离线的安装包比较大,后续安装会相对快一点,在线的安装包比较下,但是后续安装会比较慢,这里我们选择离线安装

在指定版本的Download Binary处现在对应的安装包,复制链接

[root@localhost ~]# wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.0.tgz #如果无法科*学*上*网,可以从我的网盘中下载(链接: https://pan.baidu.com/s/1RnULNRY6ExulTI8hzejZQw 提取码: b81p)
[root@localhost ~]# tar xf harbor-offline-installer-v1.7.0.tgz
[root@localhost ~]# cd harbor
4.配置Harbor

解压缩之后,目录下回生成harbor.conf文件,该文件就是Harbor的配置文件。

 ## Configuration file of Harbor

 # hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
hostname = 172.33.16.1 #需要根据实际情况手动修改 # 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http # mysql数据库root用户默认密码root123,实际使用时修改下
db_password = root123 max_job_workers =
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA # 邮件设置,发送重置密码邮件时使用
email_identity =
email_server = smtp.mydomain.com
email_server_port =
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false # 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = Harbor12345 # 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
auth_mode = db_auth # LDAP认证时配置项
#ldap_url = ldaps://ldap.mydomain.com
#ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
#ldap_search_pwd = password
#ldap_basedn = ou=people,dc=mydomain,dc=com
#ldap_filter = (objectClass=person)
#ldap_uid = uid
#ldap_scope =
#ldap_timeout = # 是否开启自注册
self_registration = on # Token有效时间,默认30分钟
token_expiration = # 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = everyone verify_remote_cert = on
5.启动harbor

修改完配置文件后,在的当前目录执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务

[root@localhost harbor]# ./install.sh
......
[Step ]: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating registry ... done
Creating registryctl ... done
Creating harbor-adminserver ... done
Creating harbor-db ... done
Creating redis ... done
Creating harbor-core ... done
Creating harbor-portal ... done
Creating harbor-jobservice ... done
Creating nginx ... done ✔ ----Harbor has been installed and started successfully.---- Now you should be able to visit the admin portal at http://172.33.16.1.
For more details, please visit https://github.com/goharbor/harbor .

#后续可以使用docker-compose [start|stop] 命令在docker-compose.yml文件所在目录下来关闭和启动harbor

访问harbor,地址为我们设置的hostname,端口默认为80

点击登录

默认安装后会自动创建一个名称为library的项目,且访问级别为公开(表示任何人可读,即任何人都可以下载该项目中的镜像)

6.命令行登录

harbor也可以在命令行下进行登录,登录后可以将本地的镜像上传到harbor,也可以下载用户拥有权限项目下的镜像,需要注意的是上传镜像的格式(docker tag  image:tag harbor-address/project name/image:tag),例如docker tag nginx:alpine 172.33.16.1/library/nginx:latest

[root@localhost harbor]# docker login 172.33.16.1
Username: admin
Password:
Error response from daemon: Get https://172.33.16.1/v2/: dial tcp 172.33.16.1:443: connect: connection refused

第一次登录报错了,报这个错误可能有如下2个原因:

、是端口错了!
、未在docker启动文件中添加--insecure-registry信任关系!
大多数这个错误是第2个原因,因为你没有添加信任关系的话,docker默认使用的是https协议,所以端口不对(),会报连接拒绝这个错误;
或者提示你 "服务器给HTTPS端的是HTTP响应" 这个错误,因为你没添加端口信任,服务器认为这是默认的https访问,返回的却是http数据!

解决方法:

正确的添加信任关系包括端口号:
注:
记住,这是harbor镜像仓库,而不是单纯的registry容器仓库!
如果你用的是默认的80端口,则不需要加,或者加上80也行,而不是5000这个端口!
[root@localhost harbor]# tee /etc/docker/daemon.json <<-'EOF'
> {
> "insecure-registries": [
> "172.33.16.1" #harbor服务主机ip,如果不是80端口,一定要把端口同时添加进去
> ]
> }
> EOF

再次登录

[root@localhost harbor]# systemctl daemon-reload
[root@localhost harbor]# systemctl restart docker
[root@localhost harbor]# docker login 172.33.16.1
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安装完成,关于harbor的使用,由于篇幅有限,请参考harbor用户指南,链接如下:https://github.com/goharbor/harbor/blob/master/docs/user_guide.md

Docker镜像仓库Harbor搭建及配置的更多相关文章

  1. docker实战——Docker本地私有镜像仓库Harbor搭建及配置

    Harbor介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署我们私有环境内的Registr ...

  2. Docker(二):Docker镜像仓库Harbor搭建

    安装docker-compose 因为docker-compose下载容易失败, 所以选择从github下载方式安装. [root@harbor ~]# mv docker-compose-Linux ...

  3. Docker镜像仓库Harbor搭建

    园子里面已经有人写过了.也写得很好,我这里只记录下我遇到的问题 Harbor 依赖: 1:docker 2:docker-compose 怎么安装就不说了. 然后是安装Harbor github:ht ...

  4. Docker镜像仓库Harbor之Swagger REST API整合配置

    转载自:https://cloud.tencent.com/developer/article/1010618 1.Swagger 介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和 ...

  5. docker 镜像仓库 Harbor 部署 以及 跨数据复制

    docker 镜像仓库 Harbor 部署 跨数据复制 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理 ...

  6. 企业级镜像仓库harbor搭建

    企业级镜像仓库harbor搭建 一.    Harbor概述 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服 ...

  7. 离线手动部署docker镜像仓库——harbor仓库(HTTPS)

    实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...

  8. Docker镜像仓库的搭建--> Harbor篇

    简介 Harbor是VMware公司开源的一个企业级Docker Registry项目,项目地址:https://github.com/goharbor/harbor Harbor作为一个企业级私有R ...

  9. 你必须知道的Docker镜像仓库的搭建

    近期工作中发现用到的容器镜像越来越多(不多的时候没考虑过镜像仓库的问题),同一个容器镜像也存在多个版本,那么镜像仓库的搭建需求就涌现出来,本文就目前的几个常用镜像仓库的搭建进行介绍,我们可以根据需要选 ...

随机推荐

  1. echarts数据区域缩放(鼠标滚轮、滚动条、拉选框)

    当一个echarts图表上的数据很多时,想要查看部分区域的数据状态,可以通过数据区域缩放来实现,现总结三个方法: 鼠标滚轮缩放: var arr = []; for(var i = 0;i<15 ...

  2. hdu 1518 BFS

    Given a set of sticks of various lengths, is it possible to join them end-to-end to form a square? I ...

  3. vue cli3.0配制axios代理

    今天学习时,想访问网易新闻接口,结果显而易见,因为跨域被浏览器拒绝了. 去网上找一下结果一开始找到的是2.x版本的配置,生硬的放进去,给我各种报错.编译阶段就炸了.浪费好多时间 再按3.0版本去搜索才 ...

  4. html2canvas将页面内容生成图片

    html2canvas官网链接地址:https://html2canvas.hertzen.com/ <!doctype html> <html lang="en" ...

  5. 使用python编辑和读取word文档

    python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明. python-docx官方文档地址 使用python新建一个word文档,操作就像文档里介绍的那样: fr ...

  6. CS萌新的汇编学习之路(其实是老师作业呵呵哒)Learning of Assembly Language

    第一节课学习汇编语言,做笔记,做笔记 1.概念 首先是汇编语言这门课程的定义以及对于学习高级语言.深入理解计算机系统的作用 软硬件接口机器语言 汇编语言 高级语言 关系 机器语言和汇编语言可移植性差 ...

  7. 引擎设计跟踪(九.14.3.2) Deferred shading的后续实现和优化

    最近完成了deferred shading和spot light的支持, 并作了一部分优化. 之前forward shading也只支持方向光, 现在也支持了点光源和探照光. 对于forward sh ...

  8. rust debug之基于pdb

    方法一: 用visual studio 步骤: 安装msvc工具链 rustup toolchain install stable-x86_64-pc-windows-msvc 切换到该工具链 rus ...

  9. Dart 语法

    Dart 语法 说明 var 类似于JavaScript中的var:最大的不同是Dart中var变量一旦赋值,类型便会确定,则不能再改变其类型 Object Object 是dart所有对象的根基类, ...

  10. C# .NET MD5 HASH

    using System; using System.Security.Cryptography; using System.Text; namespace AAA { /// <summary ...