Docker镜像仓库Harbor实战

一:介绍

1.Harbor正是一个用于存储Docker镜像的企业级Registry服务。
2.Registry是Dcoker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry起的容器的私有仓库中。企业可以根据自己的需求,使用Dokcerfile生成自己的镜像,并推到私有仓库中,这样可以大大提高拉取镜像的效率
在这里插入图片描述

二:Harbor核心组件解释

Harbor在架构上主要由五个组件构成:
1、Proxy:
Harbor的registry, UI, token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。

2、Registry:
负责储存Docker镜像,并处理docker push/pull 命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token 进行解密验证。

3、Core services:
这是Harbor的核心功能,主要提供以下服务:
1)UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权。
2)webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。
3)token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。
4)Database:
为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。
5)Log collector:
为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

三:Harbor和Registry的比较

Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。
1.提供分层传输机制,优化网络传输
Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2.提供WEB界面,优化用户体验
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
3.支持水平扩展集群
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
4.良好的安全机制
企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。
5.Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。

四:Harbor简单部署

服务器配置
在这里插入图片描述
注意:Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以我们需要安装Docker、Docker-compose. 由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0

【注:如果安装不上就先安装epel-release源,然后安装docker-compose!
 # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
】
1、安装harbor依赖环境
	1)安装docker
	yum -y install docker
	2)安装docker-compose
	yum -y install docker-compose
	3)依赖软件安装
	yum install -y yum-utils device-mapper-persistent-data lvm2 python-pip
2、下载离线安装包harbor-offline-installer-v1.5.3.tgz
	1)使用下载命令wget或者aria2c下载harbor
	wget 【https://github.com/goharbor/harbor/releases 找到字需要安装的版本】
	2)解压harbor到本地
	tar zxf harbor-offline-installer-vXXXX.tgz
3)配置文件【harbor默认的数据存储目录就是/data目录 (安装时会自动创建)如下图】
# cd harbor/
# vim harbor.cfg

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4)安装

【cd /barbor】
检测并创建harbor需要文件
# ./prepare
安装
# ./install.sh
停止
sudo docker-compose stop
启动
sudo docker-compose start

UI界面登录

http://linux.com admin/Harbor12345 【配置好hosts】
在这里插入图片描述
在这里插入图片描述

命令行登录

Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是我们搭建私有镜像默认使用的是HTTP服务,所以需要修改下配置 不然会报
【Error response from daemon: Get https://linux.com/v1/users/: dial tcp XXX.XXX.XXX.XXX:443: connect: connection refused

方法1:

# vi /usr/lib/systemd/system/docker.service

在这里插入图片描述
方法2:

# cd /etc/docker/
# vi daemon.json
{
 "insecure-registries" : ["linux.com"]
}

重新启动docker

# systemctl daemon-reload
# systemctl restart docker
# docker login linux.com

在这里插入图片描述

给镜像打标签
# docker tag photon:1.0 linux.com/test/photon:1.0
上传镜像
# docker push linux.com/test/photon:1.0
删除镜像
# docker rmi linux.com/test/photon:1.0

在这里插入图片描述

参考资料
https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

发布了51 篇原创文章 · 获赞 2 · 访问量 6374

猜你喜欢

转载自blog.csdn.net/wenwang3000/article/details/102966610