文章目录
- 一、前言
- 二、企业级容器镜像仓库HarBor的介绍
- 三、HarBor 特性
- 四、HarBor 组件介绍
- 五、HarBor 与 Registry的区别
- 六、HarBor的安装与配置
- 1、安装环境要求
- 2、安装HarBor
- 2.1、安装Docker 和 Docker Compose
- 2.2、下载HarBor离线安装包
- 2.2、将HarBor安装包上传到服务器
- 2.3、解压HarBor安装包
- 2.4、编辑HarBor配置文件
- 2.5、初始化配置文件并安装
- 2.6、访问HarBor
- 2.7、登录HarBor
- 2.8、配置邮箱服务
- 3、修改daemon.json配置文件
- 4、重启docker服务
- 七、HarBor仓库镜像的上传、拉取与删除
一、前言
在上一篇文章中已经介绍了Docker私有仓库的搭建与配置, 下面正式进入到Docker企业级容器镜像仓库HarBor的搭建与配置的讲解。
二、企业级容器镜像仓库HarBor的介绍
Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装。作为一个企业级私有docker镜像仓库,HarBor提供了更好的性能和安全,以提升用户使用仓库构建和运行环境传输镜像的效率,同时HarBor支持安装在多个仓库节点的镜像资源复制,镜像全部保存在私有仓库中, 确保数据和知识产权在公司内部网络中管控。此外,HarBor也提供了友好的Web UI界面和高级的安全特性,例如:用户和角色的管理、访问控制和活动审计等。
三、HarBor 特性
-
基于角色的访问控制
:用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project) 里有不同的权限 -
镜像复制
:镜像可以在多个Registry实例中复制 (同步)。尤其适合于负载均衡,高可用,混合云和多云的场景 -
图形化用户界面
:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间 -
AD/LDAP 支持
:Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理 -
审计管理
:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理 -
国际化
:已拥有英文、中文、德文、日文和俄文的本地化版本,之后将会有更多的语言被添加进来 -
RESTful API
:RESTful API 提供给管理员对于Harbor更多的操控,使得与其它管理软件集成变得更容易 -
部署简单
:提供在线和离线两种安装工具,也可以安装到vSphere平台(OVA方式) 虚拟设备
四、HarBor 组件介绍
-
Proxy(代理服务器)
:Harbor组件,例如Register,UI和令牌服务都在代理服务后端,代理将来自客户端和浏览器的流量返回给后端各个服务 -
Register(仓库)
:负责存储Docker Images和处理docker pull/push命令。HarBor会强制对访问images进行控制,register会将客户端引导到令牌服务,以获取每次push和pull请求的有效令牌 -
Core services(核心服务)
:Harbor核心功能,主要提供以下服务-
UI(图形用户界面)
:提供图形化界面,帮助用户管理registry上的镜像(image),并对用户进行授权 -
Token(令牌)
:负责根据用户的项目角色为每个Docker push/pull命令签发令牌。如果从Docker客户端发送的请求中没有令牌,注册中心会将请求重定向到Token令牌服务 -
Webhook
:Webhook是在注册表中配置的一种机制,可以及时获取Registry仓库上image状态的变化情况。同时,HarBor使用Webhook来更新日志、启动复制以及其他一些功能
-
-
Database(数据库)
:为Core services(核心服务) 提供数据库服务,负责储存用户权限、审计日志和Docker image分组信息等数据 -
Job services(Job服务)
:提供Images镜像远程复制功能,可以将本地images同步到其他HarBor实例 -
Log collector(日志采集器)
:帮助监控Harbor运行,负责收集其他组件的日志
五、HarBor 与 Registry的区别
Harbor 和 Registry都是Docker的镜像仓库,但相比较于Regisrty来说,HarBor具有很多的优点,其优点如下所示:
-
提供分层传输机制,优化网络传输
:Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象 -
提供WEB界面,优化用户体验
:只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像 -
支持水平扩展集群
:当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解 -
良好的安全机制
:企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。同时HarBor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制,kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制
六、HarBor的安装与配置
官方安装文档:https://github.com/goharbor/harbor/blob/release-1.7.0/docs/installation_guide.md
1、安装环境要求
1.1、硬件要求
资源 | 容量 | 描述 |
---|---|---|
cpu | 最少2 cpu | 4 cpu最佳 |
内存 | 最少4 GB | 8 GB最佳 |
磁盘 | 最少40 GB | 160 GB最佳 |
1.2、软件要求
软件 | 版本要求 | 描述 |
---|---|---|
Python | 2.7或更高版本 | 请注意,您可能必须在默认未安装Python解释器的Linux发行版(Gentoo,Arch)上安装Python |
Docker engine | 1.10或更高版本 | 有关安装说明,请参阅:docker简介与安装 |
Docker Compose | 1.6.0或更高版本 | 有关安装说明,请参阅:docker compose简介与安装 |
Openssl | 最好是最新的 | 生成HarBor证书和密钥 |
1.3、网络端口
端口 | 协议 | 描述 |
---|---|---|
443 | HTTPS | Harbor门户和核心API将在此端口上接受https协议的请求 |
4443 | HTTPS | 与Harbor的Docker Content Trust服务的连接,仅在启用Notary时才需要 |
80 | HTTP | Harbor门户和核心API将在此端口上接受HTTP协议的请求 |
2、安装HarBor
2.1、安装Docker 和 Docker Compose
Docker安装:https://blog.csdn.net/qq_39135287/article/details/101012149#CentOS7Docker_CE__59
Docker Compose安装:https://blog.csdn.net/qq_39135287/article/details/104060264#pythonpip_4
推荐使用python-pip方式安装Docker Compose,因为在安装过程中,会顺便将HarBor需要的Python 和 Openssl给安装上
2.2、下载HarBor离线安装包
HarBor的下载地址:https://github.com/goharbor/harbor/releases
HarBor安装分为在线安装和离线安装 (这里我选择下载离线安装包),其区别如下:
-
Online installer(在线安装)
:The installer downloads Harbor’s images from Docker hub. For this reason, the installer is very small in size. (安装程序从Docker hub下载Harbor的图像。因此,安装程序非常小。) -
Offline installer(离线安装)
:Use this installer when the host does not have an Internet connection. The installer contains pre-built images so its size is larger. (当主机没有互联网连接时使用此安装程序。安装程序包含预构建的映像,因此其大小较大。)
2.2、将HarBor安装包上传到服务器
下载完成之后,打开WinSCP,把我们下载好的HarBor安装包,上传到Linux的 /usr/local/software 文件目录下 (注意:这里的software文件目录需要我们自行创建,创建software目录是方便我们管理安装的软件)
2.3、解压HarBor安装包
//1、进入到software目录下
cd /usr/local/software/
//2、解压HarBor安装包
tar xzf harbor-offline-installer-v1.9.4.tgz
2.4、编辑HarBor配置文件
//1、进入到harbor解压目录下
cd harbor/
//2、查看当前目录下的文件
ls
//3、编辑harbor.yml配置文件
vim harbor.yml
(1)、修改hostname属性 (提示
:不要使用 localhost 或者 127.0.0.1,因为HarBor需要被外部客户端访问)
hostname: reg.mydomain.com
修改为
hostname: Linux服务器ip地址 或者 Linux服务器的域名
(2)、修改http端口,默认为80端口,为了避免与Nginx端口冲突,所以这里我修改为6278端口 (端口号的修改可以任意,只要不与其他端口号冲突即可)
http:
port: 80
修改为
http:
port: 6278
(3)、修改管理员(admin) 登录HarBor UI界面的密码,默认为账号为admin,密码为Harbor12345
harbor_admin_password: Harbor12345
修改为
harbor_admin_password: 123456
2.5、初始化配置文件并安装
//1、初始化配置文件
./prepare
//2、安装HarBor
./install.sh
//3、查看镜像运行状态
docke-compose ps
//常用命令
docker-compose up -d //后台启动HarBor
docker-compose start //启动HarBor
docker-compose restart //重启HarBor
docker-compose stop //停止HarBor
docker-compose down //停止HarBor并删除容器
2.6、访问HarBor
打开浏览器,访问HarBor,HarBor的访问地址为你在harbor.yml配置文件中设置的hostname:http端口 (这里我的为 http://192.168.198.145:6278)
2.7、登录HarBor
用户名为:admin,密码为harbor.yml配置文件中设置的harbor_admin_password
2.8、配置邮箱服务
1、选择配置管理 → 邮箱,进入到邮箱配置页面
2、修改相关配置 (以QQ邮箱为例),QQ授权码获取方式
邮件服务器: 由 smtp.mydomain.com 修改为 smtp.qq.com
邮件服务器端口: 默认为25,也可以修改为465
用户名: 你的qq邮箱
密码: 你的qq邮箱授权码
邮件来源: qq昵称<你的qq邮箱>
3、测试邮件服务器是否配置成功,点击"测试邮件服务器"按钮,如果出现"邮件服务器连通正常"提示,则表示邮箱配置成功
3、修改daemon.json配置文件
//1、进入到docker目录下
cd /etc/docker/
//2、编辑daemon.json配置文件
vim daemon.json
//3、添加HarBor仓库地址,该步骤用于让docker信任HarBor仓库地址,
{"insecure-registries": ["harbor.yml配置文件中设置的hostname:http端口"]}
注意
:"registry-mirrors"一行末尾有逗号,
4、重启docker服务
systemctl restart docker
七、HarBor仓库镜像的上传、拉取与删除
1、本地镜像上传到HarBor仓库
1.1、创建项目
HarBor仓库中默认会有一个"library"的项目,所有镜像都必须存放到项目下,这里我们自己新建一个"tomcat"项目,用于存放tomcat镜像
输入项目名称, 设置项目的访问级别,项目级别分为两种:公开和私有
-
公开
:表示拉取镜像时,不需要使用"docker login"命令登录到HarBor,即可拉取镜像,但是上传镜像时,需要使用"docker login"命令,才能上传镜像 -
私有
:表示拉取 和 上传镜像时,都需要使用"docker login"命令登录到HarBor,即可拉取 或 上传镜像
存储数量 和 存储容量可以根据自己情况来设置 (这里我选择默认配置),最后点击"确定"按钮,创建项目
1.2、上传镜像至HarBor仓库
//1、标记此镜像为HarBor仓库的镜像
docker tag 镜像ID/镜像名称[:版本号] harbor.yml配置文件中设置的hostname:http端口/项目名称/镜像名称[:版本号]
//2、登录HarBor仓库
docker login harbor.yml配置文件中设置的hostname:http端口
username: admin
Password: harbor.yml配置文件中设置的harbor_admin_password
//3、上传标记的镜像
docker push harbor.yml配置文件中设置的hostname:http端口/项目名称/镜像名称[:版本号]
以tomcat:8为例,测试镜像上传到HarBor仓库
查看镜像是否上传成功,可以看到tomcat项目的镜像仓库数 由0 变成 1
点击tomcat项目,可以查看该项目下的所有镜像
点击tomcat/tomcat镜像,可以查看该镜像的具体信息
2、拉取HarBor仓库的镜像到本地
//1、如果项目的访问级别为私有,则需要先登录到HarBor仓库 (访问级别为公开则可以跳过该步骤)
//私有项目如果不登录,则会报denied: requested access to the resource is denied 错误
docker login harbor.yml配置文件中设置的hostname:http端口
username: admin
Password: harbor.yml配置文件中设置的harbor_admin_password
//2、拉取镜像到本地
docker pull harbor.yml配置文件中设置的hostname:http端口/项目名称/镜像名称[:版本号]
3、HarBor仓库镜像的删除
勾选需要删除的镜像,点击"删除"按钮,在"删除镜像仓库确认"弹出框中,再次点击"删除"按钮,即可删除该镜像
如果有遇到不懂或者有问题时,可以扫描下方二维码,欢迎进群交流与分享,希望能够跟大家交流学习!