Docker镜像仓库Harbor搭建及配置
一、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
在指定版本的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搭建及配置的更多相关文章
- docker实战——Docker本地私有镜像仓库Harbor搭建及配置
Harbor介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署我们私有环境内的Registr ...
- Docker(二):Docker镜像仓库Harbor搭建
安装docker-compose 因为docker-compose下载容易失败, 所以选择从github下载方式安装. [root@harbor ~]# mv docker-compose-Linux ...
- Docker镜像仓库Harbor搭建
园子里面已经有人写过了.也写得很好,我这里只记录下我遇到的问题 Harbor 依赖: 1:docker 2:docker-compose 怎么安装就不说了. 然后是安装Harbor github:ht ...
- Docker镜像仓库Harbor之Swagger REST API整合配置
转载自:https://cloud.tencent.com/developer/article/1010618 1.Swagger 介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和 ...
- docker 镜像仓库 Harbor 部署 以及 跨数据复制
docker 镜像仓库 Harbor 部署 跨数据复制 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理 ...
- 企业级镜像仓库harbor搭建
企业级镜像仓库harbor搭建 一. Harbor概述 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服 ...
- 离线手动部署docker镜像仓库——harbor仓库(HTTPS)
实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...
- Docker镜像仓库的搭建--> Harbor篇
简介 Harbor是VMware公司开源的一个企业级Docker Registry项目,项目地址:https://github.com/goharbor/harbor Harbor作为一个企业级私有R ...
- 你必须知道的Docker镜像仓库的搭建
近期工作中发现用到的容器镜像越来越多(不多的时候没考虑过镜像仓库的问题),同一个容器镜像也存在多个版本,那么镜像仓库的搭建需求就涌现出来,本文就目前的几个常用镜像仓库的搭建进行介绍,我们可以根据需要选 ...
随机推荐
- Hadoop学习笔记2 - 第一和第二个Map Reduce程序
转载请标注原链接http://www.cnblogs.com/xczyd/p/8608906.html 在Hdfs学习笔记1 - 使用Java API访问远程hdfs集群中,我们已经可以完成了访问hd ...
- 重写外部图片URL,变成自己的URL
1.获取原图链接 上传一张图片文件到淘图,得到以下链接: https://img.alicdn.com/imgextra/i4/358272220/TB2hCqxmB8lpuFjSspaXXXJKp ...
- linux文本编辑器vim大全
linux基础之vim编辑器 1.vim编辑器 基本介绍 vim编辑器的前身叫做vi.vi的英文名:Visual Interface.中文解释文本编辑器,你不应该用他去打开二进制可执行文件 文本编辑 ...
- 20164322 韩玉婷-----Exp6 信息搜索与漏洞扫描
1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具 ...
- java-多线程(上)
###24.01_多线程(多线程的引入)(了解) * 1.什么是线程 * 线程是程序执行的一条路径, 一个进程中可以包含多条线程 * 多线程并发执行可以提高程序的效率, 可以同时完成多 ...
- OO第二单元作业分析
前言 这一单元关于线程安全的作业结束了,在助教提供的接口的帮助以及老师提供的设计模型的指导下,这三次作业还是相对轻松地完成了,中间也没有出现什么bug,可能就是因为简单的逻辑不容易出错吧,可惜两次都由 ...
- Linux安装中文字体_宋体
E&T: CentOS_7.4 64位; mswfonts.tar.xz; Xftp5; Xshell5; 最近在完成合同电子签署时,合同的中文参数在服务器出现中文乱码问题, 编码一致且正确, ...
- centos 终端字体错位个别字母中间有间隔的解决
问题描述: linux系统:centos 终端:图形界面终端,通过startx启动 现象:通过终端输入的字体有重叠,字母之间的间隔也很大.由于字体安装不正确导致. 解决方法:通过下面字体的安装命令可以 ...
- 关于地形altas的处理
前几天在群里跟人讨论地形atlas的问题,因为Blade也是用的4x4的atlas(16张纹理),但是大概是几年前做的,所以一些细节忘记了,在这里做下备忘. 1.atlas就是图集,图册,把多个纹理打 ...
- 《python for data analysis》第八章,绘图与可视化
<利用python进行数据分析>一书的第8章,关于matplotlib库的使用,各小节的代码. # -*- coding:utf-8 -*-import numpy as npimport ...